---
title: "Modell und Verbrauch überprüfen"
description: "Mit dem Aufrufprotokoll und fünf Prüfungen das Modell, den Token-Verbrauch und die Kosten jedes Aufrufs überprüfen."
headingIds: {"Aufrufprotokoll":"section-1","Fünf Prüfungen":"section-2","Die ersten vier Prüfungen per Skript durchführen":"section-3","thinking-Block":"section-4","Bei Unstimmigkeiten":"section-5","Häufige Fragen":"section-6"}
---

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

Dokumentation gepflegt von [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Quellen und Korrekturen](https://1zheai.com/en/editorial/).

Fehler gefunden? [Support kontaktieren](mailto:support@1zheai.com) mit Seitenadresse und Beschreibung. Senden Sie keine API-Schlüssel oder Kontodaten.

</aside>
## Aufrufprotokoll

Jeder Aufruf wird im [Aufrufprotokoll](/de/docs/usage-logs/) 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

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 |

<Warning>

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.

</Warning>

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

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

Prü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):

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

Ob das `ping`-Ereignis auftritt und an welcher Stelle, ist nicht festgelegt und beeinflusst die Beurteilung nicht.

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

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

Senden Sie eine E-Mail an support@1zheai.com 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

<AccordionGroup>
<Accordion title="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.

</Accordion>
<Accordion title="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](/de/docs/quickstart-claude-code/). Wenn dies ohne Claude Code auftritt, senden Sie die Anfragezeit an support@1zheai.com.

</Accordion>
</AccordionGroup>
