Zum Inhalt

Referenzantworten

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 Spalten für alle Template-Variablen, die im Prompt-Template verwendet werden, sowie zusätzlich die Spalte reference_answer. Hier tragen Sie ihre Referenzantworten ein.
  • 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:

from dotenv import load_dotenv
from elluminate import Client

load_dotenv(override=True)

client = Client()

# Create a prompt template for geography questions about capitals
prompt_template, _ = client.prompt_templates.get_or_create(
    "What is the capital city of the following country: {{country}}. Give only the name of the capital city in your response, nothing else.",
    name="Geography Expert - Capitals",
)  # (1)!

# Add criterion to check if the provided answer matches the reference answer
client.criteria.add_many(
    ["The correct capital city is: {{reference_answer}}. Is the given answer correct?"],
    prompt_template,
)  # (2)!

collection, _ = client.collections.get_or_create(
    name="Country Capitals",
    description="A collection of countries and their capital cities",
)

# Create template variables with countries and their correct capital cities
template_variables = [
    {
        "country": "France",
        "reference_answer": "Paris",
    },
    {
        "country": "Japan",
        "reference_answer": "Tokyo",
    },
    {
        "country": "Argentina",
        "reference_answer": "Buenos Aires",
    },
]  # (3)!

for tmp_vars in template_variables:
    client.template_variables.add_to_collection(tmp_vars, collection)


experiment = client.experiments.create_and_run(
    name="Capital Cities Experiment",
    prompt_template=prompt_template,
    collection=collection,
)

experiment = client.experiments.get(name=experiment.name)

for response in experiment.rated_responses:
    print(f"Prompt: {response.prompt.prompt_str}")
    print(f"Response: {response.response}")
    print(f"Ratings: {response.ratings[0].rating}")
    print("-" * 100)
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