---
title: "Verificar modelo e uso"
description: "Use o log de chamadas e cinco verificações para conferir o modelo, o uso de tokens e o custo de cada chamada."
headingIds: {"Log de chamadas":"section-1","Cinco verificações":"section-2","Executar as quatro primeiras com um script":"section-3","Blocos thinking":"section-4","Ao encontrar inconsistências":"section-5","Perguntas frequentes":"section-6"}
---

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

Documentação mantida por [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Fontes e correções](https://1zheai.com/en/editorial/).

Encontrou um erro? [Contate o suporte](mailto:support@1zheai.com) com o endereço da página e uma descrição. Não envie chaves de API ou credenciais de conta.

</aside>
## Log de chamadas

Cada chamada é registrada no [log de chamadas](/pt/docs/usage-logs/) 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

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 |

<Warning>

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.

</Warning>

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

```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
```

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.

## 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"`:

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

## Ao encontrar inconsistências

Envie um e-mail para support@1zheai.com 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

<AccordionGroup>
<Accordion title="Perguntar ao modelo &quot;quem é você&quot; é 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.

</Accordion>
<Accordion title="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](/pt/docs/quickstart-claude-code/). Se isso ocorrer sem o uso do Claude Code, envie o horário da requisição para support@1zheai.com.

</Accordion>
</AccordionGroup>
