← Retour au blog
Analyse

Après le lancement de Claude en hébergement Anthropic sur Google Cloud le 22 octobre 2026, le JSON Schema de la sortie structurée peut-il encore être écrit dans output_config ?

Publié le 26/10/2026 Mis à jour le 26/10/2026 Environ 11 min Boîte à outils JSON

Le fil de cette note

Au 26/10/2026, les notes de version de la plateforme Claude placent Claude Models on Google Cloud (Anthropic managed) au 22/10/2026 : endpoint opéré par Anthropic, permissions via Google Cloud IAM, facturation Marketplace. Bonne nouvelle : la doc indique que le corps de requête est identique à l'API Claude, et les sorties structurées figurent dans la liste des capacités. Le JSON Schema reste dans output_config.format. Ce qui change, c'est l'URL de base, le jeton Bearer et le workspace dans l'URL — pas l'emplacement du schéma. Pour l'API directe, voir à quel niveau écrire output_config ; pour Bedrock et le bloc text, voir sorties structurées sur Bedrock.

Si vous copiez une requête d'extraction depuis Bedrock ou api.anthropic.com vers GCP, trois erreurs reviennent souvent : garder x-api-key ; mettre le workspace seulement dans un en-tête ; supposer que l'en-tête de version 2026-10-21 du 21 octobre est déjà la valeur par défaut dans l'exemple GCP officiel. Le schéma lui-même change rarement de niveau.

Ce que le 22 octobre ouvre vraiment

Au 26/10/2026, d'après les notes de version et la documentation hébergement Anthropic :

  • Endpoint : https://claude.googleapis.com/v1/projects/{project}/locations/global/workspaces/{workspace}/invoke, chemin Messages : .../invoke/v1/messages.
  • Facturation : Google Cloud Marketplace ; activer le produit Claude API pour le projet et lier l'organisation côté Anthropic.
  • Capacités : la doc GA inclut Structured outputs, Tool use (connecteur MCP inclus), Message Batches, Prompt caching, Fast mode (Opus 5.5), etc.
  • Le même jour : la même note de version mentionne aussi Opus 5.5 Fast mode sur Google Cloud — sans conflit avec les sorties structurées, mais modèle de facturation et de latence différent.

Une phrase. Ce qui change, c'est comment vous vous connectez (URL + OAuth Google), pas où va le contrat (toujours output_config.format.schema).

URL de base, workspace et Bearer

Trois différences nettes par rapport à l'API Claude directe :

  1. L'URL de base utilise le chemin projet / workspace sur claude.googleapis.com, pas https://api.anthropic.com.
  2. L'authentification passe par Authorization: Bearer <google-access-token> — ne pas envoyer x-api-key.
  3. L'ID de workspace est dans l'URL — ne pas envoyer l'en-tête anthropic-workspace-id.

Le reste est identique à l'API Claude : anthropic-version, anthropic-beta, corps, streaming et forme de réponse. Le routage au niveau organisation (/v1/organizations/...) avec le préfixe claudeOrganization/invoke sans workspace peut attendre si vous ne faites qu'une extraction Messages ponctuelle.

anthropic-version : aligné sur l'API directe ?

Le 21/10/2026, l'API Claude directe est passée par défaut à anthropic-version: 2026-10-21 (voir la note du 21 octobre), ce qui interdit des champs comme temperature. L'exemple cURL officiel de l'hébergement Anthropic sur Google Cloud indique encore anthropic-version: 2023-06-01 ; la doc partenaire Google Cloud (dernière mise à jour 22/10/2026 UTC) aussi.

La doc dit seulement que « les en-têtes sont identiques à l'API Claude », sans imposer ni interdire 2026-10-21 sur GCP. En pratique :

  • D'abord, suivre l'exemple officiel avec 2023-06-01 pour une requête avec output_config.
  • Si vous voulez unifier l'en-tête de version dans l'entreprise, tester 2026-10-21 dans un projet de test et vérifier les 400 sur les paramètres d'échantillonnage.
  • Ne pas appliquer les restrictions modèle / version de Bedrock (2026-10-21 seulement à partir de 4.7+) à l'hébergement Anthropic GCP — c'est une autre ligne.

Le schéma dans output_config ne change pas

La sortie structurée utilise toujours output_config.format, type vaut json_schema, le contrat est dans l'objet schema. La doc hébergement Anthropic liste Structured outputs parmi les fonctions prises en charge, avec la même sémantique que la page sorties structurées.

