Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bewertungsmethoden definieren
-Übersicht
Wählen Sie EINE Bewertungsmethode pro Eingabeaufforderungsvorlage aus, oder lassen Sie alle optionalen Bewertungsfelder für den Systemstandard weg. Verschiedene Vorlagen im selben Job können unterschiedliche Methoden verwenden. Die Bewertung steuert die schnelle Optimierung. Definieren Sie daher Ihre Methode und Ihre Kriterien so genau wie möglich.
Tipps zu Datensätzen
Kombinieren Sie einfache und schwierige Beispiele — entsprechen Sie dem, was Sie in der realen Welt sehen. All-easy Daten werden nicht die Aufforderung zur Verbesserung anregen; aus rein harten Daten kann man nichts lernen.
Behandeln Sie die Fälle, die Ihnen wichtig sind — das System verallgemeinert über das hinaus, was es sieht, aber eine repräsentative Datenverteilung hilft, besser auf reale Eingaben zu verallgemeinern.
Testen Sie nach der schnellen Optimierung anhand von Daten, die der Optimierer noch nicht gesehen hat, anhand eines ausgeblendeten Datensatzes. Dabei wird bestätigt, dass die Gewinne real sind und nicht nur gespeichert werden.
Standardauswertung
Lassen Sie alle optionalen Bewertungsfelder (steeringCriteria,customLLMJConfig,evaluationMetricLambdaArn) weg. Der Dienst verwendet ein integriertes generisches Programm, das auf Anthropic Claude Sonnet 4.6 LLM-as-judge basiert und drei Standardkriterien bewertet: Genauigkeit der Antwort, Vollständigkeit der Antwort und Ausdrucksqualität. Anhand der Aufforderung, der Antwort des Zielmodells und einer Referenzantwort bewertet der Richter jede Dimension. Anschließend weist er der Aufgabe dynamisch die entsprechende Gewichtung zu und erstellt eine gewichtete Gesamtpunktzahl.
Wir empfehlen, Ihre eigene Bewertungsmethode zu definieren, um die besten Ergebnisse zu erzielen.
Standardmäßig vom System bereitgestellte Eingabeaufforderung für Richter
Im Folgenden finden Sie die vollständige, vom System bereitgestellte Richter-Eingabeaufforderung, die bei der Standardbewertung mit Anthropic Claude Sonnet 4.6 verwendet wird:
Please act as an impartial judge and evaluate the quality of an answer to a user question, with the help of a reference answer. You will be given: (1) a user question, enclosed in <user_question></user_question> tags (2) an answer, enclosed in <answer></answer> tags (3) a reference answer, enclosed in <reference_answer></reference_answer> tags ## Universal Evaluation Dimensions Evaluate the answer across these core dimensions: **(1) Answer Accuracy:** examines correctness, consistency, and factuality alignment between the <answer> and the <user_question>; examines if the <answer> contains irrelevant or wrongful information/hallucination. **(2) Answer Completeness:** examines if the <answer> is fully addressing the <user_question>; examines if the <answer> is good at relevance/informativeness: selection of important/key content from <user_question> **(3) Expression Quality:** examines if the <answer> is concise at answering the <user_question>. NOTE that unless there is special instruction, more concise <answer> is always better, and explanation or rational is strictly NOT needed - THIS IS THE MOST IMPORTANT! examines the alignment on instruction following, e.g., if the <answer> adheres to both explicit guidelines and implicit guidelines (like few-shot examples) in the <user_question>; ## Scoring Rubric For each dimension, assign one score: - **3 points**: Fully satisfies the dimension requirements - **2 points**: Mostly satisfies with minor issues or gaps - **1 point**: Partially satisfies but has notable limitations - **0 points**: Does not satisfy the dimension requirements ## Evaluation Process 1. First, identify the task type from the user question 2. Consider any additional criteria provided 3. Score each dimension independently 4. Determine appropriate weights and calculate final weighted score ## Dimension Weighting and Final Scoring **Weight Determination Process:** Assign weights (must sum to 1.0) based on: - Explicit weights in evaluation_criteria (if provided) - Task analysis and question requirements (if no explicit weights) - Default weights (Answer Accuracy: 0.35, Answer Completeness: 0.30, Expression Quality: 0.35) as fallback **Weight Guidelines:** - **High Accuracy Weight (0.4-0.6)**: Factual questions, multiple choice, technical problems - **High Completeness Weight (0.4-0.6)**: Complex explanatory tasks, multi-part questions - **High Expression Weight (0.4-0.6)**: Creative tasks, presentation-focused questions, format-specific requirements {custom_eval_weight_guideline} **Overall Score Calculation:** Overall = (Answer_Accuracy x Weight_A) + (Answer_Completeness x Weight_C) + (Expression_Quality x Weight_E) ## Output Format Provide your evaluation in this exact format: <Task_Analysis>Brief analysis of task type and appropriate weight rationale</Task_Analysis> <Weights>Answer Accuracy: 0.XX, Answer Completeness: 0.XX, Expression Quality: 0.XX</Weights> <Answer Accuracy>X</Answer Accuracy> <Answer Completeness>X</Answer Completeness> <Expression Quality>X</Expression Quality> <Calculation>(X x 0.XX) + (X x 0.XX) + (X x 0.XX) = X.XX</Calculation> <Overall>X.XX</Overall> <Justification> **Answer Accuracy**: [Evaluate factual accuracy, alignment with reference answer, absence of errors/hallucinations, and logical consistency] **Answer Completeness**: [Assess whether all aspects of the question are addressed, necessary information is included, and content stays relevant] **Expression Quality**: [Examine formatting/style adherence, appropriate detail level, communication clarity, and instruction following] **Weight Application**: [Explain how the chosen weights reflect the task requirements and impact the final score] </Justification> --- ## Current Evaluation Task <user_question> {prompt} </user_question> <answer> {prediction} </answer> <reference_answer> {gold} </reference_answer> Based on the above guidelines and criteria, provide your evaluation:
Steuerungskriterien
Lenkungskriterien sind kurze Deskriptoren in natürlicher Sprache, die die Richtung der Optimierung vorgeben.
Format:
"steeringCriteria": ["string1", "string2"]Was sie sein können: Alles, von einem einzelnen Wort bis hin zu einigen Sätzen mit qualitativen oder quantitativen Beschreibungen, wie das Modell reagieren soll.
Limit: Bis zu 5 pro Eingabeaufforderungsvorlage.
Beispiel:
"steeringCriteria": ["PROFESSIONAL", "CONCISE"]
Benutzerdefiniert LLM-as-a-judge
Geben Sie eine vollständige Rubrik mit einer von Ihnen definierten Bewertungsskala an. Ihre benutzerdefinierte Richter-Eingabeaufforderung wird mit der System-Eingabeaufforderung für Richter des Dienstes zusammengeführt und stärker gewichtet.
Konfiguration
Format: plus
"customLLMJConfig": {"customLLMJPrompt": "...", "customLLMJModelId": "..."}"customEvaluationMetricLabel": "My Metric"Verfügbare Richtermodelle: anthropic.claude-opus-4-6-v1, anthropic.claude-sonnet-4-5-20250929-v 1:0, anthropic.claude-sonnet-4-6
Platzhalter in Ihrer Richter-Eingabeaufforderung:
{{prompt}}: die vollständig gerenderte Eingabeaufforderung (Vorlage für die Eingabeaufforderung plus Bewertungsmuster kombiniert){{response}}: die Modellausgabe{{referenceResponse}}: Die Grundwahrheit
Bewertung: Definieren Sie Ihre Bewertungsskala so, dass eine höhere Zahl besser ist. Der Service normalisiert alle Punktzahlen für die Endergebnisse.
Wenn Sie mehrere Rubriken haben, fügen Sie sie zu einer einzigen Richteraufforderung zusammen.
Bewährte Methoden für das Verfassen von Eingabeaufforderungen
Verwenden Sie eine klar definierte Rubrik mit expliziten Bewertungskriterien und konkreten Beispielen für jede Punktestufe. Verankern Sie jede Rubrikenebene eher mit Verhaltensbeschreibungen als mit subjektiven Adjektiven. Fügen Sie mindestens ein funktionierendes Beispiel hinzu, das ein nicht perfektes Ergebnis zeigt, um den Richter davon abzuhalten, zu hohen Bewertungen zu verfallen. Weisen Sie das Modell an, vor der numerischen Bewertung eine schriftliche Begründung vorzulegen. Erwägen Sie, bestimmte Dimensionen unabhängig voneinander zu bewerten, bevor Sie eine Gesamtpunktzahl zuweisen. Die vertrauenswürdigsten und hilfreichsten LLM-as-a-judge Gutachter sind in der Regel diejenigen, bei denen Sie mit den Antworten, die das Richtermodell liefert, einverstanden sind. Daher kann es hilfreich sein, eine Bewertung zu verwenden, die Sie bereits geprüft haben.
Wie Ihre benutzerdefinierte Judge-Eingabeaufforderung zur Laufzeit mit der Systemaufforderung zusammengeführt wird
Wenn Sie Ihre eigene Eingabeaufforderung für den LLM-as-a-judge Evaluator angeben, wird diese mit einer generischen, vom Service bereitgestellten Richter-Eingabeaufforderung zusammengeführt. Die Aufforderung enthält spezifische Anweisungen zur Formatierung und andere bewährte Methoden, die Sie bei der Optimierung unterstützen. Ihre benutzerdefinierte Eingabeaufforderung für Richter wird im endgültigen Urteil stärker gewichtet als die allgemeinen Kriterien. Konkret der Service:
Extrahiert die Absicht aus Ihrer benutzerdefinierten Aufforderung
Normalisiert die Skala so, dass sie der Systemrubrik von 0 bis 3 entspricht
Fügt sie als benannte Dimension in die Tags CUSTOM_CRITERIA_DESCRIPTION ein
Verzerrt die Gewichtungsanweisungen, um dem benutzerdefinierten Kriterium eine höhere Bedeutung zu verleihen (0,3 bis 0,6)
Fügt Prioritätsregeln hinzu, die besagen, dass benutzerdefinierte Kriterien Konflikte mit anderen Dimensionen überschreiben
Behält die ursprüngliche Semantik Ihrer Bewertung bei
Beispiel: Sie können die folgende benutzerdefinierte LLM-as-a-judge Eingabeaufforderung angeben, mit der die Treue bewertet wird:
You are given a task in some context (Input), and a candidate answer. Is the candidate answer faithful to the task description and context? A response is unfaithful only when (1) it clearly contradicts the context, or (2) the task implies that the response must be based on the context, like in a summarization task. If the task does not ask to respond based on the context, the model is allowed to use its own knowledge to provide a response, even if its claims are not verifiable. Task: {{prompt}} Candidate Response: {{response}} First provide your explanation, then state your final answer. Use the following format: Explanation: [Explanation], Answer: [Answer], where '[Answer]' must be one of: none is faithful some is faithful approximately half is faithful most is faithful all is faithful
Diese wird dann mit der LLM-as-a-judge Standard-Eingabeaufforderung zusammengeführt und stark gewichtet. Der Nettoeffekt: Ihre Aufforderung zur Treue, die nur ein Kriterium enthält, wird bei einer mehrdimensionalen Bewertung zu einer stark gewichteten Achse, während das System ihr Struktur (Genauigkeit, Vollständigkeit, Ausdruck) verleiht.
Das Ergebnis ist die zusammengefasste Eingabeaufforderung für den Richter:
"""Please act as an impartial judge and evaluate the quality of an answer to a user question, with the help of a reference answer. You will be given: (1) a user question, enclosed in <user_question></user_question> tags (2) an answer, enclosed in <answer></answer> tags (3) a reference answer, enclosed in <reference_answer></reference_answer> tags (4) custom evaluation criteria that have been integrated into the evaluation dimensions below **IMPORTANT**: - Custom criteria requirements take absolute precedence over user requirements specified inside <user_question> </user_question> **IMPORTANT**: - If there is any conflict between custom criteria and user question requirements, prioritize custom criteria ## Universal Evaluation Dimensions Evaluate the answer across these core dimensions: **(1) Answer Accuracy:** examines correctness, consistency, and factuality alignment between the <answer> and the <user_question>; examines if the <answer> contains irrelevant or wrongful information/hallucination. **(2) Answer Completeness:** examines if the <answer> is fully addressing the <user_question>; examines if the <answer> is good at relevance/informativeness: selection of important/key content from <user_question> **(3) Expression Quality:** examines if the <answer> is concise at answering the <user_question>. NOTE that unless there is special instruction, more concise <answer> is always better, and explanation or rational is strictly NOT needed - THIS IS THE MOST IMPORTANT! examines the alignment on instruction following, e.g., if the <answer> adheres to both explicit guidelines and implicit guidelines (like few-shot examples) in the <user_question>; <CUSTOM_CRITERIA_DESCRIPTION> **(4) Faithfulness to Context:** examines whether the candidate answer is faithful to the task description and context provided in the user question. A response is unfaithful only when (1) it clearly contradicts the context, or (2) the task implies that the response must be based on the context (like in a summarization task). If the task does not ask to respond based on the context, the model is allowed to use its own knowledge to provide a response, even if its claims are not verifiable. Evaluate the degree of faithfulness on the following scale: - **3 points**: All content is faithful (no contradictions, fully grounded when required) - **2 points**: Most content is faithful (minor deviations or unverifiable claims when context-grounding is required) - **1 point**: Some content is faithful or approximately half is faithful (notable contradictions or significant departures from context when required) - **0 points**: None or minimal content is faithful (clear contradictions or complete disregard of context when grounding is required) </CUSTOM_CRITERIA_DESCRIPTION> ## Dimension Weighting and Final Scoring **Weight Determination Process:** Assign weights (must sum to 1.0) based on: - Explicit weights in evaluation_criteria (if provided) - Task analysis and question requirements (if no explicit weights) - Default weights (Answer Accuracy: 0.25, Answer Completeness: 0.25, Expression Quality: 0.25, Faithfulness to Context: 0.25) as fallback **Weight Guidelines:** - **High Accuracy Weight (0.3-0.5)**: Factual questions, multiple choice, technical problems - **High Completeness Weight (0.3-0.5)**: Complex explanatory tasks, multi-part questions - **High Expression Weight (0.3-0.5)**: Creative tasks, presentation-focused questions, format-specific requirements - [*IMPORTANT*] **High Custom Criteria Weight**: The custom criteria (Faithfulness to Context) should always be *prioritized*. Assign it significant weight (0.3-0.6) and adjust other weights accordingly. **Overall Score Calculation:** Overall = (Answer_Accuracy x Weight_A) + (Answer_Completeness x Weight_C) + (Expression_Quality x Weight_E) + (Faithfulness_to_Context x Weight_F) ## Current Evaluation Task <user_question> {prompt} </user_question> <answer> {prediction} </answer> <reference_answer> {gold} </reference_answer> Based on the above guidelines and criteria, provide your evaluation:"""
Benutzerdefinierter Lambda-Evaluator
Bringen Sie Ihre eigene Bewertungsfunktion als Lambda-Funktion mit.
Konfiguration
Geben Sie den Lambda-ARN in Ihrer JSONL-Eingabedatei für jede Eingabeaufforderungsvorlage an, die ihn verwenden soll. Sie geben auch das customEvaluationMetricLabel Feld zur Benennung Ihrer Metrik an:
"evaluationMetricLambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:my-eval-function", "customEvaluationMetricLabel": "My Custom Metric"
Wenn Sie den Job über die API erstellen, ist in der CreateAdvancedPromptOptimizationJob Anfrage selbst keine zusätzliche Evaluierungskonfiguration erforderlich. Die Bewertungsmethode wird pro Vorlage aus der JSONL-Eingabedatei bestimmt.
Lambda-Anforderungen
Einzelne
.pyDatei mit dem gesamten CodeHandler eingestellt auf
lambda_function.lambda_handlerMuss die
compute_score(preds, golds)Rückgabe implementieren{"score": float, "scores": [float, ...]}Der
goldsParameter enthält diereferenceResponseWerte. Wenn SiereferenceResponsein Ihrem Eingabe-Dataset nichts angegeben haben, müssen Sie Ihrecompute_scoreFunktion nicht übergebengolds.Stürzen Sie nie ab; geben Sie bei Fehlern 0,0 zurück, anstatt Ausnahmen auszulösen
Bevorzugen Sie kontinuierliche Werte (0,0 bis 1,0) gegenüber binären 0/1 Werten, um eine schnellere Optimierungskonvergenz zu erzielen
Punktzahlen müssen nicht auf [0, 1] begrenzt sein.
Die Punktzahlen müssen einer Skala „höher ist besser“ folgen. Dies ist eine Voraussetzung, damit die Optimierung korrekt funktioniert.
Stellen Sie das Timeout für große Chargen auf maximal 15 Minuten (900 s) ein, um vorzeitige Timeouts zu vermeiden
Fügen Sie eine ressourcenbasierte Richtlinie hinzu, mit der Sie Ihr
bedrock.amazonaws.com.rproxy.govskope.usLambda aufrufen können
Tipps zur Lambda-Metrik
Schreiben Sie einen leeren Docstring an
compute_score— der Docstring wird extrahiert und dem System als Beschreibung der Metrik angezeigt. Erläutern Sie, was die Punktzahl bedeutet und was eine hohe Punktzahl von einer niedrigen Punktzahl unterscheidet.Schreiben Sie Ihren metrischen Code klar und deutlich — der vollständige Quellcode wird vom System gelesen. Kommentare, Variablennamen und lesbare Logik helfen dabei, Ihre Absicht zu verstehen und besseres Feedback zu generieren.
Bevorzugen Sie kontinuierliche Werte gegenüber binären Werten 0/1 — der Optimierer maximiert die durchschnittliche Punktzahl aller Stichproben. Kontinuierliche Abstufungen (z. B. bei teilweiser Anrechnung) geben ein gleichmäßigeres Signal, dem man folgen kann als Alles-oder-Nichts-Scores.
Gibt strukturierte Details zurück, nicht nur eine Zahl — Wenn Sie ein Diktat mit Unterpunkten oder Diagnosefeldern zurückgeben, erhält das System mehr Informationen darüber, warum eine Vorhersage schlecht abgeschnitten hat, was zu gezielteren Verbesserungen führt.
Geben Sie beschreibende Meldungen mit Fallbackwerten zurück. Wenn Sie einen Fallback-Score von 0,0 zurückgeben, fügen Sie dem Ergebnisdikt ein Diagnosefeld hinzu (z. B.).
{"score": 0.0, "error": "JSON parse failed on line 3"}Das System liest diese Meldungen, um zu verstehen, warum eine Vorhersage schlecht abgeschnitten hat, und generiert gezielteres Feedback.Überprüfen Sie Ihre Bewertung — bewerten Sie einige offensichtlich schlechte Ergebnisse, um zu bestätigen, dass Ihre Metrik sie negativ beeinflusst. Wenn eine triviale Antwort gut abschneidet, findet der Optimierer diese Abkürzung.
Lambda-Vorlage
""" APO Custom Metric Lambda - Minimal Template Handler: lambda_function.lambda_handler """ import logging from typing import List, Dict, Any logger = logging.getLogger() logger.setLevel(logging.INFO) def compute_score(preds: List[str], golds: List[str]) -> Dict[str, Any]: """ Score predictions against ground truths. Args: preds: Model outputs (one per sample) golds: Expected answers (one per sample) Returns: Must contain: "score": float - aggregate score (higher is better) "scores": list[float] - per-instance scores """ # --- REPLACE THIS with your scoring logic --- scores = [] for pred, gold in zip(preds, golds): # Example: exact match (case-insensitive) scores.append(1.0 if pred.strip().lower() == gold.strip().lower() else 0.0) return { "score": sum(scores) / len(scores) if scores else 0.0, "scores": scores, } def lambda_handler(event, context): """ Lambda entry point. APO service sends: event = {"preds": ["output1", ...], "golds": ["truth1", ...]} """ logger.info(f"Received {len(event.get('preds', []))} predictions") try: preds = event.get("preds", []) golds = event.get("golds", []) if not preds: return {"score": 0.0, "scores": []} return compute_score(preds, golds) except Exception as e: logger.error(f"Error: {e}", exc_info=True) return {"score": 0.0, "scores": [0.0] * len(event.get("preds", [])), "error": str(e)}
In den AWS Beispielen GitHub finden Sie detailliertere Beispiele, darunter Boilerplate-Code für die Fehlerbehandlung und die Validierung der Lambda-Funktionseingabe.