Modell und Verbrauch überprüfen
Mit dem Aufrufprotokoll und fünf Prüfungen das Modell, den Token-Verbrauch und die Kosten jedes Aufrufs überprüfen.
Aufrufprotokoll
Abschnitt mit dem Titel „Aufrufprotokoll“Jeder Aufruf wird im Aufrufprotokoll der Konsole protokolliert und listet das Modell, den Token-Verbrauch für Eingabe, Ausgabe, Cache-Lesezugriffe und Cache-Schreibzugriffe sowie die Kosten auf.
Fünf Prüfungen
Abschnitt mit dem Titel „Fünf Prüfungen“Die folgenden Prüfungen beziehen sich auf das öffentliche Format der Anthropic-Schnittstelle und dienen dazu, Abweichungen bei den zurückgegebenen Feldern und im Format zu erkennen.
| Prüfung | Erwartetes Ergebnis | Zu beachten |
|---|---|---|
1. Zurückgegebenes model-Feld | Stimmt mit der angeforderten Modell-ID überein | Gibt einen anderen Modellnamen zurück oder das Feld fehlt |
| 2. Cache-Lesezugriff | Dieselbe Anfrage, die die Cache-Bedingungen erfüllt, wird zweimal innerhalb der Cache-Gültigkeitsdauer gesendet; cache_read_input_tokens des zweiten Aufrufs ist größer als 0 | Immer 0 oder usage enthält keine Cache-Felder |
| 3. Tool-Aufruf-ID | id des tool_use-Blocks beginnt mit toolu_ | Anderes Format oder das Modell ruft die Tools nicht wie angefordert auf |
| 4. Reihenfolge der Streaming-Ereignisse | message_start, content_block_start, content_block_delta, message_delta und message_stop treten der Reihe nach auf | Nur data:-Block im OpenAI-Format oder Ereignisse fehlen bzw. sind falsch geordnet |
| 5. Abgleich mit einer realen Aufgabe | Ergebnisse mit einer festen Aufgabe gegen die offizielle API oder andere verlässliche Quellen vergleichen | Deutlich schlechtere Ergebnisse, ungewöhnliche Ablehnungen oder häufige Abbrüche |
Diese Prüfungen können nur Abweichungen bei Feldern und Format erkennen und das tatsächlich verwendete Modell nicht allein bestätigen. model-Felder können umgeschrieben und das Format kann nachgeahmt werden.
Die ersten vier Prüfungen per Skript durchführen
Abschnitt mit dem Titel „Die ersten vier Prüfungen per Skript durchführen“Erforderlich sind bash, curl und jq. Das Skript startet fünf kleine Aufrufe, von denen einer etwa 18.000 Token in den Cache schreibt und zum regulären Preis berechnet wird.
#!/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:' | uniqPrüfung 3 verwendet tool_choice: auto. 5.x-Modelle wie Sonnet 5.5 unterstützen keine erzwungene Tool-Angabe ({"type":"tool"} oder {"type":"any"}) und geben 400 does not support forced tool_choice zurück.
Am 2026-10-15 mit claude-sonnet-5-5 gemessene Ausgabe (bei Prüfung 1 wurden nur die Schlüsselfelder behalten):
== 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_stopOb das ping-Ereignis auftritt und an welcher Stelle, ist nicht festgelegt und beeinflusst die Beurteilung nicht.
thinking-Block
Abschnitt mit dem Titel „thinking-Block“Wenn thinking aktiviert ist, enthält der zurückgegebene thinking-Block das signature-Feld und kann ebenfalls als Formatprüfung verwendet werden. Die Schreibweise unterscheidet sich bei 5.x-Modellen von 4.x; gemessen am 2026-10-15:
| Modell | thinking-Parameter | Ergebnis |
|---|---|---|
claude-sonnet-4-6 | {"type":"enabled","budget_tokens":1024} | Gibt thinking-Block mit Denktext und signature zurück |
claude-sonnet-5 | {"type":"enabled","budget_tokens":1024} oder {"type":"adaptive"} | Beides funktioniert |
claude-sonnet-5-5 | {"type":"adaptive"} | Funktioniert; enabled gibt 400 zurück und weist darauf hin, dass nur adaptive unterstützt wird |
Der thinking-Block von 5.x-Modellen enthält standardmäßig nur signature; der Denktext ist eine leere Zeichenkette. Wenn die Denkzusammenfassung sichtbar sein soll, fügen Sie "display": "summarized" hinzu:
"thinking": {"type": "adaptive", "display": "summarized"}Bei der Verwendung von Drittanbieter-Prüfseiten wird empfohlen, einen neuen, dafür vorgesehenen API-Schlüssel anzulegen und ihn nach dem Test zu löschen.
Bei Unstimmigkeiten
Abschnitt mit dem Titel „Bei Unstimmigkeiten“Senden Sie eine E-Mail an [email protected] und fügen Sie die Anfragezeit, die Modell-ID, den vollständigen Rückgabewert (ohne API-Schlüssel) und den zugehörigen Prüfpunkt bei. Die request id in der Rückgabe oder Fehlermeldung hilft, diesen Aufruf zu lokalisieren.
Häufige Fragen
Abschnitt mit dem Titel „Häufige Fragen“Ist es zuverlässig, das Modell direkt zu fragen „Wer bist du?“
Unzuverlässig. Die Selbstvorstellung des Modells wird vom Systemprompt beeinflusst und kann unter bestimmten Prompts die eigene Version falsch angeben. Die Prüfung der zurückgegebenen Felder und Ereignisformate ist aussagekräftiger.
Opus ausgewählt – warum erscheint im Aufruflog Haiku?
Claude Code verwendet das Haiku-Modell für einige Hintergrundaufgaben; im Aufrufprotokoll erscheinen die entsprechenden Einträge. Mit der Umgebungsvariable ANTHROPIC_DEFAULT_HAIKU_MODEL lässt sich das Modell für solche Aufgaben festlegen, siehe Claude-Code-Anbindung. Wenn dies ohne Claude Code auftritt, senden Sie die Anfragezeit an [email protected].
