Потоковая передача инструментов с точной детализацией доступна на всех моделях и всех платформах без требования бета-заголовка. Она позволяет потоковую передачу значений параметров использования инструментов без буферизации или проверки JSON, снижая задержку при начале получения больших параметров.
При использовании потоковой передачи инструментов с точной детализацией вы можете потенциально получить недействительные или частичные входные данные JSON. Убедитесь, что вы учитываете эти граничные случаи в вашем коде.
Потоковая передача инструментов с точной детализацией доступна на всех моделях и всех платформах (Claude API, Amazon Bedrock, Google Vertex AI и Microsoft Foundry). Чтобы использовать её, установите eager_input_streaming в true для любого инструмента, где вы хотите включить потоковую передачу с точной детализацией, и включите потоковую передачу в вашем запросе.
Вот пример использования потоковой передачи инструментов с точной детализацией с 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'В этом примере потоковая передача инструментов с точной детализацией позволяет Claude передавать строки длинного стихотворения потоком в вызов инструмента make_file без буферизации для проверки того, является ли параметр lines_of_text действительным JSON. Это означает, что вы можете видеть поток параметров по мере его поступления, без необходимости ждать буферизации и проверки всего параметра.
При потоковой передаче инструментов с точной детализацией фрагменты использования инструментов начинают передаваться быстрее и часто бывают длиннее и содержат меньше разрывов слов. Это связано с различиями в поведении разбиения на фрагменты.
Пример:
Без потоковой передачи с точной детализацией (задержка 15 сек):
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'
...С потоковой передачей с точной детализацией (задержка 3 сек):
Chunk 1: '{"query": "TypeScript 5.0 5.1 5.2 5.3'
Chunk 2: ' new features comparison'Поскольку потоковая передача с точной детализацией отправляет параметры без буферизации или проверки JSON, нет гарантии, что результирующий поток завершится действительной строкой JSON.
В частности, если достигнута причина остановки max_tokens, поток может завершиться в середине параметра и может быть неполным. Вам обычно придётся написать специальную поддержку для обработки случаев, когда достигнут max_tokens.
При использовании потоковой передачи инструментов с точной детализацией вы можете получить недействительный или неполный JSON от модели. Если вам нужно передать этот недействительный JSON обратно модели в блоке ответа об ошибке, вы можете обернуть его в объект JSON, чтобы обеспечить правильную обработку (с разумным ключом). Например:
{
"INVALID_JSON": "<your invalid json string>"
}Этот подход помогает модели понять, что содержимое является недействительным JSON, при этом сохраняя исходные неправильно сформированные данные в целях отладки.
При обёртывании недействительного JSON убедитесь, что вы правильно экранируете любые кавычки или специальные символы в строке недействительного JSON, чтобы сохранить действительную структуру JSON в объекте-обёртке.
Was this page helpful?