Wie „zero data retention" (keine Datenspeicherung), oder ZDR, auf dieses Feature angewendet wird, erfährst du unter API und Datenspeicherung.
Diese Seite führt durch einen vollständigen Tool-Use-Roundtrip über zwei Turns mit aktiviertem Thinking: Claude denkt, fordert einen Tool-Aufruf an, erhält das Ergebnis und schließt seine Antwort ab, wobei die Thinking-Blöcke bei jedem Schritt korrekt behandelt werden. Die vollständigen Regeln findest du auf der Seite Thinking, in Thinking mit Tool-Nutzung und Thinking-Blöcke bewahren; diese Seite zeigt diese Regeln angewendet in ausführbarem Code.
Jeder Link führt zur vollständigen Erläuterung auf der Thinking-Seite:
auto oder none: tool_choice-Optionen, die Tool-Nutzung erzwingen, geben bei manuellem erweitertem Denken (thinking: {type: "enabled"}) einen Fehler zurück; adaptives Thinking unterstützt erzwungene Tool-Nutzung.redacted_thinking-Blöcken löst einen 400-Fehler aus.Die Beispiele verwenden adaptives Thinking; bei Modellen, die nur erweitertes Denken unterstützen, ersetze es durch thinking: {type: "enabled", budget_tokens: N}. Die Roundtrip-Regeln sind identisch.
Das Beispiel definiert ein get_weather-Tool, lässt Claude denken und einen Tool-Aufruf anfordern und gibt dann das Tool-Ergebnis zusammen mit dem Assistant-Turn zurück, der exakt so zurückgegeben wird, wie er empfangen wurde, einschließlich des Thinking-Blocks.
Stelle die erste Anfrage mit einem verfügbaren Tool
Sende eine Anfrage mit aktiviertem adaptivem Thinking und dem definierten Tool. Abgesehen vom thinking-Parameter ist dies eine standardmäßige Tool-Nutzung-Anfrage:
client = anthropic.Anthropic()
weather_tool = {
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {"location": {"type": "string", "description": "City name"}},
"required": ["location"],
},
}
# Erste Anfrage - Claude antwortet mit Denkprozess und Tool-Anfrage
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[weather_tool],
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
)
print(response)Erfasse das Content-Array, um es zurückzugeben
Du solltest thinking-, text- und tool_use-Blöcke im Antwort-Content sehen, wenn Claude sich in diesem Durchlauf für das Denken entschieden hat (bei einfacheren Anfragen kann der adaptive Modus den Thinking-Block überspringen). Behalte dieses Content-Array intakt: Der nächste Schritt sendet es wortwörtlich zurück.
Um Thinking-Text wie in dieser Ausgabe zu sehen, füge display: "summarized" zur Anfrage hinzu. Bei Modellen, bei denen display standardmäßig weggelassen wird, einschließlich claude-opus-4-8, kommt das thinking-Feld andernfalls als leerer String zurück, wobei nur die signature befüllt ist. In beiden Fällen gibst du das Content-Array unverändert zurück; siehe Steuerung der Thinking-Anzeige.
{
"content": [
{
"type": "thinking",
"thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`...",
"signature": "BDaL4VrbR2Oj0hO4XpJxT28J5T...."
},
{
"type": "text",
"text": "I can help you get the current weather information for Paris. Let me check that for you"
},
{
"type": "tool_use",
"id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
"name": "get_weather",
"input": {
"location": "Paris"
}
}
]
}Gib das Tool-Ergebnis zurück und den Assistant-Turn wortwörtlich wieder
Führe das Tool auf deiner Seite aus und sende dann eine zweite Anfrage, die der Konversation zwei Nachrichten anhängt. Die erste ist der Assistant-Content, der exakt so zurückgegeben wird, wie er empfangen wurde, sodass der Thinking-Block neben dem tool_use-Block unverändert bleibt. Die zweite ist eine User-Nachricht, die das tool_result enthält.
Jedes Beispiel ist ein eigenständiges Skript: Es wiederholt die erste Anfrage und sendet dann sofort die Folgeanfrage unter Verwendung der gerade erhaltenen Antwort.
client = anthropic.Anthropic()
weather_tool = {
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {"location": {"type": "string", "description": "City name"}},
"required": ["location"],
},
}
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[weather_tool],
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
)
# Extrahiere den tool_use-Block, um seine ID für das Tool-Ergebnis zu erhalten
tool_use_block = next(block for block in response.content if block.type == "tool_use")
# Rufe deine tatsächliche Wetter-API auf, hier würde dein eigentlicher API-Aufruf stehen
# Nehmen wir an, das ist die Antwort, die wir zurückbekommen
weather_data = {"temperature": 88}
# Zweite Anfrage – füge den Assistant-Turn und das Tool-Ergebnis hinzu
continuation = client.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[weather_tool],
messages=[
{"role": "user", "content": "What's the weather in Paris?"},
# Gib den Assistant-Inhalt exakt so zurück, wie er empfangen wurde. Wenn ein Thinking-
# Block vorhanden ist, muss er den tool_use-Block begleiten.
{"role": "assistant", "content": response.content},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": tool_use_block.id,
"content": f"Current temperature: {weather_data['temperature']}°F",
}
],
},
],
)
print(continuation)Lies die finale Antwort
Du solltest sehen, wie Claude den Turn mit Text abschließt. Da Interleaved Thinking im adaptiven Modus automatisch ist, kann die Fortsetzung auch mit einem neuen Thinking-Block vor dem finalen Text beginnen:
{
"content": [
{
"type": "text",
"text": "Currently in Paris, the temperature is 88°F (31°C)"
}
]
}„Interleaved thinking" (verschachteltes Denken) ermöglicht es Claude, zwischen Tool-Aufrufen zu denken und über jedes Tool-Ergebnis nachzudenken, bevor es darauf reagiert. Das Konzept und die Verfügbarkeit pro Modell werden in Interleaved Thinking auf der Thinking-Seite behandelt; Interleaving ändert, wo Thinking-Blöcke erscheinen, nicht ob Tool-Aufrufe verkettet werden können. Der folgende Vergleich zeigt, was Interleaved Thinking in einem Workflow mit zwei Tools verändert:
Die Übersicht: Thinking aktivieren, Thinking-Ausgabe lesen und die vollständigen Regeln für Tool-Nutzung, Caching und Streaming nachlesen.
Steuere mit Effort-Levels und promptbasierter Anleitung, wie oft und wie tief Claude denkt.
Manuelle Thinking-Budgets bei älteren Modellen: budget_tokens-Mechanik und Migration zu adaptiv.
Was this page helpful?