View a markdown version of this page

Integrieren Sie automatisierte Argumentationsprüfungen in Ihre Anwendung - Amazon Bedrock

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.

Integrieren Sie automatisierte Argumentationsprüfungen in Ihre Anwendung

Nachdem Sie Ihre Richtlinie für automatisiertes Denken in einer Leitplanke implementiert haben (sieheImplementieren der Automated-Reasoning-Richtlinie in die Anwendung), können Sie sie zur Laufzeit verwenden, um LLM-Antworten zu validieren und auf das Feedback zu reagieren. Auf dieser Seite wird erklärt, wie Sie die Validierungs-API aufrufen, die Ergebnisse programmgesteuert interpretieren und gängige Integrationsmuster wie das Umschreiben ungültiger Antworten und das Stellen klärender Fragen implementieren.

Automatisierte Prüfungen zur Argumentation funktionieren nur im Erkennungsmodus — sie geben Ergebnisse und Feedback zurück, anstatt Inhalte zu blockieren. Ihre Anwendung ist dafür verantwortlich, zu entscheiden, was mit den Ergebnissen geschehen soll: die Antwort zuzustellen, sie neu zu schreiben, um Klarstellung zu bitten oder auf ein Standardverhalten zurückzugreifen.

Wie werden Inhalte mit automatisierten Argumentationsprüfungen bewertet

Automatisierte Prüfungen zur Argumentation übersetzen die von Ihnen eingereichten Inhalte in eine logische Implikation — eine „if/then" Beziehung — und überprüfen dann, ob diese Implikation mit Ihren Richtlinien übereinstimmt. Aus der Übersetzung ergeben sich zwei Arten von logischen Aussagen:

  • Prämissen — Die „Wenn“ -Seite: die vorausgehenden Bedingungen und Fakten des Szenarios, die den Kontext für die Argumentation festlegen (z. B. eine Tatsache, die der Benutzer über seine Situation angibt, oder eine Bedingung, von der die Antwort seine Antwort abhängig macht). Prämissen sind optional.

  • Ansprüche — Die „damalige“ Seite: die Behauptungen, die anhand Ihrer Versicherungsregeln validiert werden müssen (in der Regel die inhaltlichen Aussagen in der Antwort des Modells).

Automatisierte Begründungsprüfungen entscheiden bei der Übersetzung des Inhalts, welche Aussagen Prämissen und welche Behauptungen sind — die Aufteilung wird nicht direkt aus den Eingabefeldern übernommen. Sie kontrollieren über die API, ob jeder Inhalt als benutzerseitige Eingabe (eine Frage oder eine angegebene Bedingung) oder als Eingabe durch einen Agenten (eine zu validierende Antwort) eingegeben wird. Das query Qualifier kennzeichnet Inhalte als benutzerseitig guardContent (oder Text ohne Tags) als agentenseitig und wird von automatisierten Argumentationsprüfungen ignoriert. groundingSource Die Übersetzung leitet dann die Prämissen und Behauptungen aus den kombinierten Eingaben ab.

Ob und wie Sie Inhalte taggen müssen, hängt von der API ab, die Sie verwenden.

API Tagging erforderlich? Wie Inhalte in Automated Reasoning Checks aufgenommen werden
ApplyGuardrail Nein (optional) Alle Inhalte, die Sie bestehen, werden bewertet. Für jeden Inhaltsblock wird qualifiers festgelegt, ob er als benutzerseitige (query) oder agentenseitige (guard_content) Eingabe eingegeben wird. Ein Block ohne Qualifizierer wird standardmäßig agentenseitig eingegeben. ApplyGuardrailfügt in Ihrem Namen keine Musterantwort an, sodass Ihr Inhalt mindestens einen Block für die Agentenseite (Anspruch) enthalten muss.
Converse(nur Klartext) Ja Einfache text Blöcke sind nicht markiert, sodass automatische Argumentationsprüfungen keinen zu bewertenden Inhalt haben und daher übersprungen werden ()automatedReasoningPolicyUnits: 0. Verwenden Sie einen guardContent Block, um sich anzumelden.
Converse (mit guardContent) Ja Verwenden Sie qualifiers ihn für guardContent Blöcke, um Inhalte auf Benutzer- und Agentenseite zu markieren. Die Antwort des Modells wird automatisch als Block auf Agentenseite (Anspruch) angehängt.
InvokeModel Ja Umhüllen Sie den Eingabetext in XML-Tags und legen Sie ihn tagSuffix in der Anforderungskonfiguration fest. Die Antwort des Modells wird automatisch als Block auf Agentenseite (Anspruch) angehängt.

Hauptunterschiede zwischen APIs

  • Bei Converse und InvokeModel wird die Antwort des Modells automatisch als Block auf Agentenseite (Anspruch) angehängt. Das hat zur Folge, dass bei einer Eingabe, die Sie nur mit einem Tag versehen, query immer noch Automated Reasoning Checks ausgeführt werden — die Antwort liefert den Anspruch.

  • Wenn Sie Tags weglassen oder nur Klartext sendenConverse, wird kein Fehler angezeigt, aber automatische Argumentationsprüfungen werden nicht angewendet. InvokeModel Die Antwort weist darauf mit hin. automatedReasoningPolicyUnits: 0

  • EinInvokeModel, Text zwischen Guardrail-XML-Tags, der keinen Qualifizierer enthält, wird standardmäßig als Inhalt auf Agentenseite (Anspruch) verwendet.

  • Automatisierte Prüfungen zur Argumentation bewerten die Antwort (den Inhalt auf der Agentenseite); sie werden nicht im Rahmen einer eigenständigen Auswertung ausgeführt, die nur für sich allein bestimmt ist. INPUT

  • Bei ApplyGuardrail wird keine Musterantwort für Sie angehängt, sodass der von Ihnen eingereichte Inhalt mindestens einen Block für die Agentenseite (Anspruch) enthalten muss. Ist dies nicht der Fall, gibt die Anfrage a zurück. ValidationException

