Zum Inhalt

Referenzantworten

Lernen Sie, LLM-Antworten gegen bekannte korrekte Antworten für Genauigkeitstests und Qualitätssicherung zu evaluieren

Referenzantworten bieten eine Möglichkeit, generierte Antworten automatisch gegen bekannte korrekte Antworten zu evaluieren. Dies ist besonders nützlich für:

  • Genauigkeitstests - Überprüfen, ob LLM-Antworten mit erwarteten Antworten übereinstimmen
  • Qualitätssicherung - Gewährleistung einer konstanten Leistung über verschiedene Prompts hinweg

Wichtige Schritte

  • Erstellen Sie ein Prompt-Template mit Template-Variablen. Stellen Sie sicher, dass {{reference_answer}} nicht als Template-Variable in Ihrer Prompt-Template verwendet wird, da sonst die Lösung direkt mitgegeben wird.
  • Fügen Sie Kriterien hinzu, die die Template-Variable {{reference_answer}} verwenden
  • Erstellen Sie eine Collection mit allen Template-Variablen, die im Prompt-Template verwendet werden, sowie die {{reference_answer}}. Template-Variable
  • Das war's! Sie können nun Ihre Antworten anhand der Referenzantworten bewerten.

Das folgende Beispiel zeigt, wie Sie Referenzantworten mit elluminate verwenden können:

"""v1.0 API version of example_sdk_usage_reference_answer.py

Demonstrates using reference answers in evaluation criteria.
The criterion can include template variables like {{reference_answer}} to
compare the LLM's response against a known correct answer.
"""

from dotenv import load_dotenv
from elluminate import Client
from elluminate.schemas import RatingMode

load_dotenv(override=True)

client = Client()

# v1.0: get_or_create_prompt_template - template is part of lookup
template, _ = client.get_or_create_prompt_template(
    name="Geography Expert - Capitals",
    messages="What is the capital city of the following country: {{country}}. Give only the name of the capital city in your response, nothing else.",
)

# v1.0: Create criterion set with reference answer criterion
criterion_set, _ = client.get_or_create_criterion_set(
    name="Capital City Verification",
)

# The criterion uses {{reference_answer}} from the template variables
# This allows comparing LLM output against known correct answers
criterion_set.add_criteria(
    [
        "The correct capital city is: {{reference_answer}}. Is the given answer correct?",
    ]
)

# v1.0: Link criterion set to template
criterion_set.link_template(template)

# v1.0: get_or_create_collection
collection, _ = client.get_or_create_collection(
    name="Country Capitals",
    defaults={"description": "A collection of countries and their capital cities"},
)

# Template variables include both prompt inputs AND reference answers
# The reference_answer is used by the criterion, not the prompt
values = [
    {"country": "France", "reference_answer": "Paris"},
    {"country": "Japan", "reference_answer": "Tokyo"},
    {"country": "Argentina", "reference_answer": "Buenos Aires"},
]

# v1.0: collection.add_many() - single call for all variables
collection.add_many(variables=values)

# v1.0: run_experiment() handles everything
experiment = client.run_experiment(
    name="Capital Cities Experiment",
    prompt_template=template,
    collection=collection,
    criterion_set=criterion_set,
    rating_mode=RatingMode.FAST,
)

# Display results
for response in experiment.responses():
    print(f"Prompt: {response.prompt.messages[-1]['content']}")
    print(f"Response: {response.response_str}")
    print(f"Rating: {response.ratings[0].rating}")
    print("-" * 80)
  1. Zunächst erstellen wir die Prompt-Template. Beachten Sie, dass wir hier nur die Template-Variable {{country}} verwenden.

  2. Hier fügen wir ein Kriterium zum Prompt-Template hinzu. Beachten Sie, dass das Kriterium die Template-Variable {{reference_answer}} verwendet, die mit der Referenzantwort aus den Template-Variablen gefüllt wird.

  3. Wir definieren die Template-Variablen. Jede Template-Variable enthält einen Wert für country und die reference_answer, welche die korrekte Antwort für das jeweilige Land ist.

Evaluierungskriterien

Definieren Sie Kriterien, die die Referenzantworten zur Bewertung von Antworten verwenden. Häufige Muster sind:

  • Exakter Vergleich
  • Überprüfung der semantischen Ähnlichkeit