Pular para o conteúdo
Português

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.

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.

As verificações abaixo comparam o formato público da API da Anthropic, para detectar diferenças nos campos e no formato retornados.

VerificaçãoResultado esperadoO que observar
1. Campo model retornadoCoincide com o ID do modelo solicitadoRetorna outro nome de modelo, ou o campo está ausente
2. Leitura de cacheA 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 0Sempre 0, ou usage não contém campos de cache
3. ID de chamada de ferramentaO 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 streamingAparecem, nesta ordem, message_start, content_block_start, content_block_delta, message_delta e message_stopApenas blocos data: no formato OpenAI, ou eventos ausentes/desordenados
5. Comparação com tarefa realUse uma tarefa fixa e compare os resultados com a API oficial ou outra fonte confiávelResultados 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.

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

O 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):

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

O evento ping pode ou não aparecer, e sua posição não é fixa; isso não afeta a avaliação.

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:

ModeloParâmetro thinkingResultado
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":

json
"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.

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.

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].