Übersicht über die Integration

Zur Laufzeit folgt die Integration diesem Ablauf:

User question ──► LLM generates response ──► Validate response │ ┌─────────┴─────────┐ │ │ VALID Not VALID │ │ ▼ ▼ Serve response Inspect findings to user │ ┌────────┴────────┐ │ │ OTHER FINDING TRANSLATION_ TYPES AMBIGUOUS / SATISFIABLE │ │ ▼ ▼ Rewrite using Ask user for AR feedback clarification │ │ ▼ ▼ Validate again Validate with clarified input

Ergebnisse von Automated Reasoning werden über jede API zurückgegeben, die eine Amazon Bedrock Guardrails-Konfiguration unterstützt:

  • ApplyGuardrail— Eigenständige Validierungs-API. Verwenden Sie diese Option, wenn Sie Inhalte unabhängig vom LLM-Aufruf validieren möchten. Dies ist der empfohlene Ansatz für automatische Argumentationsprüfungen, da Sie damit die volle Kontrolle darüber haben, welcher Inhalt wann validiert wird.

  • Converseund InvokeModel — LLM-Aufruf-APIs mit Guardrail-Konfiguration. Die Ergebnisse der automatisierten Argumentation werden im Antwortfeld zurückgegeben. trace

Rufen Sie ApplyGuardrail mit automatisierten Argumentationsüberprüfungen an

ApplyGuardrailbewertet den gesamten Inhalt, den Sie bestanden haben. Das Tagging ist optional: Standardmäßig wird jeder Inhaltsblock als agentenseitiger Inhalt (Anspruch) behandelt und anhand Ihrer Richtlinienregeln validiert. Dies ist der einfachste Integrationspfad. Um automatisierten Argumentationsprüfungen zusätzlichen Kontext zu geben, können Sie einen Inhaltsblock so einrichtenqualifiers, dass er als benutzerseitige Eingabe () markiert wird. query Im Gegensatz zu Converse und InvokeModel ApplyGuardrail fügt keine Musterantwort für Sie an, sodass der von Ihnen eingereichte Inhalt mindestens einen Anspruchsblock enthalten muss. Andernfalls gibt die Anfrage a zurück. ValidationException

Struktur der Anfrage

guardrailIdentifier (Erforderlich)

Die Leitplanken-ID oder ARN. Verwenden Sie die Leitplanke, der Ihre Richtlinie für automatisiertes Denken beigefügt ist.

guardrailVersion (Erforderlich)

Die Versionsnummer der Leitplanke (z. B.). 1 Verwenden Sie eine nummerierte Version für Produktionsworkloads, nicht. DRAFT

source (Erforderlich)

OUTPUTWird bei der Validierung von LLM-Antworten auf eingestellt. INPUTWird bei der Validierung von Benutzeraufforderungen auf eingestellt. Bei automatisierten Argumentationsprüfungen validieren Sie in der Regel die LLM-Ausgabe.

content (Erforderlich)

Eine Reihe von Inhaltsblöcken, die validiert werden müssen. Jeder Block enthält ein text Feld mit dem zu prüfenden Inhalt. Sie können die Benutzerfrage und die LLM-Antwort als separate Inhaltsblöcke übergeben oder sie zu einem einzigen Block kombinieren.

Beispiel: Validieren Sie eine LLM-Antwort mit dem AWS CLI

aws bedrock-runtime apply-guardrail \ --guardrail-identifier "your-guardrail-id" \ --guardrail-version "1" \ --source OUTPUT \ --content '[ { "text": { "text": "User: Am I eligible for parental leave if I have been working here for 2 years full-time?\nAssistant: Yes, you are eligible for parental leave." } } ]'

Beispiel: Validieren Sie eine LLM-Antwort mit Python (boto3)

import boto3 import json bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1") response = bedrock_runtime.apply_guardrail( guardrailIdentifier="your-guardrail-id", guardrailVersion="1", source="OUTPUT", content=[ { "text": { "text": ( "User: Am I eligible for parental leave if I have been " "working here for 2 years full-time?\n" "Assistant: Yes, you are eligible for parental leave." ) } } ], ) # The AR findings are in the assessments for assessment in response.get("assessments", []): ar_assessment = assessment.get("automatedReasoningPolicy", {}) findings = ar_assessment.get("findings", []) for finding in findings: # Each finding is a union — exactly one key is present # Possible keys: valid, invalid, satisfiable, impossible, # translationAmbiguous, tooComplex, noTranslations print(json.dumps(finding, indent=2, default=str))

Struktur der Antwort

