Skip to main content
Нативный формат 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 выше). Отсутствие сигнатуры нарушает цепочку reasoning и может привести к сбою запроса. Официальный SDK google-genai автоматически обрабатывает это с помощью приведенного выше шаблона; не удаляйте поле в ручных REST-запросах.

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

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

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

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

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

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

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