Перейти к основному содержанию
Нативный формат Gemini полностью поддерживает вызов функций: модель выводит «какая функция + какие аргументы», вы выполняете это локально и возвращаете результат, а модель формирует итоговый ответ. Цикл соответствует FC OpenAI, но форматы полей полностью отличаются и их нельзя смешивать. Эта страница основана на официальной документации Google (ai.google.dev/gemini-api/docs/function-calling, по состоянию на июнь 2026 года).

Отличия формата по сравнению с OpenAI

Одна распространенная ошибка: function_call.args Gemini — это структурированный объект, а не строка JSON — json.loads не нужен.

Полный цикл вызова

Сигнатуры мыслей Gemini 3 обязательно должны возвращаться: часть function_call содержит зашифрованный thought_signature, а второй запрос должен содержать весь Content ответа модели без изменений в истории (шаг 4 выше). Отсутствие сигнатуры нарушает цепочку рассуждений и может привести к сбою запроса. Официальный SDK google-genai обрабатывает это автоматически по приведенному выше шаблону; не удаляйте это поле при формировании REST-запросов вручную. О том, как отличить missing a thought_signature от Invalid thought signature и устранить каждую из них, см. раздел Как исправить ошибки 400 с Gemini Thought Signature при вызовах инструментов?.

Режимы вызова

Параллельные и многошаговые вызовы

  • Параллельно: один ход может вернуть несколько частей function_call (например, сразу два города); выполните каждую и верните все части function_response вместе
  • Многошагово: модель может выстраивать цепочку «вызов → проверка результата → повторный вызов»; повторяйте цикл, пока в ответе не останется больше function_call. Ограничьте цикл, чтобы избежать неконтролируемых расходов

Рекомендации по лучшим практикам

  • Описания пишутся для модели: четко указывайте «когда вызывать меня»; ограничивайте параметры с помощью enum вместо свободных строк
  • Поддерживайте стабильность определений инструментов: они участвуют в сопоставлении префиксов кэша — изменения вредят попаданиям в кэш
  • Нужен детерминированный JSON-вывод вместо внешнего инструмента? Рассмотрите response_schema structured output вместо FC (см. таблицу параметров Встроенные вызовы)
  • Для вычислений в изолированной среде используйте встроенный инструмент code_execution вместо того, чтобы писать собственную функцию калькулятора

Распространенные ошибки

Связанные ссылки