Die ApplyGuardrail Antwort umfasst ein assessments Array. Jede Bewertung enthält ein automatedReasoningPolicy Objekt mit einem findings Array. Bei jedem Ergebnis handelt es sich um einen Kombinationstyp — genau einer der folgenden Schlüssel ist vorhanden:

  • valid

  • invalid

  • satisfiable

  • impossible

  • translationAmbiguous

  • tooComplex

  • noTranslations

Eine ausführliche Beschreibung der einzelnen Ergebnisarten und ihrer Felder finden Sie unterErgebnisse und Validierungsergebnisse.

Rufen Sie Converse mit automatisierten Argumentationsprüfungen auf

Automatisierte Reasoning-Checks werden bei einer Converse Anfrage nur ausgeführt, wenn die Anfrage mindestens einen Block umfasst. guardContent Eine Anfrage, die nur Klartext sendet, text führt keine automatischen Argumentationsprüfungen durch.

Nur Klartext (automatische Argumentationsprüfungen wurden übersprungen)

Wenn in Ihrer Converse Anfrage nur einfache text Blöcke (keine guardContent Blöcke) verwendet werden, ist der Text nicht für die Bewertung von Leitplanken gekennzeichnet, sodass automatische Argumentationsprüfungen nichts zu bewerten haben und übersprungen werden:

{ "messages": [{"role": "user", "content": [{"text": "Apply a 20% discount to my order"}]}] }

Diese Anfrage wird zurückgegeben. automatedReasoningPolicyUnits: 0 Andere Richtlinien (Inhalt, Thema, Wort und vertrauliche Informationen) bewerten den Inhalt weiterhin. Lediglich automatische Argumentationsprüfungen werden übersprungen. Um automatische Argumentationsprüfungen durchzuführen, verwenden Sie einen guardContent Block, wie im nächsten Abschnitt gezeigt.

Wichtig

Wenn automatische Argumentationsprüfungen übersprungen werden, ist die Anfrage trotzdem ohne Fehler erfolgreich. Eine falsch konfigurierte Anfrage kann also unbemerkt ungeprüft bleiben. Bestätigen Sie Ihre Konfiguration immer, indem Sie überprüfen, ob der Wert größer automatedReasoningPolicyUnits ist als in der Antwort. 0 Ein Wert von 0 bedeutet, dass automatische Argumentationsprüfungen nicht ausgeführt wurden (z. B. weil der Inhalt nicht markiert war), obwohl die Anfrage erfolgreich war.

Verwenden von GuardContent-Blöcken

Um automatische Argumentationsprüfungen durchzuführenConverse, packen Sie den Inhalt, den Sie bewerten möchten, in einen guardContent Block ein und legen Sie die zugehörigen Qualifizierer fest. Auf diese Weise kennzeichnen Sie, welche Inhalte benutzerseitig und welche agentenseitig sind.

Anmerkung

Die Converse API verwendet snake_case für Qualifier-Strings (guard_content,grounding_source), während InvokeModel XML-Tags camelCase (,) verwenden. guardContent groundingSource Diese sind denselben zugrunde liegenden Rollen zugeordnet.

Die folgende Tabelle zeigt, wie jedes Kriterium Inhalte für automatische Argumentationsprüfungen kennzeichnet.

Qualifizierer-Zeichenfolge (snake_case) Äquivalent zu XML-Tags (CamelCase) Eingaberolle für automatisiertes Denken
"query" query User-side— die Frage des Benutzers oder die angegebenen Bedingungen. Stellt einen Kontext bereit, aus dem die Übersetzung Prämissen ziehen kann.
"guard_content" guardContent Agent-side— Inhalte, die anhand Ihrer Richtlinien validiert werden müssen. Liefert die Ansprüche, die die Übersetzung überprüft.
"grounding_source" groundingSource Wird bei Prüfungen zur automatischen Argumentation ignoriert (wird bei kontextuellen Begründungsprüfungen verwendet).

Der Qualifier legt nur fest, ob der Inhalt benutzer- oder agentenseitig ist. Automatisierte Argumentationsprüfungen leiten bei der Übersetzung der kombinierten Eingaben die tatsächlichen Prämissen und Behauptungen ab. Für einen Block, für den keine Qualifikatoren angegeben wurden, ist standardmäßig (agentenseitig) voreingestellt. guard_content Sie können mehrere Qualifizierer für einen Block angeben. Die Prioritätsreihenfolge ist. guard_content > query > grounding_source

Anmerkung

Bei „Ein“ wird die Antwort des Modells automatisch als Block auf Converse Agentenseite (Anspruch) angehängt, sodass bei einer Anfrage, deren Blöcke nur verwendet werden, query weiterhin automatische Argumentationsprüfungen ausgeführt werden. (Wenn Sie ApplyGuardrail direkt anrufen, wird keine Antwort angehängt. Sie müssen also selbst mindestens einen Block auf der Agentenseite angeben, andernfalls gibt die Anfrage a zurück.) ValidationException

Beispiel: Rufen Sie Converse mit den Qualifikationsmerkmalen für Automated Reasoning auf und verwenden Sie den AWS CLI

aws bedrock-runtime converse \ --model-id "model-id" \ --guardrail-config '{ "guardrailIdentifier": "your-guardrail-id", "guardrailVersion": "1", "trace": "enabled" }' \ --messages '[ { "role": "user", "content": [ { "guardContent": { "text": { "text": "Apply a 20% discount to my order and confirm it is done.", "qualifiers": ["query"] } } } ] } ]'

