← Все инструкции

РУКОВОДСТВО · ОБНОВЛЕНО 2026-09-15

Tool calling в нейросетях: функции, права и цикл выполнения

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

Опишите узкие инструменты с чёткой схемой, проверяйте аргументы и права на сервере, отделите чтение от изменений и ограничьте цикл. Модель не должна напрямую владеть ключами или исполнять произвольный код; каждый tool call проходит обычную авторизацию приложения.

1. Спроектируйте узкие инструменты

Функция get_order безопаснее универсального execute_request: у неё понятный вход, результат и область доступа. Название и описание говорят модели, когда вызов уместен, а schema ограничивает аргументы. Не включайте секрет в описание tool. Разделяйте чтение и изменение, чтобы политика могла разрешить поиск без права отменить заказ.

2. Проверьте вызов до исполнения

Сервер разбирает JSON, валидирует типы, диапазоны и принадлежность объекта текущему пользователю. Нельзя считать model-generated id авторизацией. Для внешнего URL действует allowlist и защита от SSRF. Опасные строки не подставляют в shell или SQL. Значимые операции требуют правила подтверждения, заданного продуктом до запуска.

3. Верните наблюдение модели

После выполнения приложение добавляет tool result с идентификатором вызова. Ответ должен быть коротким, структурированным и различать not_found, forbidden и temporary_error. Огромный дамп базы расходует контекст и может раскрыть лишнее. Модель использует наблюдение для финального ответа или следующего разрешённого шага, но контроллер считает число итераций.

4. Учтите параллельность и повторы

Независимые чтения можно выполнять параллельно, если модель и API поддерживают это. Записи требуют порядка и идемпотентного ключа. При timeout неизвестно, завершилась ли удалённая операция, поэтому слепой retry опасен. Сохраняйте request id и проверяйте состояние. Повтор одинаковых аргументов распознаётся как возможный цикл.

5. Тестируйте недоверенные данные

Добавьте вредоносный текст в документ, результат поиска и сообщение пользователя. Он не должен расширить права или сменить цель. Проверяйте неизвестный tool, лишнее поле, неверный enum, отказ сервиса и исчерпание бюджета. Метрики: успешная задача, ошибочные вызовы, число шагов, p95 времени и стоимость завершённого процесса.

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

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

В custom tool calling функция исполняется приложением после проверки.

Где хранится API-ключ инструмента?

На сервере или в секретном хранилище, недоступном модели и клиенту.

Можно дать один универсальный tool?

Узкие функции проще проверять, авторизовать и наблюдать.

Как остановить цикл?

Лимитировать шаги, время, токены, стоимость и повтор аргументов.

Что такое parallel tool calls?

Предложение нескольких независимых вызовов в одном ходе при поддержке API.

Источники

Калькулятор стоимости →