Saltar al contenido
Español

Verificar el modelo y el uso

Verifica el modelo, el uso de tokens y el costo de cada llamada con el registro de llamadas y cinco comprobaciones.

Cada llamada se registra en el registro de llamadas de la consola, que enumera el modelo, el uso de tokens de entrada, salida, lectura de caché y escritura de caché, así como el costo.

Las siguientes comprobaciones se basan en el formato público de la interfaz de Anthropic y sirven para detectar diferencias en los campos y el formato de la respuesta.

ComprobaciónResultado esperadoQué vigilar
1. Campo model devueltoCoincide con el ID del modelo solicitadoDevuelve otro nombre de modelo, o el campo no está presente
2. Lectura de cachéLa misma solicitud que cumple las condiciones de caché se envía dos veces dentro de la vigencia de la caché; el cache_read_input_tokens de la segunda es mayor que 0Siempre es 0, o usage no contiene campos de caché
3. ID de llamada a herramientasEl id del bloque tool_use comienza con toolu_Otro formato, o el modelo no llama a las herramientas según lo requerido
4. Orden de eventos de streamingAparecen en orden message_start, content_block_start, content_block_delta, message_delta y message_stopSolo bloques data: en formato OpenAI, o eventos ausentes o en orden incorrecto
5. Contraste con una tarea realComparar los resultados de una tarea fija con la API oficial u otra fuente confiableResultados claramente peores, rechazos anómalos o cortes frecuentes

Estas comprobaciones solo pueden detectar diferencias en los campos y el formato; no pueden confirmar por sí solas el modelo realmente utilizado. El campo model puede ser alterado y el formato también puede ser imitado.

Se necesitan bash, curl y jq. El script realiza cinco llamadas pequeñas, una de las cuales escribe en caché aproximadamente 18 mil tokens, facturados al precio 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

El punto 3 usa tool_choice: auto. Los modelos 5.x como Sonnet 5.5 no admiten la especificación forzada de herramientas ({"type":"tool"} o {"type":"any"}) y devuelven un error 400 does not support forced tool_choice.

La siguiente salida fue medida el 2026-10-15 con claude-sonnet-5-5 (el punto 1 solo conserva los campos clave):

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

Si el evento ping aparece o en qué posición no es fijo y no afecta la evaluación.

Con thinking activado, el bloque thinking devuelto incluye el campo signature, que también puede usarse como comprobación de formato. La forma de escribirlo en los modelos 5.x difiere de la de los 4.x; medido el 2026-10-15:

ModeloParámetro thinkingResultado
claude-sonnet-4-6{"type":"enabled","budget_tokens":1024}Devuelve el bloque thinking, con texto de pensamiento y signature
claude-sonnet-5{"type":"enabled","budget_tokens":1024} o {"type":"adaptive"}Ambas funcionan
claude-sonnet-5-5{"type":"adaptive"}Funciona; al pasar enabled devuelve 400 indicando que solo se admite adaptive

El bloque thinking de los modelos 5.x solo contiene signature por defecto, y el texto de pensamiento es una cadena vacía. Para ver el resumen del pensamiento, añade "display": "summarized":

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

Al usar sitios web de detección de terceros, se recomienda crear una clave API dedicada y eliminarla después de la prueba.

Envía un correo a [email protected] con la hora de la solicitud, el ID del modelo, el contenido completo de la respuesta (elimina la clave API) y el punto de comprobación correspondiente. El request id en la respuesta o en el mensaje de error puede ayudar a localizar esta llamada.

¿Es fiable preguntar directamente al modelo «¿Quién eres?»?

No es fiable. La autodescripción del modelo está influenciada por el prompt del sistema y, con ciertos prompts, puede responder incorrectamente su propia versión. Verificar los campos devueltos y el formato de los eventos es más útil.

Elegí Opus, ¿por qué aparece Haiku en el registro de llamadas?

Claude Code usa el modelo Haiku para algunas tareas en segundo plano, y en el registro de llamadas aparecen los registros correspondientes. Puedes especificar el modelo para este tipo de tareas con la variable de entorno ANTHROPIC_DEFAULT_HAIKU_MODEL; consulta integración con Claude Code. Si esto ocurre sin usar Claude Code, envía la hora de la solicitud a [email protected].