Wenn die Prüfungen für automatisiertes Denken ausgeführt werden

In der folgenden Tabelle wird zusammengefasst, ob für jede Converse Anforderungsform Prüfungen zum automatisierten Denken ausgeführt werden. In jedem Fall, in dem sie ausgeführt werden, wird die Antwort des Modells als Block auf Agentenseite (Anspruch) angehängt.

Form anfordern Werden automatische Prüfungen zum Argumentieren durchgeführt?
Nur einfache text Blöcke, nein guardContent Nein — der Inhalt ist nicht markiert, daher werden Prüfungen übersprungen () automatedReasoningPolicyUnits: 0
Hat guardContent Blöcke mit guard_content oder ohne Qualifikatoren Ja
Hat guardContent Blöcke mit nur query Ja — die beigefügte Musterantwort enthält den Anspruch
Hat guardContent Blöcke mit nur grounding_source Ja — die beigefügte Musterantwort enthält die Behauptung. Der grounding_source Block selbst wird ignoriert (er trägt weder zu einer Prämisse noch zu einem Anspruch bei), aber die Anfrage wird trotzdem ausgeführt, weil die Antwort den Inhalt des Anspruchs enthält.

Anruf InvokeModel mit automatischen Argumentationsprüfungen

Warnung

Sie müssen Ihre Eingaben mit XML-Guardrail-Tags kennzeichnen, damit automatische Argumentationsprüfungen zur Auswertung der Antworten durchgeführt werden können. Ohne Tags gibt Automated Reasoning das Ergebnis zurück automatedReasoningPolicyUnits: 0 — es wird kein Fehler gemeldet und es findet keine Bewertung statt.

Funktionsweise

InvokeModelerfordert zwei Dinge für automatische Argumentationsprüfungen:

  1. A tagSuffix im amazon-bedrock-guardrailConfig Objekt des Körpers.

  2. Eingabetext, der in XML-Tags eingeschlossen ist, die dieses Suffix verwenden.

Das XML-Tag-Format lautet wie folgt:

<amazon-bedrock-guardrails-QUALIFIER_SUFFIX>text</amazon-bedrock-guardrails-QUALIFIER_SUFFIX>

Wobei Folgendes gilt:

  • QUALIFIERist einer von queryguardContent, oder groundingSource (CamelCase in XML).

  • SUFFIXentspricht dem tagSuffix Wert im Hauptteil der Anfrage.

  • tagSuffixmuss dem Muster entsprechen ^[a-zA-Z0-9][a-zA-Z0-9-_]{0,18}[a-zA-Z0-9]$ (2—20 Zeichen).

Kennzeichnen Sie Rollen für automatische Argumentationsprüfungen

Qualifizierer für XML-Tags Eingaberolle für automatisiertes Denken Bedeutung
query User-side Die Frage des Benutzers oder die angegebenen Bedingungen. Stellt einen Kontext bereit, aus dem die Übersetzung Prämissen ziehen kann.
guardContent Agent-side Inhalt, der anhand Ihrer Richtlinie validiert werden muss. Liefert die Anträge, die von der Übersetzung geprüft werden.
groundingSource Ignored Wird nicht bei Prüfungen zur automatischen Argumentation verwendet (wird bei kontextuellen Begründungsprüfungen verwendet).

Der Qualifier legt nur fest, ob es sich bei dem markierten Text um eine benutzer- oder agentenseitige Eingabe handelt. Automatisierte Argumentationsprüfungen leiten die Prämissen und Behauptungen ab, wenn sie die kombinierte Eingabe übersetzen. Kennzeichnen Sie die Benutzereingabeaufforderung mitquery, um den Prüfungen einen Kontext zu geben. Die Ausgabe des Modells wird automatisch als agentenseitiger Block (Claim) angehängt. Es reicht also, die Eingabeaufforderung mit query allein zu kennzeichnen, damit die Prüfungen ausgeführt werden können.

Anmerkung

Text zwischen den Guardrail-Tags, der keinen Qualifier enthält, wird standardmäßig als Inhalt auf Agentenseite (Anspruch) verwendet. Da die Antwort des Modells als Anspruch InvokeModel angehängt wird, werden bei einer Anfrage, die die Aufforderung nur mit einem Tag kennzeichnet, immer noch automatische Argumentationsprüfungen ausgeführt. query (Dies unterscheidet sich von einem direkten ApplyGuardrail Anruf, bei dem keine Antwort angehängt wird und daher ein Ergebnis zurückgegeben wird, ValidationException wenn Sie keinen Inhalt für den Anspruch angeben.)

Multi-tag Rangfolge- und Verschachtelungsregeln

Ein einzelnes Textsegment kann in mehrere verschachtelte Tag-Typen eingeschlossen werden. Wenn mehrere Tags auf denselben Inhalt zutreffen, bestimmt der Vorrang die Rolle des automatisierten Denkens:. guardContent > query > groundingSource Wenn ein Inhalt guardContent sowohl mit als auch gekennzeichnet istquery, wird er als Anspruch behandelt.

