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.
Holen Sie sich validierte JSON-Ergebnisse aus Modellen
Strukturierte Ausgaben sind eine Funktion auf Amazon Bedrock, die sicherstellt, dass Modellantworten den benutzerdefinierten JSON-Schemas und Tooldefinitionen entsprechen, wodurch der Bedarf an benutzerdefinierten Analyse- und Validierungsmechanismen in KI-Produktionsumgebungen reduziert wird.
Vorteile
Strukturierte Ausgaben adressieren kritische Herausforderungen bei KI-Anwendungen in der Produktion:
-
Stellt die Einhaltung der Schemata sicher — Eliminiert Fehlerraten und Wiederholungsschleifen bei Ansätzen, die auf Eingabeaufforderungen basieren
-
Geringere Entwicklungskomplexität — Es ist keine benutzerdefinierte Analyse- und Validierungslogik erforderlich
-
Niedrigere Betriebskosten — Reduziert fehlgeschlagene Anfragen und Wiederholungsversuche
-
Produktionszuverlässigkeit — Ermöglicht den sicheren Einsatz von KI-Anwendungen, die vorhersehbare, maschinenlesbare Ergebnisse erfordern
Funktionsweise
Strukturierte Ausgaben beschränken die Modellreaktionen darauf, einem bestimmten Schema zu folgen, wodurch eine gültige, analysierbare Ausgabe für die nachgelagerte Verarbeitung gewährleistet wird. Sie können strukturierte Ausgaben mithilfe von zwei sich ergänzenden Mechanismen verwenden:
Ausgabeformat des JSON-Schemas
Verwenden Sie für InvokeModel APIs mit Anthropic Claude-Modellen das output_config.format Anforderungsfeld. Verwenden Sie bei Modellen mit offenem Gewicht das response_format Anforderungsfeld. Verwenden Sie für Converse-APIs das outputConfig.textFormat Anforderungsfeld. Die Antwort des Modells entspricht dem angegebenen JSON-Schema.
Strikte Verwendung von Werkzeugen
Fügen Sie das strict: true Flag zu den Werkzeugdefinitionen hinzu, um die Schemavalidierung von Werkzeugnamen und Eingaben zu aktivieren. Die Werkzeugaufrufe des Modells folgen dann dem definierten Werkzeugeingabeschema.
Diese Mechanismen können unabhängig voneinander oder zusammen in derselben Anfrage verwendet werden. Weitere Informationen finden Sie in der Bedrock-API-Dokumentation.
Workflow anfordern
Im Folgenden wird beschrieben, wie Amazon Bedrock Anfragen mit strukturierten Ausgaben verarbeitet:
-
Erste Anfrage — Sie fügen entweder ein JSON-Schema über den
response_formatParameteroutputConfig.textFormatoutput_config.format, oder oder eine Tooldefinition mit demstrict: trueFlag in Ihre Inferenzanfrage ein. -
Schemavalidierung — Amazon Bedrock validiert das JSON-Schemaformat anhand der unterstützten Teilmenge des JSON-Schemadrafts 2020-12. Wenn das Schema nicht unterstützte Funktionen enthält, gibt Amazon Bedrock sofort einen Fehler 400 zurück.
-
First-time Kompilierung — Für neue Schemas kompiliert Amazon Bedrock die Grammatik, was bis zu ein paar Minuten dauern kann.
-
Caching — Erfolgreich kompilierte Grammatiken werden ab dem ersten Zugriff 24 Stunden lang zwischengespeichert. Zwischengespeicherte Grammatiken werden mit verwalteten Schlüsseln verschlüsselt. AWS
-
Nachfolgende Anfragen — Identische Schemas aus demselben Konto verwenden zwischengespeicherte Grammatiken, was zu einer Inferenzlatenz führt, die mit Standardanfragen bei minimalem Overhead vergleichbar ist.
-
Antwort — Sie erhalten Standard-Inferenzantworten mit strikter Einhaltung des Schemas.
Unterstützte JSON-Schemafunktionen
Die folgenden Funktionen von JSON Schema Draft 2020-12 werden unterstützt:
Alle Grundtypen:
object,,array,,string,integer,numberbooleannullenum(nur Zeichenketten, Zahlen, boolesche Werte oder Nullen)const, (mitanyOfEinschränkungenallOf)$ref$def, unddefinitions(nur interne Referenzen)Zeichenkettenformate:
date-timetime,date,duration,email,hostname,uri,ipv4,ipv6,uuidArray
minItems(nur Werte 0 und 1)
Die folgenden Funktionen werden nicht unterstützt:
Rekursive Schemas
Externe Referenzen
$refNumerische Beschränkungen (
minimum,maximum,multipleOf)Einschränkungen für Zeichenketten (
minLength,maxLength)additionalPropertiesauf etwas anderes gesetzt alsfalse
Unterstützte APIs oder Funktionen
Sie können strukturierte Ausgaben für die folgenden Amazon Bedrock-Funktionen verwenden:
| API oder Funktion | Unterstützt | Hinweise |
|---|---|---|
| Converse und APIs ConverseStream | Ja | Konversationale Inferenz. |
| InvokeModelund APIs InvokeModelWithResponseStream | Ja | Single-turn Inferenz. |
| Cross-Region Inferenz | Ja | Funktioniert ohne zusätzliche Einrichtung. |
| Batch-Inferenz | Ja | Funktioniert ohne zusätzliche Einrichtung. |
AnthropicNachrichten-API auf dem bedrock-mantle Endpunkt (https://bedrock-mantle.{region}.api.aws/anthropic/v1/messages) |
Nein | Der output_config.format Parameter wird mit einem Fehler vom Typ 400 zurückgewiesen. Um strukturierte Ausgaben mit Anthropic Claude Modellen zu verwenden, senden Sie die Anfrage über die Converse-API oder die InvokeModel API auf dem bedrock-runtime Endpunkt. |
Anmerkung
Strukturierte Ausgaben sind mit Zitationen für anthropische Modelle nicht kompatibel. Wenn Sie Zitationen aktivieren, während Sie strukturierte Ausgaben verwenden, gibt das Modell den Fehler 400 zurück.
Unterstützte Modelle
Um zu sehen, welche Modelle strukturierte Ausgaben unterstützen, gehen Sie bitte zu Modelle auf einen Blick und wählen Sie das Modell aus, an dem Sie interessiert sind.
Beispiele für Anfragen
Ausgabeformat des JSON-Schemas
Die folgenden Beispiele zeigen, wie das JSON-Schema-Ausgabeformat mit strukturierten Ausgaben verwendet wird.
Converse-API
{ "messages": [ { "role": "user", "content": [ { "text": "Given the following unstructured data, extract it into the provided structure." }, { "text": "..." } ] } ], "outputConfig": { "textFormat": { "type": "json_schema", "structure": { "jsonSchema": { "schema": "{\"type\": \"object\", \"properties\": {\"title\": {\"type\": \"string\", \"description\": \"title\"}, \"summary\": {\"type\": \"string\", \"description\": \"summary\"}, \"next_steps\": {\"type\": \"string\", \"description\": \"next steps\"}}, \"required\": [\"title\", \"summary\", \"next_steps\"], \"additionalProperties\": false}", "name": "data_extraction", "description": "Extract structured data from unstructured text" } } } } }
InvokeModel (Anthropischer Claude)
{ "anthropic_version": "bedrock-2023-05-31", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Given the following unstructured data, extract it into the provided structure." }, { "type": "text", "text": "..." } ] } ], "max_tokens": 3000, "temperature": 1.0, "output_config": { "format": { "type": "json_schema", "schema": { "type": "object", "properties": { "title": { "type": "string", "description": "title" }, "summary": { "type": "string", "description": "summary" }, "next_steps": { "type": "string", "description": "next steps" } }, "required": [ "title", "summary", "next_steps" ], "additionalProperties": false } } } }
InvokeModel (Open-weight Modelle)
{ "messages": [ { "role": "user", "content": "Given the following unstructured data, extract it into the provided structure." }, { "role": "user", "content": "..." } ], "inferenceConfig": { "maxTokens": 3000, "temperature": 1.0 }, "response_format": { "json_schema": { "name": "summarizer", "schema": { "type": "object", "properties": { "title": { "type": "string", "description": "title" }, "summary": { "type": "string", "description": "summary" }, "next_steps": { "type": "string", "description": "next steps" } }, "required": [ "title", "summary", "next_steps" ], "additionalProperties": false } }, "type": "json_schema" } }
Strikter Einsatz von Werkzeugen
Die folgenden Beispiele zeigen, wie das strikte Feld bei der Verwendung von Werkzeugen verwendet wird.
Converse-API
{ "messages": [ { "role": "user", "content": [ { "text": "What's the weather like in New York?" } ] } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "inputSchema": { "json": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ] } } } } ] } }
InvokeModel (Anthropischer Claude)
{ "anthropic_version": "bedrock-2023-05-31", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What's the weather like in San Francisco?" } ] } ], "max_tokens": 3000, "temperature": 1.0, "tools": [ { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "input_schema": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ], "additionalProperties": false } } ] }
InvokeModel (Open-weight Modelle)
{ "messages": [ { "role": "user", "content": "What's the weather like in San Francisco?" } ], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ] } } } ], "tool_choice": "auto", "max_tokens": 2000, "temperature": 1.0 }