Wird geladen

Beim Prompt Engineering geht es darum, einen bereits geschriebenen Prompt zu nehmen und ihn zu verbessern, um zuverlässigere, qualitativ hochwertigere Ausgaben zu erhalten. Dieser Prozess umfasst das Schreiben eines ersten Prompts, die Bewertung seiner Leistung und die anschließende systematische Anwendung von Engineering-Techniken, um ihn Schritt für Schritt zu verbessern.

Der iterative Verbesserungsprozess

Der Ansatz folgt einem klaren Zyklus: Ziel festlegen, ersten Prompt schreiben, ihn bewerten, eine Prompt-Engineering-Technik anwenden und dann erneut bewerten, um eine bessere Leistung zu überprüfen. Dieser Zyklus wiederholt sich, während du deinen Prompt verfeinerst.

Für diese Tutorial-Serie arbeiten wir an einem praktischen Beispiel: der Erstellung eines Prompts, der eintägige Ernährungspläne für Athleten basierend auf ihrer Körpergröße, ihrem Gewicht, ihren körperlichen Zielen und Ernährungseinschränkungen generiert.

Einrichten der Evaluierungs-Pipeline

Die Evaluierung verwendet eine verbesserte Version der Pipeline aus vorherigen Modulen, die in eine PromptEvaluator-Klasse eingebettet ist, die die Datensatzgenerierung und die Modellbewertung übernimmt. Die Klasse unterstützt Nebenläufigkeit, um den Evaluierungsprozess zu beschleunigen:

python
evaluator = PromptEvaluator(max_concurrent_tasks=5)

Beginne mit einem niedrigen Nebenläufigkeitswert (wie 3), um Ratenlimit-Fehler zu vermeiden. Du kannst diesen Wert basierend auf deinem API-Kontingent anpassen.

Generieren von Testdaten

Die Methode generate_dataset erstellt Testfälle für deinen Prompt. Du musst Folgendes angeben:

  • Eine Aufgabenbeschreibung, die erklärt, was dein Prompt tun soll
  • Eine Spezifikation der Eingaben, die dein Prompt benötigt
  • Die Anzahl der zu generierenden Testfälle

Für das Beispiel der Ernährungsplanung:

python
dataset = evaluator.generate_dataset(
    task_description="Write a compact, concise 1 day meal plan for a single athlete",
    prompt_inputs_spec={
        "height": "Athlete's height in cm",
        "weight": "Athlete's weight in kg", 
        "goal": "Goal of the athlete",
        "restrictions": "Dietary restrictions of the athlete"
    },
    num_cases=3
)

Schreiben deines ersten Prompts

Beginne mit einem einfachen, naiven Prompt, um eine Baseline festzulegen. Die Funktion run_prompt erhält die Eingaben des Testfalls und sollte die Antwort des Modells zurückgeben:

python
def run_prompt(prompt_inputs):
    prompt = f"""
    What should this person eat?
    
    - Height: {prompt_inputs["height"]}
    - Weight: {prompt_inputs["weight"]}
    - Goal: {prompt_inputs["goal"]}
    - Dietary restrictions: {prompt_inputs["restrictions"]}
    """
    
    messages = []
    add_user_message(messages, prompt)
    return chat(messages)

Durchführen der Evaluierung

Der Evaluierungsprozess vergleicht die Ausgabe deines Prompts mit den erwarteten Kriterien. Du kannst zusätzliche Kriterien hinzufügen, um die Bewertung zu steuern:

python
results = evaluator.run_evaluation(
    run_prompt_function=run_prompt,
    dataset_file="dataset.json",
    extra_criteria="""
    The output should include:
    - Daily caloric total
    - Macronutrient breakdown  
    - Meals with exact foods, portions, and timing
    """
)

Analysieren der Ergebnisse

Die Evaluierung generiert eine output.html-Datei, die du in deinem Browser öffnen kannst. Dieser Bericht zeigt detaillierte Ergebnisse für jeden Testfall, einschließlich Bewertungen, Begründungen und der tatsächlichen Ausgabe, die von deinem Prompt generiert wurde.

Lass dich nicht von niedrigen anfänglichen Bewertungen entmutigen – das ist zu erwarten! Der anfängliche Prompt in diesem Beispiel erreichte nur 2,3 von 10 Punkten, aber das gibt dir eine klare Baseline, von der aus du dich verbessern kannst.

Wie geht es weiter?

Mit deiner festgelegten Baseline kannst du nun systematisch Prompt-Engineering-Techniken anwenden, wie zum Beispiel spezifischer zu sein, Anforderungen an die Ausgabeformatierung hinzuzufügen, strukturierte Prompts zu verwenden und Multi-Shot-Beispiele zu implementieren. Jede Technik sollte deine Evaluierungsbewertung verbessern und dir messbaren Fortschritt auf dem Weg zu deinem Ziel geben.