Preskočiť na obsah

Ako AI agenti používajú nástroje: function calling zrozumiteľne

Jazykový model sám osebe vie len písať text. Nezistí dnešné voľné termíny, neoverí, či je faktúra zaplatená, ani nevytvorí objednávku. AI agenti však presne toto robia. Mechanizmus, ktorý to umožňuje, sa volá function calling (volanie funkcií), niekedy aj tool use.

Na to, aby ste ho pochopili, nemusíte programovať. A oplatí sa ho pochopiť, ak sa rozhodujete, či pustíte AI k svojim systémom. Ukazuje totiž, kde je kontrola, a odpoveď je upokojujúca: model len žiada. O tom, čo sa naozaj stane, rozhoduje váš kód. (Ak s agentmi začínate, prečítajte si najprv Čo je AI agent?)

Model sa vašich systémov nikdy nedotkne

Keď agent „rezervuje termín“, model sa neprihlasuje do vášho kalendára. Vráti štruktúrovanú požiadavku: názov nástroja a vstupy vo forme dát. Vaša aplikácia požiadavku prijme a skontroluje. Potom ju vykoná vo vašom systéme s vlastnými oprávneniami a výsledok pošle späť modelu.

Jedno volanie nástroja

  1. Model prečíta požiadavku Spolu s inštrukciami a zoznamom nástrojov
  2. Model požiada o nástroj Názov nástroja a vstupy ako dáta
  3. Váš kód ho skontroluje Oprávnenia, platné vstupy, limity
  4. Váš systém urobí prácu Kalendár, CRM, databáza
  5. Výsledok ide späť Krátky a k veci
  6. Model odpovie alebo žiada ďalej
Model len žiada. Váš kód požiadavku skontroluje a urobí prácu.

Toto rozdelenie je na agentoch to najdôležitejšie. Všetko, čo chce model urobiť, prechádza kódom, ktorý majú pod kontrolou vaši vývojári. Práve tam patria kontroly oprávnení, validácia, limity, schvaľovanie a záznamy.

Ako function calling funguje, krok za krokom

Function calling podporujú aktuálne modely od OpenAI, Anthropic aj Google a všade funguje v podstate rovnako:

  1. Opíšete nástroje. Každý nástroj má názov, popis bežným jazykom a zoznam vstupov s ich typmi. Vstupy sa zapisujú ako JSON schéma, teda presný opis toho, aké polia sú povolené a v akom formáte.
  2. Pošlete požiadavku so zoznamom nástrojov. Model spolu so správou používateľa a vašimi inštrukciami dostane aj popisy nástrojov, ktoré smie použiť.
  3. Model sa rozhodne. Buď odpovie textom, alebo vráti volanie nástroja: ktorý nástroj a s akými vstupmi. Keď dve vyhľadávania na sebe nezávisia, môže požiadať o obe naraz.
  4. Váš kód nástroj spustí. Skontroluje vstupy, urobí prácu (dopyt do databázy, volanie API) a výsledok vráti modelu.
  5. Model pokračuje. S výsledkom pred sebou zavolá ďalší nástroj alebo napíše konečnú odpoveď. Toto sa opakuje a práve to opakovanie je slučka agenta.

Takto vyzerá popis nástroja pre rezervačný systém ambulancie. Názvy polí sa medzi poskytovateľmi mierne líšia, princíp je rovnaký:

{
  "name": "find_free_slots",
  "description": "Find free appointment slots for one service between two dates. Use this before offering times to a patient. Returns at most 5 slots.",
  "input_schema": {
    "type": "object",
    "properties": {
      "service": { "type": "string", "enum": ["physiotherapy", "sports_massage", "first_consultation"] },
      "from": { "type": "string", "description": "Start date, YYYY-MM-DD" },
      "to": { "type": "string", "description": "End date, YYYY-MM-DD" }
    },
    "required": ["service", "from", "to"]
  }
}

Popis nie je ozdoba. Model ho číta, aby vedel, kedy a ako nástroj použiť, preto si zaslúži rovnakú starostlivosť ako hlavné inštrukcie. Väčšina poskytovateľov vie schému aj striktne vynútiť, takže volanie nástroja príde vždy v správnom tvare. Či hodnoty dávajú zmysel, však musí stále overiť váš kód.

Príklad: rezervačný agent s tromi nástrojmi

Fyzioterapeutická ambulancia chce, aby sa pacienti mohli objednať cez chat na webe. Agent dostane tri nástroje:

  • find_patient (čítanie): nájde existujúceho pacienta podľa mena a dátumu narodenia.
  • find_free_slots (čítanie): vráti najviac päť voľných termínov pre službu medzi dvoma dátumami.
  • book_appointment (zápis): rezervuje jeden termín pre jedného pacienta a vráti číslo rezervácie.

