← Retour au blog
Analyse

Claude Haiku 5.5 : le routage à fort volume valide encore le JSON

Publié le 12/10/2026Mis à jour le 12/10/2026Environ 12 minBoîte à outils JSON

Le fil de cette note

Au 12/10/2026, les notes de version placent Claude Haiku 5.5 (claude-haiku-5-5) au 07/10/2026. Il sert à la classification, au routage, à l'extraction et aux sous-agents. Contexte d'1 M de jetons, sortie jusqu'à 128 k. Le même texte compte environ 30 % de jetons de plus que sur Haiku 4.5. Sur Amazon Bedrock, Structured Outputs n'est pas disponible. Cela inclut output_config.format et les outils strict: true. Les entrées et le JSON final se valident dans le code. Sur l'API Claude, strict existe et chaque objet exige additionalProperties: false. Une réponse peut commencer par un bloc thinking. Pourquoi le contrat est un objet : pourquoi l'IA aime JSON. Ce qu'est Structured Output : sortie structurée IA.

Un routeur de tickets tourne des centaines de milliers de fois par jour. Après le passage de claude-haiku-4-5 à claude-haiku-5-5, priority peut encore arriver comme la chaîne "2", et un note en trop peut atteindre l'exécuteur. Bedrock n'a pas de grammaire. Le Schema local est la porte avant l'exécution.

Ce que la doc écrit vraiment

  • Rôle : fort volume, faible latence. Classification, routage, extraction, sous-agents. La pensée adaptative est activée par défaut. output_config.effort échange qualité et vitesse.
  • Fenêtre : contexte de 200 k à 1 M, sortie de 64 k à 128 k. Les jetons de pensée comptent dans max_tokens. Une petite limite peut s'arrêter après un bloc thinking avec stop_reason: "max_tokens" avant tout texte.
  • Structured Outputs : le point 11 dit que Haiku 5.5 sur Amazon Bedrock n'a pas la fonction. Cela couvre output_config.format et les outils strict: true. La phrase nomme Bedrock.
  • Outils forcés : Haiku 5.5 accepte tool_choice any et un outil nommé. La réponse commence par l'appel, sans bloc thinking. Pour réfléchir d'abord, envoyer {"type":"auto"} et dire dans le prompt quand appeler l'outil.
  • Les anciens champs renvoient 400 : budget_tokens, temperature autre que 1, top_p autre que 0,99, tout top_k, les deux paramètres ensemble, et le préremplissage assistant. Le remplacement documenté est Structured Outputs, ou un outil avec enum. Sur Bedrock ces deux chemins manquent : la validation reste locale.

Une ligne. La carte à fort volume a un nouvel identifiant. La contrainte de forme ne l'a pas suivie sur Bedrock. Garder un JSON Schema capable de refuser un mauvais objet avant toute exécution.

Identifiants sur cinq plateformes

claude-haiku-5-5 est un identifiant fixe, sans suffixe de date ni alias :

{
  "claude_api": "claude-haiku-5-5",
  "amazon_bedrock": "anthropic.claude-haiku-5-5",
  "claude_platform_on_aws": "claude-haiku-5-5",
  "google_cloud": "claude-haiku-5-5",
  "microsoft_foundry": "claude-haiku-5-5"
}

Haiku 4.5 sur l'API Claude est claude-haiku-4-5-20251001 ou claude-haiku-4-5, sur Bedrock anthropic.claude-haiku-4-5, sur Google Cloud claude-haiku-4-5@20251001. Le même texte fait environ 30 % de jetons de plus. Recompter avec model: "claude-haiku-5-5". Le prompt cacheable minimal passe de 4 096 à 512 jetons.

Pas de strict sur Bedrock

La phrase officielle : Structured outputs aren't available for Claude Haiku 5.5 on Amazon Bedrock. Décrire le format dans le prompt, ou utiliser un outil sans strict, puis valider la sortie dans le code.

Sur l'API Claude, les sorties JSON cadrent ce que le modèle dit. L'usage strict valide les paramètres. Ils partagent un sous-ensemble de JSON Schema. Haiku 5.5 sur Bedrock n'offre ni l'un ni l'autre. Classification et extraction se revérifient après tool_use.input ou le texte.

Le guide Sonnet 5.5 reprend la même limite Bedrock, et tool_choice any et tool y renvoient 400. Haiku 5.5 accepte encore les deux forçages. Ne pas partager une branche « forcer l'appel » entre les deux cartes. Un appel forcé sur Haiku saute le bloc de pensée.

Le contrat strict sur l'API Claude

strict: true est au sommet de la définition. La page officielle utilise claude-opus-5-5. Ce route_ticket suit les mêmes règles. C'est un échantillon local, pas un extrait des notes de version :

{
  "model": "claude-haiku-5-5",
  "max_tokens": 1024,
  "tool_choice": { "type": "auto" },
  "tools": [{
    "name": "route_ticket",
    "description": "Classify a support ticket into a queue.",
    "strict": true,
    "input_schema": {
      "type": "object",
      "properties": {
        "queue": { "type": "string", "enum": ["billing", "access", "bug"] },
        "priority": { "type": "integer" }
      },
      "required": ["queue", "priority"],
      "additionalProperties": false
    }
  }]
}

Un objet final passe par output_config.format, type json_schema. L'ancien nom output_format sans en-tête bêta renvoie 400. L'en-tête est structured-outputs-2025-11-13.

