Verificar modelo e uso
Use o log de chamadas e cinco verificações para conferir o modelo, o uso de tokens e o custo de cada chamada.
Log de chamadas
Seção intitulada "Log de chamadas"Cada chamada é registrada no log de chamadas do console, listando o modelo, o uso de tokens de entrada, saída, leitura de cache e escrita de cache, além do custo.
Cinco verificações
Seção intitulada "Cinco verificações"As verificações abaixo comparam o formato público da API da Anthropic, para detectar diferenças nos campos e no formato retornados.
| Verificação | Resultado esperado | O que observar |
|---|---|---|
1. Campo model retornado | Coincide com o ID do modelo solicitado | Retorna outro nome de modelo, ou o campo está ausente |
| 2. Leitura de cache | A mesma requisição que atende às condições de cache é enviada duas vezes dentro da validade do cache; na segunda, cache_read_input_tokens é maior que 0 | Sempre 0, ou usage não contém campos de cache |
| 3. ID de chamada de ferramenta | O id do bloco tool_use começa com toolu_ | Outro formato, ou o modelo não chama a ferramenta conforme solicitado |
| 4. Ordem dos eventos de streaming | Aparecem, nesta ordem, message_start, content_block_start, content_block_delta, message_delta e message_stop | Apenas blocos data: no formato OpenAI, ou eventos ausentes/desordenados |
| 5. Comparação com tarefa real | Use uma tarefa fixa e compare os resultados com a API oficial ou outra fonte confiável | Resultados claramente piores, recusas anormais ou cortes frequentes |
Essas verificações só detectam diferenças de campos e formato; não confirmam por si só o modelo realmente usado. O campo model pode ser reescrito e o formato pode ser imitado.
Executar as quatro primeiras com um script
Seção intitulada "Executar as quatro primeiras com um script"É necessário bash, curl e jq. O script faz cinco pequenas chamadas, uma das quais grava cerca de 18 mil tokens em cache, cobrada pelo preço normal.
#!/usr/bin/env bash# 用法:ONEZHE_API_KEY=sk-你的API密钥 bash verify.sh [模型ID]set -euo pipefailBASE="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:' | uniqO item 3 usa tool_choice: auto. Modelos 5.x, como Sonnet 5.5, não suportam forçar o uso de ferramentas ({"type":"tool"} ou {"type":"any"}) e retornam 400 does not support forced tool_choice.
A saída medida em 2026-10-15 com claude-sonnet-5-5 é a abaixo (o item 1 manteve apenas os campos essenciais):
== 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. 工具调用 IDtoolu_01UPsdyKX8M9fJTTkDoSKHXA== 4. 流式事件序列event: message_startevent: content_block_startevent: pingevent: content_block_deltaevent: content_block_stopevent: message_deltaevent: message_stopO evento ping pode ou não aparecer, e sua posição não é fixa; isso não afeta a avaliação.
Blocos thinking
Seção intitulada "Blocos thinking"Com o thinking habilitado, o bloco thinking retornado traz o campo signature, o que também pode servir como verificação de formato. A escrita nos modelos 5.x difere da dos 4.x; medido em 2026-10-15:
| Modelo | Parâmetro thinking | Resultado |
|---|---|---|
claude-sonnet-4-6 | {"type":"enabled","budget_tokens":1024} | Retorna o bloco thinking, com texto de pensamento e signature |
claude-sonnet-5 | {"type":"enabled","budget_tokens":1024} ou {"type":"adaptive"} | Ambos funcionam |
claude-sonnet-5-5 | {"type":"adaptive"} | Funciona; enviar enabled retorna 400, informando que só é suportado adaptive |
Nos modelos 5.x, o bloco thinking contém por padrão apenas signature, com o texto de pensamento como string vazia. Para ver o resumo do pensamento, adicione "display": "summarized":
"thinking": {"type": "adaptive", "display": "summarized"}Ao usar sites de detecção de terceiros, recomenda-se criar uma chave de API dedicada e excluí-la após o teste.
Ao encontrar inconsistências
Seção intitulada "Ao encontrar inconsistências"Envie um e-mail para [email protected] com o horário da requisição, o ID do modelo, o conteúdo completo da resposta (sem a chave de API) e o item de verificação correspondente. O request id presente na resposta ou na mensagem de erro ajuda a localizar essa chamada.
Perguntas frequentes
Seção intitulada "Perguntas frequentes"Perguntar ao modelo "quem é você" é confiável?
Não é confiável. A apresentação do modelo é influenciada pelo prompt de sistema e, em alguns prompts, ele responde errado a própria versão. Conferir os campos e o formato dos eventos retornados é mais útil.
Escolhi Opus, por que Haiku aparece no log de chamadas?
O Claude Code usa o modelo Haiku para parte das tarefas em segundo plano, e registros correspondentes aparecem no log de chamadas. É possível especificar o modelo usado por essas tarefas com a variável de ambiente ANTHROPIC_DEFAULT_HAIKU_MODEL; veja Integração com o Claude Code. Se isso ocorrer sem o uso do Claude Code, envie o horário da requisição para [email protected].
