Детализированная потоковая передача инструментов
Детализированная потоковая передача инструментов
Использование инструментов теперь поддерживает детализированную потоковую передачу для значений параметров. Это позволяет разработчикам передавать параметры использования инструментов в потоковом режиме без буферизации / валидации JSON, снижая задержку для начала получения больших параметров.
Детализированная потоковая передача инструментов является бета-функцией. Пожалуйста, убедитесь, что вы оцениваете свои ответы перед использованием в продакшене.
Пожалуйста, используйте эту форму для предоставления обратной связи о качестве ответов модели, самом API или качестве документации — мы не можем дождаться, чтобы услышать от вас!
При использовании детализированной потоковой передачи инструментов вы можете потенциально получить недействительные или частичные JSON входные данные. Пожалуйста, убедитесь, что учитываете эти крайние случаи в своем коде.
Как использовать детализированную потоковую передачу инструментов
Чтобы использовать эту бета-функцию, просто добавьте бета-заголовок fine-grained-tool-streaming-2025-05-14
к запросу использования инструмента и включите потоковую передачу.
Вот пример того, как использовать детализированную потоковую передачу инструментов с API:
В этом примере детализированная потоковая передача инструментов позволяет Claude передавать строки длинного стихотворения в вызов инструмента make_file
без буферизации для проверки того, является ли параметр lines_of_text
действительным JSON. Это означает, что вы можете видеть поток параметров по мере его поступления, не дожидаясь буферизации и валидации всего параметра.
С детализированной потоковой передачей инструментов фрагменты использования инструментов начинают передаваться быстрее и часто бывают длиннее и содержат меньше разрывов слов. Это связано с различиями в поведении фрагментации.
Пример:
Без детализированной потоковой передачи (задержка 15с):
С детализированной потоковой передачей (задержка 3с):
Поскольку детализированная потоковая передача отправляет параметры без буферизации или валидации JSON, нет гарантии, что результирующий поток завершится действительной JSON строкой.
В частности, если достигнута причина остановки max_tokens
, поток может закончиться посередине параметра и может быть неполным. Вам обычно придется написать специальную поддержку для обработки случаев, когда достигается max_tokens
.
Обработка недействительного JSON в ответах инструментов
При использовании детализированной потоковой передачи инструментов вы можете получить недействительный или неполный JSON от модели. Если вам нужно передать этот недействительный JSON обратно модели в блоке ответа об ошибке, вы можете обернуть его в JSON объект для обеспечения правильной обработки (с разумным ключом). Например:
Этот подход помогает модели понять, что содержимое является недействительным JSON, сохраняя при этом исходные неправильно сформированные данные для целей отладки.
При обертывании недействительного JSON убедитесь, что правильно экранируете любые кавычки или специальные символы в недействительной JSON строке для поддержания действительной JSON структуры в объекте-обертке.