Zum Inhalt

Ratings

Ein Rating (Bewertung) ist eine Methode zur Bewertung der Qualität einer Antwort auf einen Prompt. Ratings werden erstellt, indem die Antwort mit einem Kriterium verglichen wird. Das Dashboard zeigt bewertete Antworten mit detaillierten Metriken an und ermöglicht eine interaktive Analyse der Evaluierungsergebnisse. Ein typischer Rating-Eintrag sieht wie folgt aus:

Rating Entry

Hier können Sie sehen:

  • Gesamtrating, zusammengefasst aus einzelnen Kriterienbewertungen
  • Einzelratings für jedes Evaluierungskriterium
  • LLM-Konfigurationsdetails, die zur Generierung der Antwort verwendet wurden
  • Wortanzahl-Statistiken sowohl für das Template als auch für die generierte Antwort

Falls das Rating einzelner Kriterien nicht korrekt sein sollte, kann der Benutzer hier manuelle Verbesserungen vornehmen.

Rating mit generierten Kriterien und Antworten

Im Quick Start zeigen wir Ihnen, wie Sie ein einfaches Rating mehrerer Kriterien für eine Antwort durchführen können. In diesem Beispiel werden sowohl die Kriterien als auch die Antworten automatisch von Elluminate generiert.

Nützlich für:

  • Schnelle Evaluierung: Bewerten Sie Antworten ohne manuelle Kriteriendefinition
  • Qualitätsgenerierung: Generieren Sie hochwertige dynamische Kriterien basierend auf dem Prompt-Kontext
  • Framework-Entwicklung: Erkunden oder prototypisieren Sie Evaluierungsframeworks
  • KI-gestützte Bewertung: Nutzen Sie KI-generierte Kriterien für umfassende Ratings
from dotenv import load_dotenv
from elluminate import Client

load_dotenv(override=True)

client = Client()  # (1)!

prompt_template, _ = client.prompt_templates.get_or_create(
    "Explain how {{concept}} works in Scheme, providing a short but illustrative code example.",
    name="Scheme Concepts",
)  # (2)!

client.criteria.get_or_generate_many(prompt_template)  # (3)!


collection, _ = client.collections.get_or_create(
    name="Scheme Concepts",
)  # (4)!

template_variables = client.template_variables.add_to_collection(
    template_variables={"concept": "recursion"},
    collection=collection,
)  # (5)!

response = client.responses.generate(
    prompt_template,
    template_variables=template_variables,
)  # (6)!

# Generate ratings for a given `response`
ratings = client.ratings.rate(response)  # (7)!
for rating in ratings:
    print(f"Criteria: {rating.criterion.criterion_str}")
    print(f"Rating: {rating.rating}\n")
  1. Initialisiert den Elluminate-Client mit Ihren konfigurierten Umgebungsvariablen aus der Einrichtungsphase.

  2. Erstellt ein Prompt-Template unter Verwendung der Mustache-Syntax und Template-Variablen (wie concept in diesem Beispiel). Wenn das Template bereits existiert, wird es einfach zurückgegeben.

  3. Generiert automatisch Evaluierungskriterien für Ihr Prompt-Template or holt die bereits existierenden Kriterien.

  4. Erstellt eine Template-Variablen-Collection. Dies wird verwendet, um die Template-Variablen für ein Prompt-Template zu sammeln.

  5. Fügt eine Template-Variable zur Collection hinzu. Dies wird verwendet, um die Template-Variable auszufüllen (ersetzt concept durch recursion).

  6. Erstellt eine Antwort durch Verwendung Ihres Prompt-Templates und Ausfüllen der Template-Variable.

  7. Evaluiert die Antwort anhand der generierten Kriterien und gibt detaillierte Bewertungen für jedes Kriterium zurück.

Die generierten Kriterien werden dem Prompt Template zugeordnet und können einzeln in den Template Details eingesehen werden. Hier können Sie auch Einträge ändern oder löschen oder einen komplett neuen Generierungsprozess starten.

Template Details

Die generierte Antwort kann durch Klicken auf View Details in der Dashboard-Ansicht angezeigt werden. Dies öffnet die Prompt Response Detail View, die die entsprechende Antwort und den zugehörigen Prompt anzeigt.

Prompt Response Detail View

Rating benutzerdefinierter Kriterien und Antworten

Für mehr Kontrolle über den Evaluierungsprozess können Sie Kriterien und Antworten manuell festlegen. Dies ist besonders nützlich, wenn Sie:

  • Benutzerdefinierte Qualitätsstandards: Definieren und durchsetzen spezifischer Qualitätskriterien für Ihren Anwendungsfall
  • Externe Antwortbewertung: Bewerten von Antworten aus beliebigen Quellen, nicht beschränkt auf durch Elluminate generierte
  • Standardisierte Tests: Anwenden einheitlicher Bewertungskriterien zur Wahrung der Konsistenz über Testsuiten hinweg
from dotenv import load_dotenv
from elluminate import Client
from elluminate.schemas import LLMConfig

load_dotenv(override=True)

