Function calling (LLM) (CS)

From Systems analysis Wiki
Jump to navigation Jump to search

Function Calling (Volání funkcí) — je mechanismus ve velkých jazykových modelech (LLM), který umožňuje modelu interagovat s externími nástroji a API generováním strukturovaných dat (zpravidla JSON) pro volání funkcí namísto přímé textové odpovědi[1].

Jinak řečeno, model na základě dotazu uživatele určuje, kterou funkci z nabízené sady je třeba zavolat a s jakými parametry. Tento mechanismus rozšiřuje oblast použití LLM a umožňuje jim sloužit jako rozhraní mezi přirozeným jazykem a praktickými akcemi. To otevírá možnosti pro integraci AI s externími systémy: model může dotazovat aktuální data, provádět operace nebo využívat služby, což je zvláště cenné při vytváření inteligentních asistentů a autonomních agentů. Využívání externích nástrojů také snižuje riziko halucinací (vymyšlených faktů) díky odkazu na důvěryhodné zdroje[2].

Historie a přístupy k implementaci

Rané přístupy (prompting a Toolformer)

Myšlenka naučit jazykové modely volat nástroje se formovala v letech 2022–2023. Rané přístupy byly založeny na technologiích složitého promptingu. Tak například v roce 2022 bylo navrženo schéma ReAct, kde model v průběhu dialogu střídal uvažování a akce (volání nástrojů) zakódované v jednom textu.

Klíčovým krokem byl vznik modelu Toolformer, představeného výzkumníky Meta začátkem roku 2023. Toolformer demonstroval, že LLM lze speciálně dotrénovat, aby samostatně volal externí nástroje (kalkulačka, vyhledávač, kalendář) na základě textových podnětů a vkládal do generovaného textu speciální tokeny volání API[3].

Oficiální podpora a vývoj

Významný milník zaznamenala společnost OpenAI, která v červnu 2023 oficiálně zavedla podporu Function Calling ve svých API pro modely GPT-3.5 a GPT-4[4]. Nové verze modelů byly dotréneny rozpoznávat situace, kdy uživatelský dotaz předpokládá obrácení se na externí funkci, a generovat přesně strukturovaný JSON objekt s argumenty. Společnost OpenAI označila tuto možnost jako „nový způsob spolehlivého propojení GPT s externími nástroji a API".

Otevřené iniciativy

Po komerčních implementacích se objevily otevřené modely dotrénované pro generování správných volání funkcí.

  • Gorilla: Projekt UC Berkeley, dotrénovaná verze LLaMA schopná formovat volání tisíců různých API. Pro hodnocení takových modelů byl vytvořen benchmark Berkeley Function-Calling Leaderboard[5].
  • ToolAlpaca, ToolLLaMA, Hermes: Série otevřených modelů dotrénovaných na syntetických příkladech volání funkcí, často generovaných výkonnějšími modely.

Mechanismus fungování

Proces využívání Function Calling zpravidla zahrnuje několik kroků:

  1. Definice funkcí. Vývojář předem definuje sadu funkcí dostupných modelu (například externích API) a popisuje jejich signatury a účel, zpravidla ve formátu JSON Schema.
  2. Analýza dotazu. Během dialogu model analyzuje záměr uživatele a samostatně rozhoduje, zda má pro odpověď zavolat jednu z definovaných funkcí.
  3. Generování volání. Pokud je akce vyžadována, LLM místo běžného textu generuje speciální strukturovaný výstup (například JSON s názvem funkce a argumenty). Pokud volání není vyžadováno, model vrátí běžnou textovou odpověď.
  4. Vykonání funkce. Externí program (obálka chatbota nebo agent) obdrží JSON, provede skutečné volání uvedené funkce s navrženými parametry a předá výsledek zpět modelu.
  5. Vytvoření finální odpovědi. Model využije získaná data pro generování závěrečné odpovědi uživateli[4].

Pro řízení tohoto vícekrokového procesu se při trénování modelů používají speciální formáty dialogu, například markup ChatML od OpenAI, kde je kromě rolí „uživatel" a „asistent" zavedena role „funkce" pro předávání výsledků volání.

Využití a výhody

Možnost volat funkce výrazně rozšiřuje spektrum úloh řešitelných pomocí LLM.

  • Integrace s externími API. Model může odpovídat na dotazy vyžadující aktuální informace voláním externích služeb (například pro získání počasí, kurzů měn, zpráv).
  • Automatizace akcí uživatele. LLM může vykonávat rutinní úkoly: odesílat e-maily, vytvářet události v kalendáři, zadávat objednávky v internetových obchodech.
  • Přístup k databázím a analýze. Dotazy v přirozeném jazyce mohou být překládány do volání interních API nebo SQL dotazů pro získávání a analýzu dat.
  • Extrakce strukturovaných informací. LLM může sama vyhledávat fakta z dlouhého textu (například jména, data, adresy) a vracet je jako strukturované JSON pole, vhodné pro následné programové zpracování.

Bezpečnostní problémy

Function Calling rozšiřuje možnosti modelů, zároveň však přináší nová rizika.

  • Neověřené výstupy. Interakce modelu s externími nástroji musí být pečlivě zabezpečena. Pokud model obdrží z API škodlivou nebo chybnou hodnotu, může ji zahrnout do odpovědi nebo na jejím základě zavolat jinou funkci, což povede k nepředvídatelným důsledkům.
  • Útoky prostřednictvím argumentů funkcí. Výzkumníci odhalili zranitelnosti specifické pro režim Function Calling. V roce 2025 byl demonstrován útok nazvaný „Temná strana Function Calling". Jeho podstata spočívá v nabídnutí modelu speciální „funkce", uvnitř jejichž argumentů je skryta zakázaná instrukce (jailbreak payload). Model, řídící se principem volání funkce, generuje argumenty obsahující obsah porušující pravidla, a tím obchází moderační filtry. Testování ukázalo úspěch útoku ve více než 90 % případů na šesti současných modelech, včetně GPT-4 a Claude[2].

Pro prevenci takových incidentů se doporučuje poskytovat modelu pouze důvěryhodné nástroje, zavést potvrzení uživatelem před provedením kriticky důležitých akcí a také používat speciální „obranné" prompty a přísnou kontrolu argumentů na nebezpečný obsah.

Odkazy

  • Oficiální oznámení Function Calling od OpenAI
  • Stránka projektu 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.

Literatura

  • 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.

Poznámky

  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]