Lo streaming granulare degli strumenti è generalmente disponibile su tutti i modelli e tutte le piattaforme, senza richiedere alcun header beta. Abilita lo streaming dei valori dei parametri di utilizzo degli strumenti senza buffering o convalida JSON, riducendo la latenza per iniziare a ricevere parametri di grandi dimensioni.
Quando si utilizza lo streaming granulare degli strumenti, è possibile ricevere input JSON non validi o parziali. Assicurati di tenere conto di questi casi limite nel tuo codice.
Lo streaming granulare degli strumenti è disponibile su tutti i modelli e tutte le piattaforme (Claude API, Amazon Bedrock, Google Vertex AI e Microsoft Foundry). Per utilizzarlo, imposta eager_input_streaming su true su qualsiasi strumento per il quale desideri abilitare lo streaming granulare e abilita lo streaming sulla tua richiesta.
Ecco un esempio di come utilizzare lo streaming granulare degli strumenti con l'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 questo esempio, lo streaming granulare degli strumenti consente a Claude di trasmettere i versi di una lunga poesia nella chiamata dello strumento make_file senza buffering per convalidare se il parametro lines_of_text è un JSON valido. Ciò significa che puoi vedere il parametro trasmesso mentre arriva, senza dover aspettare che l'intero parametro venga memorizzato nel buffer e convalidato.
Con lo streaming granulare degli strumenti, i chunk di utilizzo degli strumenti iniziano a trasmettere più velocemente e spesso sono più lunghi e contengono meno interruzioni di parola. Ciò è dovuto a differenze nel comportamento del chunking.
Esempio:
Senza streaming granulare (ritardo di 15 secondi):
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'
...Con streaming granulare (ritardo di 3 secondi):
Chunk 1: '{"query": "TypeScript 5.0 5.1 5.2 5.3'
Chunk 2: ' new features comparison'Poiché lo streaming granulare invia parametri senza buffering o convalida JSON, non c'è garanzia che il flusso risultante si completi in una stringa JSON valida.
In particolare, se viene raggiunto il motivo di arresto max_tokens, il flusso potrebbe terminare a metà di un parametro e potrebbe essere incompleto. Generalmente dovrai scrivere un supporto specifico per gestire quando viene raggiunto max_tokens.
Quando si utilizza lo streaming granulare degli strumenti, è possibile ricevere JSON non valido o incompleto dal modello. Se devi passare questo JSON non valido al modello in un blocco di risposta di errore, puoi avvolgerlo in un oggetto JSON per garantire una gestione corretta (con una chiave ragionevole). Ad esempio:
{
"INVALID_JSON": "<your invalid json string>"
}Questo approccio aiuta il modello a comprendere che il contenuto è JSON non valido preservando al contempo i dati malformati originali a scopo di debug.
Quando avvolgi JSON non valido, assicurati di sfuggire correttamente eventuali virgolette o caratteri speciali nella stringa JSON non valida per mantenere una struttura JSON valida nell'oggetto wrapper.
Was this page helpful?