Es gelten die folgenden Verschachtelungsregeln:

  • Tags verschiedener Typen können verschachtelt werden (z. B.<amazon-bedrock-guardrails-query_arp><amazon-bedrock-guardrails-guardContent_arp>text</amazon-bedrock-guardrails-guardContent_arp></amazon-bedrock-guardrails-query_arp>).

  • Tags desselben Typs können sich nicht selbst verschachteln, und Tags müssen in der umgekehrten Reihenfolge geschlossen werden, in der sie geöffnet wurden. Eine ungültige Tag-Struktur gibt a ValidationException zurück.

Beispiel: Anruf InvokeModel mit Automated Reasoning-Tags unter Verwendung von AWS CLI

aws bedrock-runtime invoke-model \ --model-id "model-id" \ --guardrail-identifier "your-guardrail-id" \ --guardrail-version "1" \ --trace "ENABLED" \ --cli-binary-format raw-in-base64-out \ --body '{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 256, "amazon-bedrock-guardrailConfig": { "tagSuffix": "arp" }, "messages": [ { "role": "user", "content": [ { "type": "text", "text": "<amazon-bedrock-guardrails-query_arp>Apply a 20% discount to my order and confirm it is done.</amazon-bedrock-guardrails-query_arp>" } ] } ] }' \ output.json

Diese Anfrage kehrt zurückautomatedReasoningPolicyUnits: 1, wobei die Ergebnisse von Automated Reasoning im Trace enthalten sind.

Standardverhalten (ohne Tags)

Dieselbe Anfrage ohne die XML-Tags verwendet Klartext:

"text": "Apply a 20% discount to my order and confirm it is done."

Diese Anfrage kehrt zurück automatedReasoningPolicyUnits: 0 — Automatisierte Argumentationsprüfungen wurden nicht ausgeführt, und es wurde kein Fehler ausgelöst. Die Leitplanke bewertet weiterhin andere Richtlinien (Inhalt, Thema, Wort und vertrauliche Informationen), aber automatische Argumentationsprüfungen werden vollständig übersprungen.

Interpretieren Sie die Ergebnisse von Automated Reasoning zur Laufzeit

Um programmatisch auf die Ergebnisse von Automated Reasoning reagieren zu können, muss Ihre Anwendung den Befundtyp, die Übersetzungsdetails und die unterstützenden oder widersprüchlichen Regeln extrahieren. In den folgenden Abschnitten wird erklärt, wie die einzelnen Teile eines Ergebnisses analysiert werden.

Ermitteln Sie den Befundtyp

Jeder Befund ist eine Vereinigung — genau ein Schlüssel ist vorhanden. Prüfen Sie, welcher Schlüssel existiert, um den Befundtyp zu bestimmen:

def get_finding_type(finding): """Return the finding type and its data from an AR finding union.""" for finding_type in [ "valid", "invalid", "satisfiable", "impossible", "translationAmbiguous", "tooComplex", "noTranslations" ]: if finding_type in finding: return finding_type, finding[finding_type] return None, None

Lesen Sie die Übersetzung

Die meisten Befundtypen enthalten ein translation Objekt, das zeigt, wie automatische Argumentationsprüfungen die Eingabe in natürlicher Sprache in formale Logik übersetzt haben. Die Übersetzung enthält:

  • premises— Die aus der Eingabe extrahierten Bedingungen (z. B.isFullTime = true,tenureMonths = 24).

  • claims— Die zu validierenden Behauptungen (zum BeispieleligibleForParentalLeave = true).

  • untranslatedPremises— Teile der Eingabe, die nicht den Richtlinienvariablen zugeordnet werden konnten. Diese Teile wurden nicht validiert.

  • untranslatedClaims— Behauptungen, die nicht politischen Variablen zugeordnet werden konnten.

Prüfen Sie den Umfang der Validierung untranslatedPremises und untranslatedClaims machen Sie sich ein Bild davon. Ein VALID Ergebnis deckt nur die übersetzten Ansprüche ab — unübersetzte Inhalte werden nicht verifiziert.

Lesen Sie die unterstützenden oder widersprüchlichen Regeln

Je nach Art des Ergebnisses enthält das Ergebnis Regeln, die das Ergebnis erklären:

  • validZu den Ergebnissen gehören supportingRules — die Versicherungsregeln, die belegen, dass die Behauptungen korrekt sind.

  • invalidZu den Ergebnissen gehören contradictingRules — die politischen Regeln, gegen die die Ansprüche verstoßen.

  • satisfiableZu den Ergebnissen gehören claimsTrueScenario sowohl a als auch a claimsFalseScenario — es wird dargelegt, unter welchen Bedingungen die Behauptungen wahr und falsch sind.

Diese Regeln und Szenarien sind die wichtigsten Inputs für das unter beschriebene Umschreibmuster. Schreiben Sie ungültige Antworten mithilfe von AR-Feedback um

Ermitteln Sie das Gesamtergebnis

Eine einzelne Überprüfungsanfrage kann mehrere Ergebnisse zurückgeben. Um das Gesamtergebnis zu ermitteln, sortieren Sie die Ergebnisse nach Schweregrad und wählen Sie das schlechteste aus. Die Reihenfolge des Schweregrads vom schlechtesten zum besten lautet: translationAmbiguousimpossible,invalid,,satisfiable,valid.

