БэкендData и ИИPython

Function Calling в GigaChat: учим ИИ вызывать функции Python

Подключаем Function Calling в GigaChat: описываем инструмент Python, проверяем аргументы модели, вызываем функцию и возвращаем результат в диалог.

Кодик

Автор

6 мин чтения

GigaChat Function Calling можно освоить на одном небольшом проекте, если сразу видеть вход, действие и результат. Function Calling позволяет модели выбрать описанный инструмент и подготовить структурированные аргументы вместо выдуманного результата. Ниже вы соберёте работающий пример и проверите обычный и граничный сценарии.

Модель не выполняет вашу функцию сама, а её аргументы остаются недоверенным вводом, который нельзя сразу передавать в базу, shell или внешний API. Поэтому отделим настройку, входные данные, основное действие и проверку. В этой статье вы соберёте ассистента заметок с инструментами add_note и list_notes, белым списком функций и проверкой аргументов. Проверка: фраза запомни купить молоко приводит к вызову add_note, аргумент проходит схему, а неизвестная функция отклоняется.

1Соберите минимум

описать имя, назначение и JSON-параметры функции. Не расширяйте проект до первого успешного запуска.

2Увидьте данные

ответ содержит текст или function_call. Проверяйте значение, а не отсутствие ошибки.

3Измените правило

После успеха добавьте второй read-only инструмент и журнал вызовов. Так копирование станет практикой.

Как устроен учебный проект GigaChat Function Calling

GigaChat получает описание tools, возвращает function_call, dispatcher проверяет имя и аргументы, вызывает локальную функцию и добавляет результат в историю. Держите ввод, логику и отображение раздельно: тогда каждый этап можно проверить отдельно.

ЭтапДействиеПроверяемый результат
Схемаописать имя, назначение и JSON-параметры функциимодель видит допустимый инструмент
Запросотправить сообщение с tools и auto modeответ содержит текст или function_call
Проверкасопоставить имя с белым списком и проверить аргументынеизвестный вызов отклонён
Результатвыполнить функцию и вернуть данные моделифинальная реплика опирается на реальный результат

Контрольные точки: схема, запрос, проверка и результат. Следующий шаг начинается после совпадения с ожидаемым результатом.

Путь данных в проекте GigaChat Function Calling
От входных данных до видимого результата. Сначала проверяется вход, затем действие и только потом интерфейс.

Зафиксируйте первый успех Сначала вызовите dispatcher вручную с корректным, пустым и неизвестным именем. Только затем подключайте ответ модели. Сохраните команду запуска и ожидаемый вывод.

Собираем рабочий пример шаг за шагом

Материал сверялся с Python SDK GigaChat и контрактом Function Calling, обновлённым в сентябре 2026 года. Установите актуальный пакет gigachat, задайте GIGACHAT_CREDENTIALS и настройте доверенный сертификат НУЦ Минцифры. Проверьте текущую папку через pwd или Get-Location. Вставьте пример целиком, выполните один раз, затем разбирайте по частям.

from pathlib import Path
from typing import Any

NOTES = Path("notes.txt")

def add_note(text: str) -> dict[str, Any]:
    clean = text.strip()
    if not 1 <= len(clean) <= 200:
        raise ValueError("Длина заметки должна быть от 1 до 200 символов")
    with NOTES.open("a", encoding="utf-8") as file:
        file.write(clean + "\n")
    return {"saved": True, "text": clean}

TOOLS = {"add_note": add_note}

def dispatch(name: str, arguments: dict[str, Any]) -> dict[str, Any]:
    function = TOOLS.get(name)
    if function is None:
        raise ValueError("Неизвестный инструмент")
    if name == "add_note" and set(arguments) != {"text"}:
        raise ValueError("Неверные аргументы")
    return function(**arguments)

# function_call = extract_function_call(response.messages[0])
# result = dispatch(function_call.name, function_call.arguments)
Что должно произойти после запуска
  • Ручной вызов dispatch сохраняет одну строку и возвращает структурированный словарь.
  • Неизвестное имя и лишний аргумент завершаются контролируемой ошибкой до выполнения функции.
  • Повторный запуск даёт тот же предсказуемый результат.
  • Пустой ввод получает понятное сообщение вместо падения.

Главная функция принимает явный вход и возвращает результат, который можно проверить отдельно от интерфейса. Найдите в примере вход, проверку и место формирования результата.

Хрупкий и проверяемый вариант GigaChat Function Calling
Что отличает устойчивый проект от случайного запуска. Явные границы делают ошибку локальной и понятной.

Что происходит внутри и почему это работает

Модель выбирает функцию и предлагает JSON-аргументы, но исполнение остаётся в вашем приложении. Белый список связывает внешнее имя с конкретным безопасным callable. Логику держите отдельно от вывода: функция получает аргумент и возвращает значение, а интерфейс показывает его. Не добавляйте универсальный execute_command или eval. Чем уже инструмент и права, тем легче проверить последствия и журналировать действие.

