

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
<a name="structured-output"></a>

Strukturierte Ausgaben sind eine Funktion in Amazon Bedrock, die sicherstellt, dass Modellantworten benutzerdefinierten JSON-Schemas und Tooldefinitionen entsprechen, wodurch der Bedarf an benutzerdefinierten Analyse- und Validierungsmechanismen in KI-Produktionsbereitstellungen reduziert wird.

## Vorteile
<a name="structured-output-benefits"></a>

Strukturierte Ausgaben adressieren kritische Herausforderungen bei KI-Produktionsanwendungen:
+ **Sorgt für Schema-Compliance** — Eliminiert Fehlerquoten und Wiederholungsschleifen, die bei promptbasierten Ansätzen entstehen
+ **Geringere Komplexität bei der Entwicklung** — macht eine benutzerdefinierte Analyse- und Validierungslogik überflüssig
+ **Niedrigere Betriebskosten — Weniger** fehlgeschlagene Anfragen und Wiederholungsversuche
+ **Produktionssicherheit** — Ermöglicht den sicheren Einsatz von KI-Anwendungen, die vorhersehbare, maschinenlesbare Ergebnisse erfordern

## Funktionsweise
<a name="structured-output-how-it-works"></a>

Strukturierte Ausgaben beschränken die Modellantworten darauf, einem bestimmten Schema zu folgen, wodurch eine valide, analysierbare Ausgabe für die nachfolgende Verarbeitung gewährleistet wird. Sie können strukturierte Ausgaben über zwei sich ergänzende Mechanismen verwenden:

### Ausgabeformat des JSON-Schemas
<a name="structured-output-json-schema"></a>

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 des Tools
<a name="structured-output-strict-tool-use"></a>

Fügen Sie das `strict: true` Kennzeichen zu den Werkzeugdefinitionen hinzu, um die Schemavalidierung für Werkzeugnamen und -eingaben zu aktivieren. Die Werkzeugaufrufen 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](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html).

### Workflow anfordern
<a name="structured-output-request-workflow"></a>

Im Folgenden wird beschrieben, wie Amazon Bedrock Anfragen mit strukturierten Ausgaben verarbeitet:

1. **Erste Anfrage** — Sie fügen entweder ein JSON-Schema über den `response_format` Parameter `outputConfig.textFormat``output_config.format`, oder oder eine Tooldefinition mit dem `strict: true` Flag in Ihre Inferenzanforderung ein.

1. **Schemavalidierung** — Amazon Bedrock validiert das JSON-Schemaformat anhand der unterstützten Teilmenge JSON-Schemadraft 2020-12. Wenn das Schema Funktionen enthält, die nicht unterstützt werden, gibt Amazon Bedrock sofort einen 400-Fehler zurück.

1. **Erstmalige Kompilierung** — Bei neuen Schemas kompiliert Amazon Bedrock die Grammatik, was einige Minuten dauern kann.

1. **Caching** — Erfolgreich kompilierte Grammatiken werden ab dem ersten Zugriff für 24 Stunden zwischengespeichert. Im Cache gespeicherte Grammatiken werden mit AWS-verwalteten Schlüsseln verschlüsselt.

1. **Nachfolgende Anfragen** — Identische Schemas aus demselben Konto verwenden zwischengespeicherte Grammatiken, was zu einer mit Standardanfragen vergleichbaren Inferenzlatenz bei minimalem Overhead führt.

1. **Antwort** — Sie erhalten standardmäßige Inferenzantworten mit strikter Schemakonformität.

## Unterstützte APIs Funktionen
<a name="structured-output-supported-apis"></a>

Sie können strukturierte Ausgaben für die folgenden Amazon Bedrock-Funktionen verwenden:

**Converse und ConverseStream APIs** — Verwenden Sie strukturierte Ausgaben mit dem Converse und ConverseStream APIs für Konversationsinferenzen.

**InvokeModel und InvokeModelWithResponseStream APIs** — Verwenden Sie strukturierte Ausgaben zusammen mit und für InvokeModel Singleturn-Inferenzen InvokeModelWithResponseStream APIs .

**Regionsübergreifende Inferenz** — Verwenden Sie strukturierte Ausgaben innerhalb der regionsübergreifenden Inferenz ohne zusätzliche Einrichtung.

**Batch-Inferenz** — Verwenden Sie strukturierte Ausgaben innerhalb der Batch-Inferenz ohne zusätzliche Einrichtung.

**Anmerkung**  
Strukturierte Ausgaben sind nicht mit Zitaten für anthropische Modelle kompatibel. Wenn Sie Zitate aktivieren, während Sie strukturierte Ausgaben verwenden, gibt das Modell einen 400-Fehler zurück.

## Unterstützte Modelle
<a name="structured-output-supported-models"></a>

Um zu sehen, welche Modelle strukturierte Ausgaben unterstützen, gehen Sie bitte zu [Modelle auf einen Blick](model-cards.md) und wählen Sie das Modell aus, an dem Sie interessiert sind.

## Beispielanfragen
<a name="structured-output-examples"></a>

### Ausgabeformat des JSON-Schemas
<a name="structured-output-json-schema-examples"></a>

Die folgenden Beispiele zeigen, wie das JSON-Schema-Ausgabeformat mit strukturierten Ausgaben verwendet wird.

#### Converse-API
<a name="json-schema-converse"></a>

##### Beispiel ansehen
<a name="w2aac15c32c35c13b3b5b3b1"></a>

```
{
  "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)
<a name="json-schema-invokemodel-claude"></a>

##### Beispiel ansehen
<a name="w2aac15c32c35c13b3b7b3b1"></a>

```
{
  "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 (Modelle mit offenem Gewicht)
<a name="json-schema-invokemodel-openweight"></a>

##### Beispiel ansehen
<a name="w2aac15c32c35c13b3b9b3b1"></a>

```
{
  "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"
  }
}
```

### Strikte Verwendung von Tools
<a name="structured-output-strict-tool-examples"></a>

Die folgenden Beispiele zeigen, wie das Feld Strict bei der Verwendung von Tools verwendet wird.

#### Converse-API
<a name="strict-tool-converse"></a>

##### Beispiel ansehen
<a name="w2aac15c32c35c13b5b5b3b1"></a>

```
{
  "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)
<a name="strict-tool-invokemodel-claude"></a>

##### Beispiel ansehen
<a name="w2aac15c32c35c13b5b7b3b1"></a>

```
{
  "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 (Modelle mit offenem Gewicht)
<a name="strict-tool-invokemodel-openweight"></a>

##### Beispiel ansehen
<a name="w2aac15c32c35c13b5b9b3b1"></a>

```
{
  "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
}
```