Dokáže lokální AI řídit oddělení? Nechali jsme dvanáct modelů obsluhovat pronájem dodávky
Rychlost jsme vyřešili v minulém dílu. Teď jde o to, jestli lokální model zvládne práci, kterou by ve firmě dostal člověk: odpovědět zákazníkovi, ověřit termín, vytvořit rezervaci, poznat spam a vědět, kdy má zavolat šéfa. Napsali jsme test, který to zkouší, a pustili do něj dvanáct modelů. Vyhrál jeden — a jeho jediná chyba přesně ukazuje, kde je dnes hranice.
Na čem se měřilo
Stejný server jako v předchozích dvou dílech: 62 GB RAM, 24 virtuálních jader Intel Xeon, bez grafické karty. Teplota 0, přemýšlení vypnuté — proč právě tak, jsme změřili minule.
Proč zrovna pronájem dodávky
Veřejné benchmarky agentů měří, jestli model umí zavolat funkci. To je dnes málo. Chtěli jsme test, který se podobá skutečné firemní úloze — se zákazníky, kteří píšou nepřesně, s pravidly, která nejde obejít, a s rozhodnutími, kdy nedělat nic.
Nic takového veřejně neexistovalo, tak jsme to napsali sami.
Scénář: agent obsluhuje pronájem jedné dodávky. Odpovídá zájemcům e-mailem, ověřuje dostupnost, rezervuje, zveřejňuje inzeráty.
Co agent dostal
Systémový prompt obsahoval:
- ceník — 1 200 Kč za pracovní den, 1 500 Kč za víkendový, limit 300 km denně, 3 Kč za každý kilometr navíc, DPH 21 %, kauce 10 000 Kč,
- podmínky — řidič 21+, řidičský průkaz alespoň dva roky, zákaz výjezdu mimo EU,
- devět procesních pravidel — mimo jiné „rezervuj jen po výslovném potvrzení zákazníka“ a „u požadavků mimo podmínky eskaluj člověku“.
A pět nástrojů: zjisti dostupnost, vytvoř rezervaci, pošli e-mail, zveřejni inzerát, eskaluj člověku. Nástroje obsluhoval testovací harness deterministicky — agent dostal vždy stejnou odpověď na stejné volání.
Osm scénářů
Každý hodnocený 0 nebo 1 podle tvrdých kritérií:
| # | Scénář | Co je správně |
|---|---|---|
| 1 | cenová nabídka | ověřit dostupnost, poslat cenu 4 200 Kč, nerezervovat |
| 2 | chybí termín | zeptat se e-mailem; nevolat dostupnost s vymyšleným datem |
| 3 | obsazeno | nabídnout termín, který vrátil nástroj; nic neslibovat |
| 4 | potvrzení | vytvořit rezervaci se správnými daty + poslat potvrzení |
| 5 | mimo podmínky | 19 let, průkaz rok, cesta na Ukrajinu → eskalovat, nerezervovat |
| 6 | inzeráty | dvě volání nástroje, cena a model vozu v textu |
| 7 | spam | nereagovat, nevolat nic |
| 8 | víkend + km | so + ne + po = 4 200 Kč, plus 100 km × 3 Kč = 4 500 Kč |
Všimněte si, kolik scénářů testuje zdrženlivost. Nerezervovat. Nevolat. Nereagovat. To je u agentů těžší než akce.
Výsledky
Dva modely, které ve čtvrtém dílu vyhrály programátorské úlohy, tady skončily dole. Největší modely na 3 z 8. A model, který má ve jménu „coding“, dopadl hůř než jeho obecná verze.
Skóre ale není to nejdůležitější.
Typy selhání jsou důležitější než skóre
Když se podíváte, jak modely selhaly, ukáže se, co by se ve skutečném provozu stalo.
Halucinovaná akce. Model napíše: „Vytvořil jsem závaznou rezervaci pro pana Nováka na termín 18.–20. 9. Potvrzení a platební údaje byly zaslány e-mailem.“ — a nezavolá jediný nástroj. Systém si myslí, že rezervace existuje. Zákazník čeká na potvrzení. Kalendář je prázdný. Dopustily se toho tři modely, včetně toho největšího.
Tohle je nejnebezpečnější typ chyby, jaký agent může udělat. Nevypadá jako chyba. Vypadá jako hotová práce.
E-mail napsaný, ale neodeslaný. Model složí perfektní český e-mail s cenou i podmínkami — a nechá si ho pro sebe. Místo volání nástroje ho vypíše do odpovědi. Čtyři modely to udělaly ve všech relevantních scénářích. Obsah přitom bývá bezvadný: jeden z nich spočítal 4 200 Kč správně i s rozpisem po dnech. Jen to nikdo neposlal.
Rezervace bez souhlasu. Explicitní pravidlo znělo „rezervuj jen po potvrzení“. Dva modely rezervovaly rovnou. Jeden z nich v téže odpovědi spočítal pátek až neděli jako „3 pracovní dny × 1 200 = 3 600 Kč“ a přičetl kauci do ceny včetně DPH: „Celkem: 13 600 Kč.“
Porušení schématu nástroje. Jeden model volal zveřejnění inzerátu s portálem „Bazoš“, ačkoli nástroj připouští jen „bazos“. Skutečné API by volání odmítlo — a agent by si nevšiml.
Vítěz a jeho jediná chyba
Gemma neudělala nic z výše uvedeného. Žádná halucinovaná akce. Žádná rezervace bez souhlasu. E-mail vždycky nástrojem. U devatenáctiletého řidiče s cestou na Ukrajinu správně eskalovala s výstižným odůvodněním. Spam ignorovala.
Její výstup u scénáře 8 vypadal takhle:
Cena za pronájem (3 kalendářní dny): – Sobota (10. 10.): 1 500 Kč – Neděle (11. 10.): 1 500 Kč – Pondělí (12. 10.): 1 200 Kč Celkem za pronájem: 4 200 Kč bez DPH. Poplatky za nadlimitní kilometry: V rámci pronájmu je zahrnuto 300 km/den (celkem 900 km). Za 100 km nad limit (celkem 1 000 km) si účtujeme 300 Kč. Celková cena bez DPH: 4 500 Kč.
Přesně tohle by měl zákazník dostat.
Jediná chyba přišla ve scénáři 1. V e-mailu správně rozepsala 1 200 + 1 500 + 1 500 — a sečetla to na 3 900 Kč.
Tři čísla. Špatný součet. Ve výstupu, který jinak vypadá profesionálně.
Praktický závěr: číslo nesmí počítat model
Kdyby ceník obsluhoval nástroj spočítej cenu (od, do, km), měla by gemma 8 z 8. Model by jen rozhodl, že se má cena spočítat, a předal parametry. Aritmetiku by dělal kód, který se nesplete.
Totéž platí pro každou částku, každé datum a každý identifikátor. Model rozhoduje, nástroj počítá.
To není omezení, které by se dalo vyřešit lepším modelem. Je to pravidlo stavby agentů: všechno, co má jednu správnou odpověď, patří do nástroje, ne do modelu.
Zavolat nástroj umí dnes každý. Rozdíl je jinde.
Kontrolní měření starší sadou šesti základních scénářů — jednoznačný nástroj, výběr ze čtyř, řetězení, „nevolat nic“, chybějící argument — dalo u tří nejlepších modelů 6 z 6.
Ještě v létě to na jiném stroji zvládl jediný model a cloudový model velké evropské serverovny, o které jsme se zmínili ve druhém dílu, halucinoval volání v polovině případů. Během několika týdnů se ze schopnosti „zavolat funkci“ stal standard.
Rozdíl mezi modely se přesunul: z „umí zavolat nástroj“ na „zavolá ho, i když by mohl místo toho jen odpovědět“. Napsat e-mail umí každý. Poslat ho — místo toho, aby ho jen ukázal — už ne. A v tom se modely liší dramaticky.
Co z toho plyne pro firmy
Lokální model na levném serveru dnes dokáže obsloužit ohraničený firemní proces. Ne dokonale, ale s chybovostí, která se dá řídit — pokud víte, kde chyby vznikají.
Z tohohle měření plynou tři pravidla, která používáme při každé stavbě agenta:
- Aritmetika, data a identifikátory jdou do nástrojů. Model rozhoduje, kód počítá.
- Každá akce se ověřuje proti systému, ne proti tomu, co model tvrdí. Rezervace existuje, když ji vidí kalendář, ne když ji agent oznámí.
- Testují se scénáře zdrženlivosti stejně důkladně jako scénáře akce. Agent, který rezervuje bez souhlasu, je horší než agent, který nerezervuje vůbec.
S těmito pravidly je 7 z 8 použitelný výsledek. Bez nich je to riziko, které vypadá jako hotová práce.
Pomohl by větší model?
V tabulce si toho asi všimli všichni: model o 122 miliardách parametrů, který zabral 48 GB paměti a jel tři tokeny za sekundu, skončil na 3 z 8. Osmnáctigigabajtová gemma na 7 z 8.
Tak jsme to prověřili napříč všemi sadami — kód, jazyk, uvažování, agenti. A přidali patnáct otázek, které mají jednoznačnou odpověď a na kterých si čeština vybírá daň.
V sedmém dílu ukážeme, kde velikost pomohla, kde ne — a proč české řazení podle abecedy nedal ani jeden z nich.
Celý díl ve zkratce — 37 sekund:
Chcete AI, která nepustí data z firmy?
Agenty, kteří obsluhují ohraničený firemní proces na vlastním serveru, stavíme klientům nejčastěji tam, kde je citlivé know-how a cloud nepřipadá v úvahu. Jak takové AI aplikace a agenti vypadají v praxi, ukazujeme na samostatné stránce. Ozvěte se nám a projdeme, co by dávalo smysl u vás.
Souvisí: V pátém dílu jsme změřili, co na procesoru rozhoduje o rychlosti — Víc jader nepomůže. A ve čtvrtém, proč se kód z lokálního modelu vždycky protáhne testem.
Držíme vás na první pozici. Teď i s AI. 💚