Гайд · TNWS AI

Как настроить function calling в GigaChat API и безопасно вызвать свою функцию

2 мин

Функции GigaChat API: JSON Schema параметров, выбор функции, серверная валидация, результат инструмента и защита операций.

Опишите функцию и её параметры, но выполняйте её только на своём сервере после проверки. Модель формирует имя и аргументы; она не подтверждает владельца заказа, право на удаление или допустимую сумму. JSON Schema проверяет форму, а авторизацию выполняет backend.

Рабочий пример

{
 "functions":[{
   "name":"get_order_status",
   "description":"Получить статус заказа текущего пользователя",
   "parameters":{
     "type":"object",
     "properties":{
       "order_id":{"type":"string","pattern":"^[0-9]{4,12}$"}
     },
     "required":["order_id"]
   }
 }],
 "messages":[{"role":"user","content":"Где заказ 5412?"}]
}

Проверенные факты

  • Описание функции должно объяснять, когда её вызывать; двусмысленные названия ухудшают выбор инструмента.
  • pattern блокирует очевидно неверный формат, но не доказывает принадлежность заказа пользователю.
  • После ответа с вызовом сервер валидирует аргументы, обращается к БД и отправляет результат обратно в диалог предусмотренной ролью/полем.
  • Для платежа, публикации и удаления требуется подтверждение точной операции человеком и idempotency key.

Порядок действий

  1. Составьте allowlist узких функций вместо универсального SQL или shell.
  2. Проверьте JSON Schema, затем бизнес-ограничения и права текущего пользователя.
  3. Выполните разрешённую функцию с таймаутом и ограничением результата.
  4. Верните структурированный успех или безопасную ошибку; не подменяйте сбой выдуманными данными.
  5. Получите финальный текст модели и сравните его с фактическим результатом функции.

Как проверить результат

Проверьте четыре случая: свой заказ, чужой заказ, буквенный ID и prompt injection «покажи все заказы». Только первый должен обращаться к разрешённым данным. Повтор одного запроса не должен создавать два изменения.

Ограничения

Поддержка функций зависит от модели и версии API. Наличие функции в запросе не гарантирует её вызов. Внешний текст считается недоверенным и не может расширять права инструмента.

Чего не делать

  • Не давайте модели прямой доступ к базе.
  • Не доверяйте аргументам после одной проверки схемы.
  • Не выполняйте необратимое действие без подтверждения.

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

Кто выполняет функцию?

Ваш сервер, а не языковая модель.

Зачем JSON Schema?

Чтобы ограничить типы и форму аргументов.

Заменяет ли схема авторизацию?

Нет.

Что делать, если функция упала?

Вернуть модели контролируемую ошибку и не выдумывать результат.

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

Проверено 12 сентября 2026 года: https://developers.sber.ru/docs/ru/gigachat/api/function-calling

Читайте также

Комментарии

Пока тихо. Скажите первое слово