РУКОВОДСТВО · ОБНОВЛЕНО 2026-11-15
Как связать вызов инструмента и результат по ID
Храните ID каждого вызова вместе с результатом инструмента. В Chat Completions верните tool_call_id, а в Responses укажите call_id в function_call_output. При параллельной обработке сопоставляйте результаты по ID.
Храните ID каждого вызова вместе с результатом инструмента. В Chat Completions верните tool_call_id, а в Responses укажите call_id в function_call_output. При параллельной обработке сопоставляйте результаты по ID.
1. Сохраните идентификатор вызова
Извлеките его из конкретного сообщения или элемента ответа модели. Запишите отдельно имя функции и аргументы. Два вызова одной функции могут иметь разные аргументы и идентификаторы.
2. Сопоставьте поля протокола
В Chat Completions передайте сообщение с ролью tool и tool_call_id из соответствующего вызова. В Responses передайте элемент function_call_output с call_id. ID элемента ответа и ID вызова хранятся отдельно.
3. Обработайте параллельные результаты
В учебном примере вызовите поиск статуса для двух разных номеров в локальной таблице. Если второй поиск завершится первым, он всё равно должен получить исходный ID второго вызова. Перед отправкой проверьте пропущенные и повторные ID.
4. Проверьте последовательность сообщений
Воспроизведите локально один вызов, два вызова с обратным порядком завершения и отказ инструмента. При ошибке протокола сохраните форму сообщения и ID, исключив личные данные из журнала.
Частые вопросы
Можно ли использовать имя функции как ID?
Одна функция может быть вызвана несколько раз. Используйте ID полученного вызова.
Куда указать ID в Responses?
В поле call_id элемента function_call_output.
Нужно ли менять порядок выполнения?
Обычно можно выполнять независимо и сопоставлять результаты по ID. Проверьте требования своего протокола.
Что проверять при No tool output found?
Проверьте наличие результата для каждого вызова, правильное поле ID и сохранность контекста.