SEVERITY_ORDER = { "tooComplex": 0, "translationAmbiguous": 0, "impossible": 1, "invalid": 2, "satisfiable": 3, "valid": 4, "noTranslations": 5, } def get_aggregate_result(findings): """Return the worst finding type from a list of findings.""" worst = None worst_severity = float("inf") for finding in findings: finding_type, _ = get_finding_type(finding) severity = SEVERITY_ORDER.get(finding_type, 0) if severity < worst_severity: worst_severity = severity worst = finding_type return worst

Behandeln Sie die Validierungsergebnisse in Ihrer Anwendung

Verwenden Sie das Gesamtergebnis, um zu entscheiden, was Ihre Anwendung als Nächstes tun soll. In der folgenden Tabelle sind die empfohlenen Maßnahmen für jeden Ergebnistyp zusammengefasst.

Ergebnis Bedeutung Empfohlene Aktion
valid Die Antwort ist mathematisch bewiesen, dass sie unter Berücksichtigung der Prämissen und Ihrer Versicherungsregeln korrekt ist. Senden Sie die Antwort an den Benutzer weiter. Protokollieren Sie das Ergebnis zu Prüfungszwecken (sieheErstellen Sie einen Audit-Trail).
invalid Die Antwort widerspricht Ihren Richtlinienregeln. Das contradictingRules Feld gibt an, gegen welche Regeln verstoßen wurde. Schreiben Sie die Antwort mithilfe des Feedbacks zu automatisiertem Denken neu (sieheSchreiben Sie ungültige Antworten mithilfe von AR-Feedback um). Wenn das Umschreiben nach mehreren Versuchen fehlschlägt, blockieren Sie die Antwort und geben Sie eine Ausweichmeldung zurück.
satisfiable Die Antwort ist unter einigen Bedingungen korrekt, aber nicht unter allen. Sie ist nicht falsch, aber sie ist unvollständig — sie erwähnt nicht alle Anforderungen. Schreiben Sie die Antwort um, sodass sie die fehlenden Bedingungen enthält. Verwenden Sie dieclaimsFalseScenario, um zu ermitteln, was fehlt. Alternativ können Sie Ihr LLM dem Benutzer klärende Fragen stellen lassen.
impossible Die Prämissen sind widersprüchlich oder die Richtlinie enthält widersprüchliche Regeln. Bitten Sie den Benutzer, seine Eingabe zu erläutern (siehe). Stellen Sie klärende Fragen Wenn das Problem weiterhin besteht, deutet dies möglicherweise auf ein politisches Problem hin. Lesen Sie den Qualitätsbericht.
translationAmbiguous Die Eingabe hat mehrere gültige Interpretationen. Die Übersetzungsmodelle waren sich nicht einig darüber, wie die natürliche Sprache politischen Variablen zugeordnet werden sollte. Bitten Sie den Benutzer um Klarstellung, um die Unklarheit zu lösen. Verwenden Sie die differenceScenarios Felder options und, um gezielte Fragen zur Klärung zu stellen.
tooComplex Die Eingabe überschreitet die Verarbeitungsgrenzen für logische Analysen. Vereinfachen Sie die Eingabe, indem Sie sie in kleinere Teile aufteilen, oder geben Sie eine Ausweichmeldung zurück, in der erklärt wird, dass die Antwort nicht verifiziert werden konnte.
noTranslations Die Eingabe ist für den Bereich Ihrer Richtlinie nicht relevant. Es konnten keine Richtlinienvariablen zugeordnet werden. Der Inhalt dieser Richtlinie ist nicht zum Thema gehörend. Stellen Sie die Antwort ohne AR-Validierung bereit oder verwenden Sie andere Leitplankenkomponenten (z. B. Themenrichtlinien), um themenfremde Inhalte zu behandeln.

Schreiben Sie ungültige Antworten mithilfe von AR-Feedback um

Das leistungsstärkste Integrationsmuster für automatische Argumentationsprüfungen ist die Umschreibschleife: Wenn eine Antwort invalid oder lautet, erstellt Ihre Anwendung eine Aufforderungsatisfiable, die die ursprüngliche Antwort, die spezifischen Ergebnisse und die Richtlinienregeln enthält, und fordert dann den LLM auf, die Antwort neu zu schreiben, damit sie mit der Richtlinie konsistent ist. Die umgeschriebene Antwort wird erneut validiert, und die Schleife wird fortgesetzt, bis die Antwort vorliegt valid oder eine maximale Anzahl von Iterationen erreicht ist.

Der Schleifenfluss wird neu geschrieben

LLM generates initial response │ ▼ Validate with ApplyGuardrail ◄──────────────────┐ │ │ ▼ │ ┌─────┴─────┐ │ │ │ │ VALID Not VALID │ │ │ │ ▼ ▼ │ Done Construct rewriting prompt │ with findings + rules │ │ │ ▼ │ LLM rewrites response │ │ │ ▼ │ Max iterations? ──── No ────────────────┘ │ Yes │ ▼ Return best response with warning

Konstruieren Sie die Aufforderung zum Umschreiben

Die Aufforderung zum Umschreiben sollte drei Informationen aus den AR-Ergebnissen enthalten:

  1. Die ursprüngliche Antwort, bei der die Überprüfung fehlgeschlagen ist.

  2. Das konkrete Ergebnis — einschließlich der übersetzten Prämissen, Behauptungen und der widersprüchlichen oder unterstützenden Regeln.

  3. Eine Anweisung, die Antwort so umzuschreiben, dass sie den politischen Regeln entspricht.

