Перейти к основному содержанию
Включите потоковую выдачу через stream: true и опишите инструменты, которые выполняет ваше приложение, в формате выбранного API. Поддержка потоков и вызова инструментов зависит от модели. Прежде чем использовать эти возможности в приложении, проверьте небольшой запрос с вашим Model ID.

Подготовка

Сначала выполните обычный текстовый запрос по примерам SDK. Скопируйте точный Model ID из каталога моделей для нужного протокола. Критерии проверки описаны в руководстве по выбору модели. Установите openai и anthropic в виртуальное окружение Python вашего проекта, затем замените заполнители в том же терминале:
Каждый блок Python ниже можно запускать отдельно. Тайм-аут 120 секунд выбран для этих коротких тестов. Для приложения используйте рекомендации по тайм-аутам. Перед настройкой max_tokens или max_output_tokens проверьте лимит выходных токенов модели.

Потоковая выдача текста

В потоковом режиме сервер передаёт события server-sent events (SSE) в одном HTTP-ответе. Отдельное событие SSE не обязательно содержит законченное предложение или полный JSON-объект аргументов. SDK разбирает формат SSE. Примеры выводят текстовые фрагменты и сведения о завершении; в приложении также обрабатывайте события ошибок.

Опишите инструмент погоды для каждого протокола

Модель запрашивает вызов функции, а ваше приложение проверяет аргументы, выполняет функцию и возвращает результат. В примерах функция get_weather принимает аргумент location и возвращает фиксированные демонстрационные данные, а не текущую погоду. Подключать погодный сервис или получать дополнительный ключ не нужно. Поддержка зависит от модели и протокола. Проверьте небольшой запрос с инструментом для вашего Model ID, даже если обычный текст уже работает. Объявление инструмента не включает поиск или другие инструменты, выполняемые на стороне поставщика.

Выполните вызов и верните результат

Эти примеры без потоковой выдачи показывают один цикл вызова инструмента, чтобы вы могли изучить аргументы целиком. Каждый пример обрабатывает все вызовы из первого ответа и отправляет один последующий запрос. Для более длинного агентного сценария задайте ограничение числа итераций и условие остановки.
Сохраните полный ответ ассистента перед добавлением результатов инструментов. Для Responses оставляйте все элементы output, включая элементы рассуждений, если они вернулись. Для Messages сохраняйте блоки содержимого и их порядок. Привязывайте результаты к полученным идентификаторам вызовов, не создавайте новые ID.

Частые вопросы

Можно ли выполнять инструмент по мере поступления аргументов?

Соберите фрагменты по индексу вызова или ID элемента, затем разберите и проверьте полные аргументы. Неполный JSON может не разбираться. Прежде чем объединять потоки и инструменты, запустите примеры без потоковой выдачи выше.

Почему текст работает, а инструменты — нет?

Поддержка зависит от модели и протокола. Проверьте небольшой вызов инструмента с вашим Model ID. Сверьте схему инструмента, полученные аргументы, ID результата и порядок сообщений. О типизированной проверке JSON читайте в FAQ по структурированному выводу.

Нужно ли повторять запрос, если поток прервался?

Перед повтором проверьте запись запроса. Разрыв соединения не показывает, успел ли запрос завершиться. Повтор создаёт новую попытку; он не должен повторно выполнять уже совершённое действие инструмента. См. ошибки и правила повторов.

См. также

Официальные источники

Источники описывают поля исходных протоколов. Перед использованием проверьте нужную возможность с вашим BetterToken Model ID.