curl "https://claude.googleapis.com/v1/projects/$PROJECT/locations/global/workspaces/$WORKSPACE/invoke/v1/messages" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "content-type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "Extract ticket category and priority from the text."
      }
    ],
    "output_config": {
      "format": {
        "type": "json_schema",
        "schema": {
          "type": "object",
          "properties": {
            "category": { "type": "string", "enum": ["billing", "technical", "other"] },
            "priority": { "type": "string", "enum": ["low", "medium", "high", "urgent"] }
          },
          "required": ["category", "priority"],
          "additionalProperties": false
        }
      }
    }
  }'

La réponse se parse toujours en JSON dans un bloc de contenu dont type vaut text, pas comme Bedrock Converse qui enferme le schéma dans une chaîne. Les limites du sous-ensemble (additionalProperties: false, pas de minimum, etc.) sont les mêmes que sur l'API Claude directe.

Dans la même requête, vous pouvez encore mettre strict: true sur un outil ; le connecteur MCP est listé, mais la liste d'outils et le schéma restent deux contrats JSON distincts.

Hébergement Anthropic vs hébergement Google

Sur Google Cloud, il y a deux lignes Claude ; les formes JSON diffèrent — ne pas mélanger les configs :

  • Anthropic managed (cette note) : endpoint API Claude /v1/messages ; model dans le corps JSON ; anthropic-version en en-tête ; sortie structurée via output_config.
  • Google managed (Agent Platform) : URL de prédiction avec le modèle ; corps avec anthropic_version ; streaming via :streamRawPredict. Les anciens ID de modèle snapshot utilisent @ à la place du tiret de date (ex. claude-haiku-4-5@20251001).

Haiku 5.5 vaut claude-haiku-5-5 dans la doc API Claude ; la doc Google managed montre parfois des exemples 4.x avec @. En changeant de mode d'hébergement, corrigez d'abord la chaîne de modèle, puis l'emplacement du schéma.

Vérifier dans la boîte à outils

{
  "ok_body": {
    "model": "claude-opus-5-5",
    "max_tokens": 1024,
    "messages": [{ "role": "user", "content": "Classify this ticket." }],
    "output_config": {
      "format": {
        "type": "json_schema",
        "schema": {
          "type": "object",
          "properties": {
            "category": { "type": "string" },
            "priority": { "type": "string" }
          },
          "required": ["category", "priority"],
          "additionalProperties": false
        }
      }
    }
  },
  "wrong_vertex_shape": {
    "anthropic_version": "vertex-2023-10-16",
    "messages": [{ "role": "user", "content": "Hi" }]
  },
  "ok_ticket": { "category": "billing", "priority": "urgent" },
  "bad_ticket": { "category": "billing", "priority": "2" }
}
  1. Coller les quatre blocs dans le formatage JSON. wrong_vertex_shape est le style Google managed, pas le corps Messages de l'hébergement Anthropic.
  2. Avec JSON → Schema, partir de ok_ticket et confronter ok_body.output_config.format.schema.
  3. Validation de Schema : ok_ticket passe, bad_ticket est refusé (priority hors enum).
  4. Entrées d'outil : appels de fonction ; contrat de sortie : sortie structurée.

Questions fréquentes

Faut-il encore envoyer x-api-key sur l'hébergement Anthropic Google Cloud ?

Non. Utiliser le jeton Bearer Google.

Cette ligne doit-elle envoyer anthropic-version 2026-10-21 comme l'API directe ?

L'exemple officiel reste sur 2023-06-01. Tester sur GCP avant de monter de version.

Faut-il encore additionalProperties: false dans output_config.format.schema ?

Oui. Même sous-ensemble que l'API directe.

Est-ce le même endpoint que l'Agent Platform en hébergement Google ?

Non. URL et corps de requête diffèrent.

Comment se répartit le travail avec la note Bedrock ?

Celle-là : AWS Bedrock ; celle-ci : la connexion GCP Anthropic managed du 22/10/2026.

En bref

Au 26/10/2026, Claude on Google Cloud (Anthropic managed) est daté du 22/10/2026. Le JSON Schema de la sortie structurée reste dans output_config.format.schema. Passez à claude.googleapis.com, workspace dans l'URL, Bearer Google, sans x-api-key. L'exemple officiel garde anthropic-version: 2023-06-01, ce qui peut diverger du défaut direct 2026-10-21 — à valider séparément. Ne pas mélanger avec le corps anthropic_version de l'Agent Platform en hébergement Google. Prochaine étape : le même schéma sur un projet de test GCP, puis une politique d'en-tête de version unifiée.