Beispiel für eine Vorlage für eine Aufforderung zum Umschreiben:

The following response was checked against our policy and found to be {finding_type}. Original response: {original_response} The validation found the following issue: - Premises (what was understood from the input): {premises} - Claims (what was asserted): {claims} - Contradicting rules: {contradicting_rules} Please rewrite the response so that it is consistent with the policy document. Keep the same helpful tone and answer the user's question accurately based on the rules. If you cannot provide an accurate answer without more information, explain what additional information is needed.
Tipp

Nehmen Sie den Inhalt von Retrieval Augmented Generation (RAG) immer in Ihre Umschreibanfragen oder die Richtlinienregeln auf, damit das LLM über den gesamten Kontext verfügt, den es beim Umschreiben benötigt. Die Vorlage für die Umschreibaufforderung enthält die spezifischen Ergebnisdetails, während die Systemaufforderung den umfassenderen politischen Kontext darstellt. Dieser Ansatz mit zwei Kontexten wird im Beispiel für einen Open-Source-Chatbot zum Umschreiben demonstriert.

Bewährte Methoden zum Umschreiben

  • Legen Sie eine maximale Anzahl von Iterationen fest. Die Umschreibschleife sollte eine feste Grenze haben (normalerweise 2—5 Iterationen), um Endlosschleifen zu vermeiden. Wenn die Antwort immer noch nicht valid die maximale Anzahl von Iterationen erreicht hat, geben Sie die beste Antwort mit einer Warnung zurück oder greifen Sie auf eine Standardnachricht zurück.

  • Verarbeiten Sie die Ergebnisse in der Reihenfolge ihrer Priorität. Wenn mehrere Ergebnisse zurückgegeben werden, behandeln Sie zuerst das schwerwiegendste Ergebnis. Die Reihenfolge des Schweregrads ist: translationAmbiguousimpossible,invalid,,satisfiable,valid.

  • Nehmen Sie den Richtlinienkontext in die Systemaufforderung auf. Das LLM benötigt entweder Zugriff auf das Quelldokument oder auf die vollständigen Richtlinienregeln, um es korrekt neu schreiben zu können. Sie können eine Wissensdatenbank verwenden, um Ihre Dokumente in die Generierungsanfrage aufzunehmen, oder die ExportAutomatedReasoningPolicyVersion API verwenden, um die Richtliniendefinition abzurufen und für das LLM zu formatieren.

  • Protokollieren Sie jede Iteration. Notieren Sie die ursprüngliche Antwort, die Ergebnisse, die Aufforderung zum Umschreiben und die neu geschriebene Antwort für jede Iteration. Dieser Prüfpfad ist für das Debuggen und die Einhaltung von Vorschriften von Nutzen (siehe). Erstellen Sie einen Audit-Trail

Stellen Sie klärende Fragen

Wenn Automated Reasoning impossible Ergebnisse oder Ergebnisse überprüft translationAmbiguoussatisfiable, verfügt das LLM möglicherweise nicht über genügend Informationen, um die Antwort korrekt neu zu formulieren. In diesen Fällen kann Ihre Anwendung den Benutzer um eine Klarstellung bitten und die Antworten dann in den nächsten Validierungsversuch einfließen lassen.

Wann sollten Sie um eine Klarstellung bitten

  • translationAmbiguous— Die Eingabe hat mehrere gültige Interpretationen. Das options Feld zeigt die konkurrierenden Interpretationen, und das differenceScenarios Feld zeigt, wie sie sich in der Praxis unterscheiden. Verwenden Sie diese, um gezielte Fragen zur spezifischen Ambiguität zu stellen.

  • satisfiable— Die Antwort ist unter einigen Bedingungen korrekt, aber nicht unter allen. Das claimsFalseScenario zeigt die Bedingungen, unter denen die Antwort falsch wäre. Fragen Sie den Benutzer nach diesen spezifischen Bedingungen.

  • impossible— Die Eingabe enthält widersprüchliche Aussagen. Bitten Sie den Benutzer, den Widerspruch zu klären.

  • Das Umschreiben schlägt fehl — Wenn das LLM die Antwort nicht so umschreiben kann, dass sie valid nach mehreren Versuchen erscheint, benötigt es möglicherweise zusätzlichen Kontext vom Benutzer. Bitten Sie das LLM, auf der Grundlage der Ergebnisse klärende Fragen zu stellen.

Muster der Klärung

Der Klärungsablauf funktioniert wie folgt:

  1. Extrahieren Sie die mehrdeutigen Variablen oder fehlenden Bedingungen aus den AR-Ergebnissen.

  2. Generieren Sie klärende Fragen — entweder programmatisch anhand der Ergebnisfelder oder indem Sie den LLM bitten, Fragen auf der Grundlage der Ergebnisse zu formulieren.

  3. Präsentieren Sie die Fragen dem Benutzer und sammeln Sie Antworten.

  4. Integrieren Sie die Antworten in den Kontext und generieren Sie eine neue Antwort.

  5. Bestätigen Sie die neue Antwort mitApplyGuardrail.

Beispiel: Generieren Sie anhand eines Ergebnisses klärende satisfiable Fragen

