---
title: "Vérifier le modèle et l'utilisation"
description: "Vérifiez le modèle, l'utilisation des tokens et les frais de chaque appel à l'aide du journal d'appels et de cinq contrôles."
headingIds: {"Journal d’appels":"section-1","Cinq contrôles":"section-2","Réaliser les quatre premiers contrôles avec un script":"section-3","Blocs thinking":"section-4","En cas d’incohérence":"section-5","Questions fréquentes":"section-6"}
---

<aside className="docs-publication" data-pagefind-ignore>

Documentation maintenue par [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Sources et corrections](https://1zheai.com/en/editorial/).

Vous avez trouvé une erreur ? [Contactez l'assistance](mailto:support@1zheai.com) en indiquant l'adresse de la page et une description. N'envoyez pas de clés API ni d'identifiants de compte.

</aside>
## Journal d’appels

Chaque appel est enregistré dans le [journal d'appels](/fr/docs/usage-logs/) de la console, qui liste le modèle, l'utilisation des tokens en entrée, en sortie, en lecture de cache et en écriture de cache, ainsi que les frais.

## Cinq contrôles

Les contrôles suivants comparent le format public de l'interface Anthropic afin de détecter les différences dans les champs et le format des réponses.

| Contrôle | Résultat attendu | Points de vigilance |
|---|---|---|
| 1. Champ `model` renvoyé | Identique à l'ID du modèle demandé | Un autre nom de modèle est renvoyé, ou le champ est absent |
| 2. Lecture de cache | La même requête satisfaisant les conditions de cache est envoyée deux fois dans la durée de validité du cache ; le `cache_read_input_tokens` de la seconde est supérieur à 0 | Toujours à 0, ou aucun champ de cache dans `usage` |
| 3. ID d'appel d'outil | Le `id` du bloc `tool_use` commence par `toolu_` | Autre format, ou le modèle n'appelle pas l'outil comme demandé |
| 4. Ordre des événements en streaming | Apparition dans l'ordre de `message_start`, `content_block_start`, `content_block_delta`, `message_delta` et `message_stop` | Seulement des blocs `data:` au format OpenAI, ou événements manquants, ordre incorrect |
| 5. Comparaison sur une tâche réelle | Comparer les résultats d'une tâche fixe avec l'API officielle ou une autre source fiable | Résultats nettement dégradés, refus anormaux ou troncatures fréquentes |

<Warning>

Ces contrôles ne permettent de détecter que des différences de champs et de format ; ils ne peuvent pas confirmer à eux seuls le modèle réellement utilisé. Le champ `model` peut être falsifié et le format peut être imité.

</Warning>

## Réaliser les quatre premiers contrôles avec un script

Nécessite `bash`, `curl` et `jq`. Le script effectue cinq petits appels, dont un avec une écriture d'environ 18 000 tokens en cache, facturée au tarif normal.

```bash title="verify.sh"
#!/usr/bin/env bash
# 用法：ONEZHE_API_KEY=sk-你的API密钥 bash verify.sh [模型ID]
set -euo pipefail
BASE="https://1zheai.com"
MODEL="${1:-claude-sonnet-5-5}"
H=(-H "x-api-key: $ONEZHE_API_KEY" -H "anthropic-version: 2023-06-01" -H "content-type: application/json")

echo "== 1. model 字段"
curl -s "$BASE/v1/messages" "${H[@]}" \
  -d "$(jq -n --arg m "$MODEL" '{model:$m,max_tokens:16,messages:[{role:"user",content:"ping"}]}')" \
  | jq 'if .error then .error else {id, model, usage} end'

echo "== 2. 缓存：同一请求发两次，看第二次的 cache_read_input_tokens"
LONG=$(printf '这是一段用来测试缓存的固定文本，内容不重要，长度够就行。%.0s' {1..600})
BODY=$(jq -n --arg m "$MODEL" --arg t "$LONG" '{model:$m,max_tokens:16,
  system:[{type:"text",text:$t,cache_control:{type:"ephemeral"}}],
  messages:[{role:"user",content:"ping"}]}')
for i in 1 2; do
  curl -s "$BASE/v1/messages" "${H[@]}" -d "$BODY" | jq -c 'if .error then .error else .usage end'
done

echo "== 3. 工具调用 ID"
curl -s "$BASE/v1/messages" "${H[@]}" \
  -d "$(jq -n --arg m "$MODEL" '{model:$m,max_tokens:256,
    tools:[{name:"get_weather",description:"查询城市天气",
      input_schema:{type:"object",properties:{city:{type:"string"}},required:["city"]}}],
    tool_choice:{type:"auto"},
    messages:[{role:"user",content:"北京今天天气怎么样"}]}')" \
  | jq -r 'if .error then .error.message else (.content[]? | select(.type=="tool_use") | .id) end'

echo "== 4. 流式事件序列"
curl -sN "$BASE/v1/messages" "${H[@]}" \
  -d "$(jq -n --arg m "$MODEL" '{model:$m,max_tokens:32,stream:true,messages:[{role:"user",content:"数到三"}]}')" \
  | grep '^event:' | uniq
```

Le contrôle n° 3 utilise `tool_choice: auto`. Les modèles 5.x comme Sonnet 5.5 ne prennent pas en charge la spécification forcée d'un outil (`{"type":"tool"}` ou `{"type":"any"}`) et renvoient une erreur 400 `does not support forced tool_choice`.

Sortie obtenue le 2026-10-15 avec `claude-sonnet-5-5` (le contrôle n° 1 ne conserve que les champs clés) :

```text
== 1. model 字段
{
  "id": "msg_011Cg3Esh8zeEdLeXAPVALKe",
  "model": "claude-sonnet-5-5",
  "usage": {
    "input_tokens": 518,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "output_tokens": 12,
    ...
  }
}
== 2. 缓存：同一请求发两次，看第二次的 cache_read_input_tokens
{"input_tokens":23,"cache_creation_input_tokens":17920,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":17920,"ephemeral_1h_input_tokens":0},"output_tokens":4,"output_tokens_details":{"thinking_tokens":0},"service_tier":"standard","inference_geo":"global"}
{"input_tokens":23,"cache_creation_input_tokens":0,"cache_read_input_tokens":17920,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":4,"output_tokens_details":{"thinking_tokens":0},"service_tier":"standard","inference_geo":"global"}
== 3. 工具调用 ID
toolu_01UPsdyKX8M9fJTTkDoSKHXA
== 4. 流式事件序列
event: message_start
event: content_block_start
event: ping
event: content_block_delta
event: content_block_stop
event: message_delta
event: message_stop
```

L'apparition de l'événement `ping` et sa position ne sont pas fixes et n'affectent pas le jugement.

## Blocs thinking

Lorsque thinking est activé, le bloc `thinking` renvoyé comporte le champ `signature`, qui peut également servir de contrôle de format. La syntaxe des modèles 5.x diffère de celle des 4.x ; testé le 2026-10-15 :

| Modèle | Paramètre `thinking` | Résultat |
|---|---|---|
| `claude-sonnet-4-6` | `{"type":"enabled","budget_tokens":1024}` | Renvoie un bloc `thinking` avec le texte de réflexion et `signature` |
| `claude-sonnet-5` | `{"type":"enabled","budget_tokens":1024}` ou `{"type":"adaptive"}` | Les deux fonctionnent |
| `claude-sonnet-5-5` | `{"type":"adaptive"}` | Fonctionne ; envoyer `enabled` renvoie 400, indiquant que seul adaptive est pris en charge |

Par défaut, le bloc `thinking` des modèles 5.x ne contient que `signature`, le texte de réflexion étant une chaîne vide. Pour afficher le résumé de réflexion, ajoutez `"display": "summarized"` :

```json
"thinking": {"type": "adaptive", "display": "summarized"}
```


Lors de l'utilisation d'un site de détection tiers, il est recommandé de créer une clé API dédiée puis de la supprimer après le test.

## En cas d’incohérence

Envoyez un e-mail à support@1zheai.com en indiquant l'heure de la requête, l'ID du modèle, le contenu complet de la réponse (sans la clé API) et le contrôle correspondant. Le request id présent dans la réponse ou le message d'erreur peut aider à localiser cet appel.

## Questions fréquentes

<AccordionGroup>
<Accordion title="Demander directement au modèle « Qui es-tu ? » est-il fiable ?">

Peu fiable. L'auto-présentation du modèle est influencée par le prompt système et, sous certains prompts, il peut se tromper sur sa propre version. Vérifier les champs renvoyés et le format des événements est plus pertinent.

</Accordion>
<Accordion title="Opus sélectionné, pourquoi Haiku apparaît-il dans les journaux d'appels ?">

Claude Code utilise le modèle Haiku pour traiter certaines tâches d'arrière-plan ; des enregistrements correspondants apparaissent dans le journal d'appels. Vous pouvez spécifier le modèle utilisé pour ces tâches avec la variable d'environnement `ANTHROPIC_DEFAULT_HAIKU_MODEL`, voir [Intégration de Claude Code](/fr/docs/quickstart-claude-code/). Si ce cas se produit sans utiliser Claude Code, envoyez l'heure de la requête à support@1zheai.com.

</Accordion>
</AccordionGroup>
