Strukturierte Ausgaben mit Anthropic Claude-Modellen

Mit strukturierten Ausgaben können Sie die generierte Ausgabe eines Claude-Modells so einschränken, dass sie genau einem bestimmten JSON-Schema entspricht. Das ist nützlich, um sicherzustellen, dass die Antworten Ihrer Claude-Modelle immer das genaue Format haben, das für nachgelagerte Anwendungen, Datenbanken und Verarbeitungspipelines erforderlich ist.

Strukturierte Ausgaben bieten zwei ergänzende Funktionen, die Sie unabhängig voneinander oder gemeinsam in derselben Anfrage verwenden können:

  • JSON-Ausgaben (output_config.format): Beschränken Sie die Textantwort des Modells auf ein JSON-Objekt, das einem von Ihnen bereitgestellten Schema entspricht. Verwenden Sie diese Funktion, wenn Sie strukturierte Daten aus Text extrahieren, strukturierte Berichte erstellen oder API-Antworten formatieren müssen.
  • Strikte Tool-Nutzung (tools[].strict): Damit wird sichergestellt, dass die Argumente, die das Modell an ein Tool übergibt, mit dem input_schema des Tools übereinstimmen. Verwenden Sie diese Option, wenn Sie typsichere Funktionsaufrufe in agentischen Workflows benötigen.

Weitere Informationen finden Sie in der Dokumentation von Anthropic unter Building with Claude: Structured Outputs und Strict tool use.

Unterstützte Anthropic Claude-Modelle

Die Gemini Enterprise Agent Platform unterstützt strukturierte Ausgaben für alle Anthropic Claude 4.5-Modelle und höher.

Zugriff auf strukturierte Ausgaben steuern

Standardmäßig sind strukturierte Ausgaben durch die Einschränkung constraints/vertexai.allowedPartnerModelFeatures der Organisationsrichtlinie deaktiviert. Wenn Sie strukturierte Ausgaben aktivieren möchten, müssen Sie diese Einschränkung so konfigurieren, dass das Feature structured_outputs explizit zugelassen wird.

Außerdem können Sie die Einschränkung für die Organisationsrichtlinie constraints/vertexai.allowedModels konfigurieren, um den Zugriff auf Claude-Modelle einzuschränken.

Eine detaillierte Anleitung zum Konfigurieren von Einschränkungen für Organisationsrichtlinien finden Sie unter Zugriff auf Model Garden-Modelle steuern.

Anfrage für strukturierte Ausgabe senden

Wenn Sie eine JSON-Ausgabe anfordern möchten, senden Sie eine POST-Anfrage an den Publisher-Modellendpunkt und fügen Sie den Parameter output_config in den Anfragetext ein. Mit dem Parameter output_config wird das JSON-Schema angegeben, dem die Antwort des Modells entsprechen muss.

REST

Im folgenden Beispiel wird gezeigt, wie Sie eine Anfrage an die Agent Platform API senden, um strukturierte Kontaktinformationen aus einer unstrukturierten E-Mail zu extrahieren. Die Antwort ist auf ein JSON-Objekt mit den Feldern name, email, plan_interest und demo_requested beschränkt.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Eine Region, die Anthropic Claude-Modelle unterstützt. Informationen zur Verwendung des globalen Endpunkts finden Sie unter Globalen Endpunkt angeben.
  • MODEL: Ein unterstütztes Claude-Modell, z. B. claude-opus-4-7.
  • ROLE: Die einer Nachricht zugeordnete Rolle. Sie können user oder assistant angeben. In der ersten Nachricht muss die Rolle user verwendet werden. Claude-Modelle arbeiten mit abwechselnden user- und assistant-Runden. Wenn die endgültige Nachricht die Rolle assistant verwendet, wird der Antwortinhalt direkt vom Inhalt dieser Nachricht aus fortgesetzt. Damit können Sie einen Teil der Antwort des Modells einschränken.
  • CONTENT: Der Inhalt, z. B. Text der user- oder assistant-Nachricht. Beispiel: Extract the key information from this email: John Smith (john@example.com) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm.
  • MAX_TOKENS: Maximale Anzahl an Tokens, die in der Antwort generiert werden können. Ein Token besteht aus etwa 3,5 Zeichen. 100 Tokens entsprechen etwa 60–80 Wörtern.

    Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an.

  • STREAM: Ein boolescher Wert, mit dem angegeben wird, ob die Antwort gestreamt wird oder nicht. Legen Sie true fest, um die Antwort zu streamen, und false, um die Antwort auf einmal zurückzugeben. Strukturierte Ausgaben werden in der Regel mit false zurückgegeben.