def generate_clarifying_questions(finding_data, user_question): """Ask the LLM to generate clarifying questions from a SATISFIABLE finding.""" claims_true = json.dumps( finding_data.get("claimsTrueScenario", {}), indent=2, default=str ) claims_false = json.dumps( finding_data.get("claimsFalseScenario", {}), indent=2, default=str ) prompt = ( f"A user asked: {user_question}\n\n" f"The answer is correct when these conditions hold:\n{claims_true}\n\n" f"But incorrect when these conditions hold:\n{claims_false}\n\n" f"Generate 1-3 short, specific questions to ask the user to determine " f"which conditions apply to their situation. Format each question on " f"its own line." ) return generate_response(prompt, "You are a helpful assistant.")

Open-source Beispiel für einen Chatbot neu schreiben

Eine vollständige Implementierung der auf dieser Seite beschriebenen Muster im Produktionsstil finden Sie unter Automated Reasoning checks rewriting chatbot. GitHub Diese Beispielanwendung demonstriert:

  • Eine iterative Umschreibschleife, in der ungültige Antworten auf der Grundlage von Feedback aus dem Bereich Automated Reasoning automatisch korrigiert werden.

  • Follow-up stellt Fragen, wenn das LLM zusätzlichen Kontext vom Benutzer benötigt, um es korrekt umzuschreiben.

  • Ein Timeout-Mechanismus, der die Verarbeitung automatisch wieder aufnimmt, wenn Benutzer auf Fragen zur Klärung nicht antworten.

  • Das Einfügen von Richtlinienkontexten in LLM-Eingabeaufforderungen ermöglicht es dem LLM, beim Umschreiben auf die vollständigen Richtlinienregeln zu verweisen.

  • JSON-Auditprotokollierung jeder Validierungsiteration zur Einhaltung von Vorschriften und zum Debuggen.

Das Beispiel verwendet ein Python/Flask Backend mit einem React-Frontend und kommuniziert mit Amazon Bedrock für LLM-Inferenz und Amazon Bedrock Guardrails zur Validierung über die API. ApplyGuardrail

Anmerkung

Die Beispielanwendung bezieht den Richtlinieninhalt direkt in die Eingabeaufforderungen zur LLM-Generierung ein, um alle Richtlinien für automatisiertes Denken zu unterstützen, ohne dass Dokumente hochgeladen werden müssen. In einer Produktionsbereitstellung würden Sie in der Regel RAG-Inhalte verwenden oder dem LLM das Originaldokument in natürlicher Sprache anstelle des Quellcodes der Richtlinie für automatisiertes Denken zuleiten.

Erstellen Sie einen Audit-Trail

Die Ergebnisse von Automated Reasoning liefern einen mathematisch überprüfbaren Validitätsnachweis. Für regulierte Branchen und Compliance-Szenarien ist dieser Nachweis ein wichtiges Unterscheidungsmerkmal. Sie können nachweisen, dass eine KI-Reaktion anhand bestimmter politischer Regeln mit spezifischen Variablenzuweisungen verifiziert und nicht nur anhand von Mustern oder Wahrscheinlichkeiten bewertet wurde.

Um einen effektiven Prüfpfad zu erstellen, protokollieren Sie die folgenden Informationen für jede Überprüfungsanfrage:

  • Zeitstempel und Anfrage-ID. Wann die Validierung stattgefunden hat und eine eindeutige Kennung für die Anfrage.

  • Inhalt eingeben. Die Benutzerfrage und die LLM-Antwort, die validiert wurden.

  • Typ und Details werden gefunden. Das Validierungsergebnis (validinvalid, usw.), die übersetzten Prämissen und Behauptungen sowie die unterstützenden oder widersprüchlichen Regeln.

  • Die ergriffenen Maßnahmen. Was hat Ihre Bewerbung mit dem Ergebnis gemacht — die Antwort zugestellt, sie umgeschrieben, um Klarstellung gebeten oder sie blockiert.

  • Verlauf neu schreiben. Wenn die Antwort neu geschrieben wurde, protokollieren Sie jede Iteration: die ursprüngliche Antwort, die Aufforderung zum Umschreiben, die neu geschriebene Antwort und das Überprüfungsergebnis für jede Iteration.

  • Version der Richtlinie. Die Guardrail-Version und die Richtlinienversion, die für die Validierung verwendet wurden. Dadurch wird sichergestellt, dass Sie das Überprüfungsergebnis später reproduzieren können.

Beispiel: Struktur der Audit-Logeinträge

{ "timestamp": "2025-07-21T14:30:00Z", "request_id": "req-abc123", "guardrail_id": "your-guardrail-id", "guardrail_version": "1", "user_question": "Am I eligible for parental leave?", "llm_response": "Yes, you are eligible for parental leave.", "validation_result": "valid", "findings": [ { "type": "valid", "premises": "isFullTime = true, tenureMonths = 24", "claims": "eligibleForParentalLeave = true", "supporting_rules": ["A1B2C3D4E5F6"] } ], "action_taken": "served_response", "rewrite_iterations": 0 }
Tipp

Speichern Sie Auditprotokolle in einem dauerhaften, manipulationssicheren Speicher wie Amazon CloudWatch Logs oder Amazon S3 mit aktivierter Objektsperre. Für Compliance-Szenarien sollten Sie in Erwägung ziehen, Lake zur Abfrage von Auditprotokollen in Ihrem gesamten Unternehmen zu verwenden.