{
  "output_config": { "format": { "type": "json_schema", "schema": {
    "type": "object",
    "properties": {
      "queue": { "type": "string", "enum": ["billing", "access", "bug"] },
      "priority": { "type": "integer" }
    },
    "required": ["queue", "priority"],
    "additionalProperties": false
  }}}
}

computer_toolset_20260801 et browser_toolset_20260801 refusent strict: true. Sur l'API Claude et Google Cloud, Haiku 5.5 remplace computer_20250124 par cet ensemble. Sur Bedrock, computer_20251124 et l'en-tête computer-use-2025-11-24.

Le premier bloc n'est pas toujours la réponse

La pensée adaptative est activée par défaut. Sans champ thinking, la réponse peut commencer par un ou plusieurs blocs thinking. Par défaut le champ est vide et seule une signature revient. Résumé : thinking: {"type":"adaptive","display":"summarized"}. Choisir par type.

{
  "content": [
    { "type": "thinking", "thinking": "", "signature": "EqQB..." },
    { "type": "tool_use", "id": "toolu_01AbCd", "name": "route_ticket", "input": { "queue": "billing", "priority": 2 } }
  ]
}

Les jetons de pensée comptent dans max_tokens. Avec stop_reason: "max_tokens", la sortie peut manquer le Schema. stop_reason: "refusal" reste un HTTP 200, est facturé, et le texte du refus prime sur le Schema. Haiku 5.5 a des classifieurs de sûreté et pas de repli serveur. Demander un raisonnement pas à pas dans un champ peut déclencher un refus reasoning_extraction. Avec un tool_choice forcé, la réponse commence à l'appel et n'a pas de bloc de pensée.

Sous-ensemble, enums et taille

additionalProperties d'un objet doit valoir false. minimum, maximum, multipleOf, minLength, maxLength, enums complexes, schémas récursifs et $ref externes renvoient 400. minItems ne supporte que 0 et 1.

Au plus 20 outils strict: true par requête. Les paramètres absents de required totalisent au plus 24. anyOf ou un tableau de types comme ["string","null"] : au plus 16. Au-delà, 400 avec « Schema is too complex for compilation. » Délai de compilation : 180 secondes. Les enums de chaînes ne garantissent pas la casse, et la requête peut quand même renvoyer 200.

Même avec strict sur l'API Claude, l'intervalle, la casse et un JSON tronqué se revérifient localement. Sur Bedrock, pas de strict :

{
  "ok": { "queue": "billing", "priority": 2 },
  "string_priority": { "queue": "billing", "priority": "2" },
  "extra_note": { "queue": "bug", "priority": 1, "note": "user is angry" },
  "missing_queue": { "priority": 3 }
}

Vérifier dans la boîte à outils

Ce minimum / maximum ne va pas dans un Schema strict, sinon l'API renvoie 400. Il sert seulement de porte locale :

{
  "type": "object",
  "properties": {
    "queue": { "type": "string", "enum": ["billing", "access", "bug"] },
    "priority": { "type": "integer", "minimum": 1, "maximum": 3 }
  },
  "required": ["queue", "priority"],
  "additionalProperties": false
}
  1. Coller la définition et les quatre entrées dans le formatage JSON et confirmer le parse.
  2. Avec JSON → Schema, partir de ok, puis ajouter enum, required et additionalProperties: false. Laisser l'intervalle sur la copie locale.
  3. Passer les trois mauvaises entrées dans la validation Schema. Elles doivent échouer. ok doit passer.
  4. Reprendre le contrat dans les appels de fonction et la sortie structurée. Le chemin Bedrock n'a pas de strict.

Les données restent dans le navigateur. Obtenir d'abord un objet qui refuse une priorité chaîne et un note en trop, puis changer l'identifiant pour claude-haiku-5-5.

Questions fréquentes

Haiku 5.5 accepte-t-il encore un tool_choice forcé ?

Oui. any et un outil nommé. La réponse commence à l'appel, sans bloc de pensée. Pour réfléchir d'abord, auto et le moment dans le prompt.

Pourquoi strict est-il absent sur Bedrock ?

La liste dit que Haiku 5.5 sur Amazon Bedrock n'a pas Structured Outputs. output_config.format et strict: true manquent. Valider dans le code.

Pourquoi le premier bloc content est-il un thinking vide ?

La pensée adaptative est activée par défaut. Le champ thinking est vide, seule une signature revient. Choisir tool_use ou text par type.

additionalProperties peut-il valoir true ?

Pas sur strict ni sur les sorties JSON. Il doit valoir false. Les contraintes numériques et de longueur sont hors sous-ensemble. Les vérifier localement.

Est-ce la même note que le changement d'outil en cours de conversation ?

Non. L'autre est tool_addition et mcp_tool_listing, dans le schéma d'outil en cours. Celle-ci est le chemin de validation Haiku 5.5.

En bref

Au 12/10/2026, la note de version de Claude Haiku 5.5 est datée du 07/10/2026. L'identifiant est claude-haiku-5-5, sur Bedrock anthropic.claude-haiku-5-5. Bedrock n'a pas Structured Outputs, donc strict: true n'y est pas disponible. Sur l'API Claude, strict existe, les objets exigent additionalProperties: false, et une requête admet au plus 20 outils strict. Une réponse peut commencer par un thinking vide. Un tool_choice forcé saute la pensée. Refuser "2" et un note en trop avant de changer l'identifiant.