Im Beispiel werden die folgenden Felder für die strukturierte Ausgabe verwendet. Weitere Informationen zu den einzelnen Feldern finden Sie im Abschnitt Anfragefelder.

  • output_config: Der Konfigurationsblock der obersten Ebene, der die Struktur der Antwort des Modells steuert.
  • output_config.format.type: Auf json_schema setzen, um die Antwort auf ein JSON-Objekt zu beschränken, das dem bereitgestellten Schema entspricht.
  • output_config.format.schema: Ein JSON-Schema, das die erforderliche Struktur der Antwort des Modells definiert. Das Schema muss dem unterstützten JSON-Schema-Subset entsprechen.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict

JSON-Text der Anfrage:

{
  "anthropic_version": "vertex-2023-10-16",
  "messages": [
    {
      "role": "ROLE",
      "content": "CONTENT"
    }
  ],
  "max_tokens": MAX_TOKENS,
  "stream": STREAM,
  "output_config": {
    "format": {
      "type": "json_schema",
      "schema": {
        "type": "object",
        "properties": {
          "name": {"type": "string"},
          "email": {"type": "string"},
          "plan_interest": {"type": "string"},
          "demo_requested": {"type": "boolean"}
        },
        "required": ["name", "email", "plan_interest", "demo_requested"],
        "additionalProperties": false
      }
    }
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten: Das Feld text des Blocks content enthält einen JSON-String, der dem Schema entspricht, das Sie in output_config angegeben haben.

Anfragefelder

Die folgenden Felder sind spezifisch für JSON-Ausgaben. Informationen zu den anderen Anfragefeldern finden Sie in der API-Referenz für Claude-Nachrichten.

  • output_config: Der Konfigurationsblock der obersten Ebene, der die Struktur der Antwort des Modells steuert.
  • output_config.format: Die Formatdefinition für die Ausgabe. Nur der Typ json_schema wird unterstützt.
  • output_config.format.type: Der Typ des zu erzwingenden Ausgabeformats. Legen Sie diesen Wert auf json_schema fest, um die Antwort auf ein JSON-Objekt zu beschränken.
  • output_config.format.schema: Ein JSON-Schema, das die erforderliche Struktur der Antwort des Modells definiert. Strukturierte Ausgaben unterstützen das Standard-JSON-Schema mit einigen Einschränkungen. So muss additionalProperties für Objekte auf false festgelegt sein und numerische oder Stringlängenbeschränkungen werden nicht unterstützt. Eine vollständige Liste der unterstützten und nicht unterstützten Funktionen finden Sie in der Dokumentation zu JSON-Schema-Einschränkungen von Anthropic. Im Schema geben Sie in der Regel Folgendes an:

    • type: Der JSON-Typ des Werts auf dieser Ebene (am häufigsten object für das Stammschema).
    • properties: Eine Zuordnung von Feldnamen zu ihren Typdefinitionen, die jedes Feld beschreibt, das das Modell zurückgeben muss.
    • required: Eine Liste von Attributnamen, die das Modell in seine Antwort aufnehmen muss.
    • additionalProperties: Ein boolescher Wert, der, wenn er auf false gesetzt ist, verhindert, dass das Modell Felder enthält, die nicht in properties deklariert sind.

Strikte Tool-Nutzung

Durch die strikte Verwendung von Tools wird sichergestellt, dass die Argumente, die das Modell an ein Tool übergibt, mit der input_schema des Tools übereinstimmen. Ohne den strikten Modus ruft das Modell möglicherweise ein Tool mit falsch typisierten Argumenten auf (z. B. "2" anstelle von 2) oder lässt erforderliche Felder aus, was Ihre Downstream-Funktionen beeinträchtigen und eine Wiederholungslogik erfordern kann. Wenn der strikte Modus aktiviert ist, verwendet die API die grammatikbeschränkte Stichprobenerhebung, um Folgendes zu gewährleisten:

  • Das Tool name ist immer eines der von Ihnen bereitgestellten Tools.
  • Das Tool input entspricht immer der input_schema des Tools.

Verwenden Sie die strikte Tool-Nutzung, wenn Sie Tool-Parameter validieren, Agent-Workflows erstellen, typsichere Funktionsaufrufe sicherstellen oder komplexe Tools mit verschachtelten Eigenschaften verarbeiten müssen.

Wenn Sie die strikte Tool-Nutzung aktivieren möchten, legen Sie "strict": true als Feld der obersten Ebene in Ihrer Tool-Definition fest, zusammen mit name, description und input_schema.

REST

Das folgende Beispiel zeigt, wie Sie eine Anfrage an die Agent Platform API senden, in der ein striktes get_weather-Tool definiert ist. Das Modell ruft das Tool garantiert mit einem location-String und einem optionalen unit auf, das entweder celsius oder fahrenheit ist.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Eine Region, die Anthropic Claude-Modelle unterstützt. Informationen zur Verwendung des globalen Endpunkts finden Sie unter Globalen Endpunkt angeben.
  • MODEL: Ein unterstütztes Claude-Modell, z. B. claude-opus-4-7.
  • ROLE: Die einer Nachricht zugeordnete Rolle. In der ersten Nachricht muss die Rolle user verwendet werden.
  • CONTENT: Der Inhalt, z. B. Text der user- oder assistant-Nachricht. Beispiel: What is the weather in San Francisco?
  • MAX_TOKENS: Maximale Anzahl an Tokens, die in der Antwort generiert werden können. Ein Token besteht aus etwa 3,5 Zeichen. 100 Tokens entsprechen etwa 60–80 Wörtern.

    Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an.

  • STREAM: Ein boolescher Wert, mit dem angegeben wird, ob die Antwort gestreamt wird oder nicht. Legen Sie true fest, um die Antwort zu streamen, und false, um die Antwort auf einmal zurückzugeben.

In diesem Beispiel werden die folgenden Felder für die strikte Tool-Nutzung verwendet. Weitere Informationen zu den einzelnen Feldern finden Sie im Abschnitt Felder für die strikte Tool-Nutzung.

  • tools[].strict: Ein boolescher Wert, der bei Festlegung auf true das grammatikbeschränkte Sampling für das Tool aktiviert. Das Modell ruft das Tool garantiert mit Argumenten auf, die mit input_schema übereinstimmen.
  • tools[].input_schema: Ein JSON-Schema, das die Argumente definiert, die das Modell an das Tool übergeben kann. Wenn strict true ist, muss das Schema demselben unterstützten JSON-Schema-Subset entsprechen wie das output_config-Schema für JSON-Ausgaben.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict

JSON-Text der Anfrage:

{
  "anthropic_version": "vertex-2023-10-16",
  "messages": [
    {
      "role": "ROLE",
      "content": "CONTENT"
    }
  ],
  "max_tokens": MAX_TOKENS,
  "stream": STREAM,
  "tools": [
    {
      "name": "get_weather",
      "description": "Get the current weather in a given location",
      "strict": true,
      "input_schema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, for example San Francisco, CA"
          },
          "unit": {
            "type": "string",
            "enum": ["celsius", "fahrenheit"]
          }
        },
        "required": ["location"],
        "additionalProperties": false
      }
    }
  ]
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten: Der Inhaltsblock tool_use enthält ein Feld input, dessen Schlüssel und Werttypen garantiert mit dem input_schema des Tools übereinstimmen.

Felder für die strikte Tool-Nutzung

Die folgenden Felder sind spezifisch für die strikte Tool-Nutzung. Informationen zu den anderen Feldern für die Tool-Definition finden Sie in der Dokumentation Tools definieren von Anthropic.

  • tools[].strict: Ein boolescher Wert, der bei Festlegung auf true die grammatikbeschränkte Stichprobenerhebung für das Tool aktiviert. Wenn strict true ist, ist die Tool-Eingabe des Modells auf das Schema in input_schema beschränkt. Der Standardwert ist false.
  • tools[].input_schema: Ein JSON-Schema, das die Argumente definiert, die das Modell an das Tool übergeben kann. Wenn strict gleich true ist, muss das Schema dem gleichen JSON-Schema-Subset entsprechen, das für JSON-Ausgaben verwendet wird. Insbesondere müssen Sie Folgendes beachten:

    • Legen Sie additionalProperties für jedes Objekt im Schema auf false fest.
    • Führen Sie alle Attribute im Array required auf.

    Eine vollständige Liste der unterstützten und nicht unterstützten Funktionen finden Sie in der Dokumentation zu den JSON-Schema-Einschränkungen von Anthropic.