client = Client()
user_prompt = "Describe the historic first flight of the {{aircraft}}, including when and where it happened."
prompt_template, _ = client.prompt_templates.get_or_create(user_prompt, name="Aircraft First Flights")

criteria = client.criteria.add_many(
    [
        "Does it mention the specific date of the first flight?",
        "Does it mention the location of the first flight?",
        "Does it mention who piloted the aircraft?",
    ],
    prompt_template,
    delete_existing=True,
)  # (1)!

template_variables = client.template_variables.add_to_collection(
    template_variables={"aircraft": "Boeing 747"},
    collection=prompt_template.default_template_variables_collection,
)  # (2)!

response = client.responses.add(
    response="The Boeing 747 made its first flight on February 9, 1969, taking off from Paine Field in Everett, Washington. The aircraft was piloted by test pilots Brien Wygle and Jess Wallick during this historic 1 hour and 15 minute maiden flight.",
    prompt_template=prompt_template,
    template_variables=template_variables,
    metadata=LLMConfig(llm_model_name="openai/gpt-4o-mini"),
)  # (3)!

ratings = client.ratings.rate(response)
for rating in ratings:
    print(f"Criteria: {rating.criterion.criterion_str}")
    print(f"Rating: {rating.rating}\n")
  1. Hinzufügen benutzerdefinierter Kriterien zu einem gegebenen Prompt Template. Die Verwendung von delete_existing=True stellt sicher, dass alle existierenden Kriterien vor dem Hinzufügen der neuen entfernt werden. Dies gibt Ihnen volle Kontrolle darüber, welche Aspekte der Antwort bewertet werden.

  2. Jedes Prompt Template hat eine Standard-Template Variables Collection. Dies wird hier verwendet, um die Template Variables für ein Prompt Template zu sammeln.

  3. Hinzufügen einer benutzerdefinierten Antwort mit Metadaten. Die Antwort wird verknüpft mit:

    • Dem Prompt Template
    • Template Variables (um zu wissen, welcher Prompt sie generiert hat)
    • LLM-Konfigurationsmetadaten (um zu verfolgen, welches Modell und welche Einstellungen verwendet wurden)

Rating einer Reihe von Prompts

Wenn Sie mehrere Variationen von Template Variables testen möchten, können Sie eine TemplateVariablesCollection (oder einfach Collection) verwenden, um diese zu organisieren und gemeinsam zu evaluieren. Dies ist essentiell für die systematische Bewertung der Prompt-Leistung über verschiedene Eingaben hinweg.

Dieser Ansatz ist besonders leistungsfähig, wenn Sie:

  • Input-Testing: Evaluieren, wie gut Ihr Prompt mit verschiedenen Testfällen und Grenzfällen funktioniert
  • Leistungsanalyse: Trends und Muster erkennen, wie Ihr Prompt auf verschiedene Eingaben reagiert
  • Iterative Optimierung: Erkenntnisse aus Tests nutzen, um Ihr Prompt Template zu verfeinern und zu verbessern
from dotenv import load_dotenv
from elluminate import Client

load_dotenv(override=True)

client = Client()

values = [
    {"university": "MIT", "state": "Massachusetts"},
    {"university": "Stanford", "state": "California"},
]  # (1)!

collection, _ = client.collections.get_or_create(
    name="Top Universities", description="A collection of prestigious US universities"
)  # (2)!

for template_variables in values:  # (3)!
    client.template_variables.add_to_collection(
        template_variables=template_variables,
        collection=collection,
    )

prompt_template, _ = client.prompt_templates.get_or_create(
    "List the most impactful Nobel Prize winners from {{university}} in {{state}} "
    "and their breakthrough discoveries.",
    name="University Nobel Laureates",
)  # (4)!

client.criteria.generate_many(prompt_template)

responses = client.responses.generate_many(prompt_template, collection=collection)  # (5)!

for response in responses:
    ratings = client.ratings.rate(response)
    for rating in ratings:
        print(f"Criteria: {rating.criterion.criterion_str}")
        print(f"Rating: {rating.rating}\n")
  1. Definieren Sie Ihre Testfälle als Template Variables
  2. Erstellen Sie eine Collection zur Speicherung Ihrer Testfälle
  3. Fügen Sie jeden Variablensatz zur Collection hinzu
  4. Das Prompt Template muss mit Ihren Variablen kompatibel sein
  5. Generieren Sie Antworten für alle Testfälle in der Collection

Die Collections-Ansicht bietet einen organisierten Überblick über Ihre Template Variables Sets. Jede Collection wird durch ihren Namen identifiziert und enthält mehrere Einträge, wobei Zeitstempel anzeigen, wann sie hinzugefügt wurden.

Collection View

Wenn Sie zur Dashboard-Ansicht gehen, können Sie das Prompt Template auswählen und die Bewertungen für jede Antwort zu allen Prompts sehen, die aus der Collection generiert wurden. Hier können Sie einfach überprüfen, wie die Antworten entsprechend einem Eintrag in der Collection abschneiden.

Collection Dashboard