Rezervačný agent ambulancie

  1. Vy: Dobrý deň, tu Jana Nováková, narodená 3. 5. 1988. Mohla by som prísť na športovú masáž budúci utorok alebo stredu poobede?
  2. Volanie nástroja: find_patient(name: Jana Nováková, born: 1988-05-03)
  3. Volanie nástroja: find_free_slots(service: sports_massage, from: 2026-07-14, to: 2026-07-15)
  4. Výsledok: pacient P-2231 · voľné: ut 15:30, st 14:00, st 16:30
  5. AI: Mám voľný utorok o 15:30 alebo stredu o 14:00 či 16:30. Ktorý termín vám vyhovuje?
  6. Vy: Stredu o 16:30, prosím.
  7. Volanie nástroja: book_appointment(patient: P-2231, slot: 2026-07-15 16:30)
  8. Výsledok: potvrdené · číslo B-7781
  9. AI: Hotovo: športová masáž v stredu 15. júla o 16:30. Číslo rezervácie je B-7781 a deň vopred vám príde pripomienka.
Prvé dve vyhľadávania bežia súčasne. Niečo zmení až posledné volanie.

Rozhovor vyzerá jednoducho, no kód za každým nástrojom robí poriadny kus práce:

  • find_patient vráti len ID pacienta a krstné meno, nie celý záznam. Agent viac nepotrebuje, tak ani viac nedostane.
  • book_appointment overí, či je termín stále voľný, či nie je v minulosti a či pacient existuje. Ak termín pred sekundou obsadil niekto iný, vráti chybu s novými možnosťami.
  • Tá istá požiadavka na rezerváciu môže prísť dvakrát, napríklad keď ju zopakuje sieť alebo model. Druhá potom vráti to isté číslo rezervácie a nevytvorí duplikát. Vývojári tomu hovoria idempotentný nástroj.
  • Zrušenie termínu nie je nástroj vôbec. Pacientov, ktorí chcú termín zrušiť, agent odovzdá recepcii. Je to obchodné rozhodnutie a je zapísané v zozname nástrojov, nie ponechané na úsudok modelu.

Nástroje na čítanie a nástroje na zápis

Každý nástroj zaraďte do jednej z dvoch skupín, pretože každá si vyžaduje iný prístup.

Nástroje na čítanie niečo vyhľadajú: nájdu objednávku, vypíšu voľné termíny, prehľadajú dokumenty. Hlavné riziko je, že ukážu dáta nesprávnemu človeku. Preto majú bežať s oprávneniami človeka, pre ktorého agent pracuje, nie ako administrátor.

Nástroje na zápis niečo menia: rezervujú, odosielajú, upravujú, platia. Každému dajte čo najužší rozsah a rozhodnite, ktoré potrebujú schválenie človekom. Uprednostnite návrhy: draft_email namiesto send_email, aspoň kým agentovi nedôverujete. Nevratné akcie, ako platby či mazanie, by mali takmer vždy prejsť cez človeka.

Kde je kontrola

  1. Pacient alebo zamestnanec Píše do chatu, e-mailu alebo aplikácie
  2. Model Vyberie nástroj a vyplní vstupy
  3. Zoznam nástrojov Jediné akcie, o ktoré môže požiadať: dve na čítanie, jedna na zápis
  4. Váš kód Oprávnenia, validácia, schvaľovanie, záznamy
  5. Vaše systémy Rezervačný kalendár, karty pacientov
Model sa k vašim systémom nikdy nedostane priamo. Každá požiadavka prejde zoznamom nástrojov a vaším kódom.

Ako navrhnúť dobré nástroje

Veľa problémov s agentmi, ktoré vidíme, sú problémy nástrojov, nie modelu. Model vybral zlý nástroj, lebo dva mali podobné názvy. Poslal dátum v nesprávnom formáte. Nástroj vrátil 400 riadkov a odpoveď sa v nich stratila. Anthropic to vo svojom zverejnenom návode na stavbu agentov hovorí podobne: definíciám nástrojov treba venovať rovnakú pozornosť ako samotným promptom.

Dobre navrhnutý nástroj

  • Jeden nástroj, jedna úloha book_appointment, nie run_query
  • Jasné názvy a popisy Kedy ho použiť a čo vráti
  • Málo vstupov s typmi Pevné možnosti ako zoznam, jeden formát dátumu
  • Všetko overte v kóde Vstupom od modelu nikdy slepo neverte
  • Bezpečný pri opakovaní Zopakovaná rezervácia nerezervuje dvakrát
  • Bezpečné predvolené správanie Najprv návrh, potom odoslanie, malé limity výsledkov
  • Krátke výsledky k veci Päť termínov, nie celý kalendár
  • Chyby, ktoré vysvetľujú Čo sa pokazilo a čo skúsiť namiesto toho

Ďalšie dva návyky ušetria veľa starostí.

Držte zoznam krátky. Popis každého nástroja ide modelu s každou požiadavkou. Pri piatich jasných nástrojoch sa model pomýli zriedka. Pri štyridsiatich, ktoré sa prekrývajú, často. Ak sa zdá, že agent potrebuje desiatky nástrojov, zvyčajne robí naraz viac úloh. Podobné nástroje spojte do jedného s jasnou voľbou alebo prácu rozdeľte, ako opisujeme v článku o multiagentových systémoch.

