Feingranulares Tool-Streaming ist auf allen Modellen und allen Plattformen allgemein verfügbar und erfordert keinen Beta-Header. Es ermöglicht das Streaming von Tool-Parameterwerten ohne Pufferung oder JSON-Validierung und reduziert die Latenz beim Empfang großer Parameter.
Bei der Verwendung von feingranularem Tool-Streaming können Sie möglicherweise ungültige oder unvollständige JSON-Eingaben erhalten. Stellen Sie sicher, dass Sie diese Grenzfälle in Ihrem Code berücksichtigen.
Feingranulares Tool-Streaming ist auf allen Modellen und allen Plattformen verfügbar (Claude API, Amazon Bedrock, Google Vertex AI und Microsoft Foundry). Um es zu verwenden, setzen Sie eager_input_streaming auf true für jedes Tool, bei dem Sie feingranulares Streaming aktivieren möchten, und aktivieren Sie Streaming in Ihrer Anfrage.
Hier ist ein Beispiel für die Verwendung von feingranularem Tool-Streaming mit der API:
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 65536,
"tools": [
{
"name": "make_file",
"description": "Write text to a file",
"eager_input_streaming": true,
"input_schema": {
"type": "object",
"properties": {
"filename": {
"type": "string",
"description": "The filename to write text to"
},
"lines_of_text": {
"type": "array",
"description": "An array of lines of text to write to the file"
}
},
"required": ["filename", "lines_of_text"]
}
}
],
"messages": [
{
"role": "user",
"content": "Can you write a long poem and make a file called poem.txt?"
}
],
"stream": true
}' | jq '.usage'In diesem Beispiel ermöglicht feingranulares Tool-Streaming Claude, die Zeilen eines langen Gedichts in den Tool-Aufruf make_file zu streamen, ohne zu puffern, um zu validieren, ob der Parameter lines_of_text gültiges JSON ist. Das bedeutet, dass Sie den Parameter sehen können, während er ankommt, ohne auf die gesamte Pufferung und Validierung des Parameters warten zu müssen.
Mit feingranularem Tool-Streaming beginnen Tool-Use-Chunks schneller zu streamen und sind oft länger und enthalten weniger Wortumbrüche. Dies ist auf Unterschiede im Chunking-Verhalten zurückzuführen.
Beispiel:
Ohne feingranulares Streaming (15s Verzögerung):
Chunk 1: '{"'
Chunk 2: 'query": "Ty'
Chunk 3: 'peScri'
Chunk 4: 'pt 5.0 5.1 '
Chunk 5: '5.2 5'
Chunk 6: '.3'
Chunk 8: ' new f'
Chunk 9: 'eatur'
...Mit feingranularem Streaming (3s Verzögerung):
Chunk 1: '{"query": "TypeScript 5.0 5.1 5.2 5.3'
Chunk 2: ' new features comparison'Da feingranulares Streaming Parameter ohne Pufferung oder JSON-Validierung sendet, gibt es keine Garantie dafür, dass der resultierende Stream in einem gültigen JSON-String endet.
Insbesondere wenn der Stop-Grund max_tokens erreicht wird, kann der Stream mitten in einem Parameter enden und unvollständig sein. Sie müssen in der Regel spezifische Unterstützung schreiben, um zu handhaben, wenn max_tokens erreicht wird.
Bei Verwendung von feingranularem Tool-Streaming können Sie ungültiges oder unvollständiges JSON vom Modell erhalten. Wenn Sie dieses ungültige JSON in einem Fehlerantwortblock an das Modell zurückgeben müssen, können Sie es in einem JSON-Objekt einwickeln, um eine ordnungsgemäße Verarbeitung zu gewährleisten (mit einem angemessenen Schlüssel). Zum Beispiel:
{
"INVALID_JSON": "<your invalid json string>"
}Dieser Ansatz hilft dem Modell zu verstehen, dass der Inhalt ungültiges JSON ist, während die ursprünglichen fehlerhaften Daten zu Debugging-Zwecken erhalten bleiben.
Beim Einwickeln von ungültigem JSON müssen Sie alle Anführungszeichen oder Sonderzeichen in der ungültigen JSON-Zeichenkette ordnungsgemäß escapen, um eine gültige JSON-Struktur im Wrapper-Objekt zu erhalten.
Was this page helpful?