Function Calling
Function Calling (Вызов функций) — это механизм в больших языковых моделях (LLM), позволяющий модели взаимодействовать с внешними инструментами и API, генерируя структурированные данные (как правило, JSON) для вызова функций вместо прямого текстового ответа[1].
Иными словами, модель на основе запроса пользователя определяет, какую функцию из предложенного набора следует вызвать и с какими параметрами. Этот механизм расширяет сферу применения LLM, позволяя им служить интерфейсом между естественным языком и практическими действиями. Это открывает возможности для интеграции ИИ с внешними системами: модель может запрашивать актуальные данные, выполнять операции или пользоваться сервисами, что особенно ценно при создании интеллектуальных ассистентов и автономных агентов. Использование внешних инструментов также снижает риск галлюцинаций (вымышленных фактов) за счёт обращения к достоверным источникам[2].
История и подходы к реализации
Ранние подходы (промптинг и Toolformer)
Идея научить языковые модели вызывать инструменты сформировалась в 2022–2023 годах. Ранние подходы основывались на технологиях сложного промптинга. Так, в 2022 году была предложена схема ReAct, где модель в ходе диалога чередовала рассуждения и действия (вызовы инструментов), закодированные в одном тексте.
Ключевым шагом стало появление модели Toolformer, представленной исследователями Meta в начале 2023 года. Toolformer продемонстрировал, что LLM можно специально дообучить самостоятельно вызывать внешние инструменты (калькулятор, поисковик, календарь) по текстовым подсказкам, вставляя в генерируемый текст специальные токены вызова API[3].
Официальная поддержка и развитие
Особую веху отметила компания OpenAI, которая в июне 2023 года официально внедрила поддержку Function Calling в свои API для моделей GPT-3.5 и GPT-4[4]. Новые версии моделей были дообучены распознавать ситуации, когда пользовательский запрос подразумевает обращение к внешней функции, и генерировать точно структурированный JSON-объект с аргументами. В OpenAI назвали эту возможность «новым способом надёжно соединить GPT с внешними инструментами и API».
Открытые инициативы
Вслед за коммерческими реализациями появились открытые модели, дообученные для генерации корректных вызовов функций.
- Gorilla: Проект UC Berkeley, дообученная версия LLaMA, способная формировать вызовы к тысячам различных API. Для оценки таких моделей был создан бенчмарк Berkeley Function-Calling Leaderboard[5].
- ToolAlpaca, ToolLLaMA, Hermes: Серии открытых моделей, дообученных на синтетических примерах вызовов функций, часто сгенерированных более мощными моделями.
Механизм работы
Процесс использования Function Calling, как правило, включает несколько шагов:
- Определение функций. Разработчик заранее определяет набор доступных для модели функций (например, внешних API) и описывает их сигнатуры и назначение, как правило, в формате JSON Schema.
- Анализ запроса. Во время диалога модель анализирует намерение пользователя и самостоятельно решает, следует ли для ответа вызвать одну из определённых функций.
- Генерация вызова. Если требуется действие, LLM вместо обычного текста генерирует специальный структурированный вывод (например, JSON с именем функции и аргументами). Если же вызов не требуется, модель возвращает обычный текстовый ответ.
- Исполнение функции. Внешняя программа (оболочка чат-бота или агент) получает JSON, выполняет реальный вызов указанной функции с предложенными параметрами и передаёт результат обратно модели.
- Формирование финального ответа. Модель использует полученные данные для генерации итогового ответа пользователю[4].
Для управления этим многошаговым процессом в ходе обучения моделей применяются специальные форматы диалога, например, разметка ChatML от OpenAI, где помимо ролей «пользователь» и «ассистент» вводится роль «функция» для передачи результатов вызовов.
Применение и преимущества
Возможность вызывать функции заметно расширяет спектр задач, решаемых с помощью LLM.
- Интеграция с внешними API. Модель может отвечать на запросы, требующие актуальной информации, вызывая внешние сервисы (например, для получения погоды, курсов валют, новостей).
- Автоматизация действий пользователя. LLM может выполнять рутинные задачи: отправлять электронные письма, создавать события в календаре, размещать заказы в интернет-магазинах.
- Доступ к базам данных и аналитике. Запросы на естественном языке могут транслироваться в вызовы внутренних API или SQL-запросы для извлечения и анализа данных.
- Извлечение структурированной информации. LLM может сама выделять факты из длинного текста (например, имена, даты, адреса) и возвращать их в виде структурированного JSON-массива, удобного для последующей программной обработки.
Проблемы безопасности
Расширяя возможности моделей, Function Calling одновременно несёт новые риски.
- Непроверенные выводы. Взаимодействие модели с внешними инструментами должно быть тщательно защищено. Если модель получает от API вредоносное или ошибочное значение, она может включить его в ответ или вызвать другую функцию на его основе, что приведёт к непредсказуемым последствиям.
- Атаки через аргументы функций. Исследователи обнаружили уязвимости, специфичные для режима Function Calling. В 2025 году была продемонстрирована атака, названная «Тёмная сторона Function Calling». Её суть заключается в предложении модели специальной «функции», внутри аргументов которой скрывается запрещённая инструкция (jailbreak-пейлоад). Модель, следуя принципу вызова функции, генерирует аргументы, содержащие нарушающий правила контент, и тем самым обходит модерационные фильтры. Тестирование показало успех атаки более чем в 90% случаев на шести современных моделях, включая GPT-4 и Claude[2].
Для предотвращения таких инцидентов рекомендуется предоставлять модели только доверенные инструменты, внедрять подтверждение пользователя перед выполнением критически важных действий, а также использовать специальные «оборонительные» промпты и строгую проверку аргументов на опасное содержимое.
См. также
Ссылки
- Официальный анонс Function Calling от OpenAI
- Страница проекта Gorilla LLM
- Apideck (2024). An Introduction to Function Calling and Tool Use. Apideck Blog.
- LangChain (2025). Tool Calling (Documentation). LangChain Docs.
- Mistral AI (2025). Function Calling – Documentation. Mistral Docs.
- Hopsworks (2024). What is Function Calling with LLMs?. Hopsworks Dictionary.
- Hopsworks (2024). Unlocking the Power of Function Calling with LLMs. Hopsworks Blog.
- University of California, Berkeley (2025). Berkeley Function Calling Leaderboard V3. Online Resource.
Литература
- Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. ACL 2025.
- OpenAI (2023). Function Calling and Other API Updates. OpenAI Blog.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
- Liu, W. et al. (2024). ToolACE: Winning the Points of LLM Function Calling. arXiv:2409.00920.
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
Примечания
- ↑ «What is Function Calling with LLMs?». Hopsworks. [1]
- ↑ 2,0 2,1 Wu, Z. et al. «The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models». Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing, 2025. [2]
- ↑ Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv:2302.04761, 2023. [3]
- ↑ 4,0 4,1 «Function calling and other API updates». OpenAI, 2023. [4]
- ↑ «Gorilla: Large Language Model Connected to Massive APIs». University of California, Berkeley. [5]