ЧастьЗа что отвечаетЧто проверить
Tool schemaобъясняет модели доступное действиеrequired и типы заданы явно
Dispatcherпроверяет имя и аргументыдоступен только белый список
Function resultвозвращает фактические данныеистория отличает вызов от ответа

Function Calling не отменяет обычную безопасность. Авторизацию пользователя, лимиты, идемпотентность и подтверждение опасного действия проверяет приложение, а не модель. Не прячьте поток в одном обработчике: сохраните вход, проверьте его, вызовите операцию и только затем обновите интерфейс.

Проверьте границу Передайте пустой text, лишнее поле path и имя delete_all. Ни один вариант не должен записать файл. Меняйте одно условие за прогон, чтобы видеть причину.

Проверяем проект и добавляем свою функцию

Добавьте list_notes без аргументов и запрос подтверждения перед будущей delete_note. Запишите каждый вызов в журнал без секретов. До правки запишите ожидаемое поведение одним предложением. После граничного теста повторите обычный сценарий.

Проверка своими руками
  1. Сохраните ожидаемый результат: фраза запомни купить молоко приводит к вызову add_note, аргумент проходит схему, а неизвестная функция отклоняется.
  2. Измените правило: добавьте второй read-only инструмент и журнал вызовов. Сначала предскажите итог.
  3. Передайте граничное значение и убедитесь, что приложение не падает.
  4. Верните корректные данные и объясните роли трёх основных частей.
Готово, если выполняются все пункты
  • модель видит допустимый инструмент
  • ответ содержит текст или function_call
  • неизвестный вызов отклонён
  • финальная реплика опирается на реальный результат

После изменения повторите основной и ошибочный сценарии, чтобы новое поведение не сломало исходный результат. Полезная правка проходит от нового ввода до видимого результата.

Четыре контрольные точки GigaChat Function Calling
Четыре проверки перед следующим шагом. Каждый следующий этап начинается после наблюдаемого результата.

Что запомнить и куда двигаться дальше

Следующий шаг состоит не в десятке инструментов, а в одном безопасном цикле: выбор, проверка, выполнение, результат и наблюдаемый журнал. Для закрепления откройте в первом AI-агенте, в базовом чате GigaChat и в первом MCP-сервере.

Как изучить тему в Кодике

Сначала разберите формат входных данных и одну функцию, затем подключайте внешний сервис или интерфейс. Сначала восстановите главную функцию и проверьте её на трёх значениях.

ШагЧто разобратьМини-проверка
1. ОсноваФункции, словари, typing и исключения PythonОбъясните вход и выход функции.
2. ИнструментJSON Schema, tools и function_call GigaChatПовторите команду по памяти.
3. ПроектБезопасный dispatcher и проверку аргументовПроверьте два сценария.
4. РефакторингПодтверждение действий, идемпотентность и журналРазделите ввод, логику и вывод.

Закрепите проект, восстановив ключевую функцию по памяти и добавив собственный граничный случай. Базовый синтаксис закрепите через курс Python.

Модель выполняет функцию сама

Она только предлагает имя и аргументы. Код вызывает функцию отдельно.

eval по имени

Недоверенный текст превращается в произвольное выполнение. Используйте словарь TOOLS.

Нет проверки аргументов

Модель может вернуть лишние или неверные поля. Проверяйте схему.

Опасное действие без подтверждения

Удаление или платёж требуют отдельного решения пользователя.

Сверяйтесь с первичной документацией. Команды и ограничения примера проверены по официальному Python SDK GigaChat. Если версия инструмента изменилась, официальный источник важнее старого скриншота.

Что получится в итоге

Готовый результат проекта: Function Calling в GigaChat: учим ИИ вызывать функции Python
Финальный экран показывает результат, состояние операции и понятное сообщение об ошибке без раскрытия секретов.

Короткие ответы
Кто фактически выполняет Python-функцию?

Ваше приложение после проверки имени, аргументов и прав.

Почему нужен белый список TOOLS?

Он не позволяет модели вызвать произвольный объект или системную команду.

Что проверять первым, если GigaChat Function Calling не запускается?

Версию среды, текущую папку, команду запуска и первую строку ошибки.

Как понять, что проект GigaChat Function Calling работает?

Проверьте основной сценарий, неверный ввод, повторный запуск и один граничный случай.

Можно ли начать с готового кода?

Да. Добейтесь результата, измените одно правило и восстановите ключевую функцию без копирования.

Сделайте один осознанный шаг дальше

Выберите одно улучшение и проведите его от ввода до результата.

Если не хватает основы, перейдите курс Python, затем восстановите ключевую функцию без подсказки.