Function calling (LLM) (BG)

From Systems analysis Wiki
Jump to navigation Jump to search

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. За оценка на такива модели е създаден benchmark Berkeley Function-Calling Leaderboard[5].
  • ToolAlpaca, ToolLLaMA, Hermes: Серии от отворени модели, дообучени върху синтетични примери за извикване на функции, често генерирани от по-мощни модели.

Механизъм на работа

Процесът на използване на Function Calling, като правило, включва няколко стъпки:

  1. Дефиниране на функции. Разработчикът предварително определя набор от функции, достъпни за модела (например, външни API), и описва техните сигнатури и предназначение, като правило, във формат JSON Schema.
  2. Анализ на заявката. По време на диалога моделът анализира намерението на потребителя и самостоятелно решава дали за отговора трябва да извика една от дефинираните функции.
  3. Генериране на извикването. Ако е необходимо действие, LLM вместо обичаен текст генерира специален структуриран изход (например, JSON с името на функцията и аргументите). Ако извикването не е необходимо, моделът връща обичаен текстов отговор.
  4. Изпълнение на функцията. Външна програма (обвивката на чатбота или агент) получава JSON, извършва реалното извикване на посочената функция с предложените параметри и предава резултата обратно на модела.
  5. Формиране на финалния отговор. Моделът използва получените данни за генериране на окончателен отговор към потребителя[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.

Бележки

  1. «What is Function Calling with LLMs?». Hopsworks. [1]
  2. 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]
  3. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv:2302.04761, 2023. [3]
  4. 4.0 4.1 «Function calling and other API updates». OpenAI, 2023. [4]
  5. «Gorilla: Large Language Model Connected to Massive APIs». University of California, Berkeley. [5]