Nástroje otestujte bez modelu. Každý nástroj je obyčajný kód. Skôr než do hry vstúpi AI, zavolajte ho priamo so správnymi aj nesprávnymi vstupmi a s nepríjemnými prípadmi. Napríklad s termínom v minulosti, s pacientom, ktorý neexistuje, alebo s tou istou rezerváciou poslanou dvakrát. Problémy, ktoré nájdete neskôr, sa potom naozaj týkajú rozhodnutí modelu a tie sa hľadajú oveľa ľahšie.

Keď nástroje zlyhajú

Nástroje zlyhávajú neustále: systém nebeží, termín niekto obsadil pred sekundou, vyhľadávanie nič nenájde. Počítajte s tým:

  • Vracajte chyby, s ktorými model vie niečo urobiť. „Termín už nie je voľný. Najbližšie voľné: st 17:00, št 9:30“ mu umožní pokračovať. „Error 500“ nie.
  • Obmedzte opakovania a počet krokov. Určte, koľko volaní nástrojov smie jedna úloha urobiť. Zmätený agent sa tak zastaví, namiesto toho, aby sa točil dokola a zvyšoval náklady.
  • Odovzdajte prácu čisto. Keď agent úlohu nedokončí, odovzdá ju človeku so zhrnutím toho, čo skúšal.
  • Zaznamenávajte každé volanie. Názov nástroja, vstupy, výsledok a čas. Keď sa niečo pokazí, zo záznamu zistíte, či model žiadal zlú vec, alebo nástroj urobil chybu.

Samostatným rizikom je nedôveryhodný obsah. Ak nástroj vráti text z e-mailu alebo webovej stránky, môžu v ňom byť pokyny určené modelu. Volá sa to prompt injection a je to ďalší dôvod, prečo nástroje na zápis potrebujú limity, aj keď sa model správa slušne. Ako sa brániť, opisujeme v článku o bezpečnosti AI agentov.

Kam zapadá MCP

Function calling je mechanizmus vo vnútri jednej AI aplikácie. Možno chcete tie isté nástroje vo viacerých aplikáciách: vo vlastnom agentovi, v AI asistentovi na počítačoch zamestnancov a v nástroji na programovanie. Bežne by ste ich museli prepojiť s každou zvlášť.

Model Context Protocol (MCP) túto duplicitu odstraňuje. Je to otvorený štandard, ktorý predstavil Anthropic koncom roka 2024 a dnes ho podporujú hlavní poskytovatelia AI. Nástroje a dáta zabalíte raz do „MCP servera“ a použije ho každá kompatibilná aplikácia. Model pod tým stále volá nástroje presne tak, ako sme opísali vyššie. MCP len zjednocuje, ako sa nástroje opisujú a ako sa k nim pristupuje. Viac sa dočítate v článku Čo je MCP?

Tento prístup sme použili pri asistentovi Charlie pre Shovels, ktorý odpovedá na otázky o stavebných povoleniach. Cez MCP servery sa model pýta priamo živej databázy. Odpovede tak vychádzajú z aktuálnych záznamov, nie z toho, čo si model náhodou pamätá.

Čo ďalej

Ak plánujete agenta, spíšte zoznam nástrojov skôr než čokoľvek iné:

  1. Spíšte akcie, ktoré dnes pri tejto úlohe robí človek.
  2. Z každej spravte úzky nástroj s jasným názvom a čo najmenej vstupmi.
  3. Pri každom označte čítanie alebo zápis a rozhodnite, ktoré zápisy treba schvaľovať.
  4. Overte, či vaše systémy zvládnu každú akciu cez API.
  5. Napíšte testovacie prípady: desať požiadaviek, ktoré majú použiť daný nástroj, a päť, ktoré nie.

Ak je zoznam krátky a jasný, agent sa zvyčajne postaví ľahšie, než čakáte. Ak sa naň chcete pozrieť spolu s nami, dohodnite si 30-minútový hovor.

Ďalšie články.

  1. Ako zaviesť generatívnu AI vo firme: plán na 90 dní

    Praktický plán na 90 dní: prvý proces, zodpovední ľudia, výber nástrojov, pilot s kontrolou, riziká a dôvody, prečo sa zavádzanie AI zasekne.

  2. Čo je AI agent? Zrozumiteľne a bez žargónu pre firmy

    Čo je AI agent, čím sa líši od chatbota a AI workflowu, z čoho sa skladá a kde sa ho v bežnej firme oplatí použiť.

  3. Čo je MCP? Model Context Protocol vysvetlený pre firmy

    Čo je Model Context Protocol, ako prepojí AI aplikácie s vaším CRM, súbormi a databázami, kedy ho potrebujete a čo zabezpečiť ako prvé.

Všetky články

Chcete sa poradiť o svojom projekte?

Dohodnite si hovor a spolu prejdeme vaše možnosti.

JurajCEO, QikBuild

Z hovoru si odnesiete

  • Návrh, čo by sme postavili ako prvé
  • Orientačnú cenu
  • Odpoveď, či sa vám oplatí softvér na mieru
Dohodnúť 30-minútový hovor

Alebo napíšte na hello@qikbuild.com