Levná a efektivní AI architektura: skládej nástroje, nestav monolit
Jak jsme v Synthě postavili AI chat, který umí komunikovat napříč několika databázemi — a proč to nedělá jeden velký model se vším přístupem, ale spousta malých nástrojů poskládaných za sebe.
V Synthě má AI chat přístup k datům z Helios ERP, vlastním scraperům sledujícím konkurenci i analytice z GA4 a Microsoft Clarity. První verze, kterou jsme zkoušeli, dávala modelu přístup ke všem třem zdrojům najednou — jeden velký systémový prompt se třemi schématy databází, jeden model, který si měl poradit se vším.
Fungovalo to, ale draze a nespolehlivě. Každý dotaz — i ten nejjednodušší, třeba „kolik jsme prodali kusů minulý týden“ — zaplatil tokeny za schémata všech tří zdrojů, i když se týkal jen jednoho. A čím víc nástrojů a kontextu model dostal najednou, tím častěji si spletl, který nástroj použít, nebo si vymyslel sloupec, který v databázi vůbec není.
Přestavěli jsme to na sadu malých, úzce zaměřených nástrojů — jeden pro Helios, jeden pro scraper data, jeden pro analytiku — každý s vlastním malým schématem a jasně daným úkolem. Nad nimi běží lehký router, který jen rozhodne, který nástroj dotaz potřebuje, a teprve poté se zavolá model se schématem toho jednoho zdroje.
Důležité je, že se nenapojí všechny zdroje najednou. Router si dotaz nejdřív rozebere a sestaví vlastní plán — roadmap toho, co je potřeba se kterého nástroje zeptat. Podle konkrétních slov v dotazu (třeba „top 10“, „včera“, „jen kategorie XYZ“) předem určí filtry a limity, které ke každému nástroji pošle, takže pamětí a kontextem projde jen to, co je pro odpověď skutečně potřeba. Rozhoduje se podle hierarchického stromu — nejdřív se určí oblast dotazu, pak uvnitř ní konkrétní nástroj a s jakými parametry, a teprve nakonec se zavolá.
Výsledek: běžný dotaz je výrazně levnější, protože platíte jen za kontext, který skutečně potřebujete. A je i spolehlivější — malý nástroj s jedním jasným úkolem je snazší otestovat, logovat a opravit, než jeden model se vším přístupem najednou.
Věcné rady
- Dej každému nástroji jeden zdroj dat a jeden úkol — ne přístup ke všemu
- Nech router rozhodnout, který nástroj zavolat, teprve pak načti jeho schéma do kontextu
- Nech routera nejdřív sestavit plán volání (roadmap) podle klíčových slov v dotazu, teprve pak volej nástroje — ne naopak
- Cachuj schémata a časté dotazy — schéma databáze se nemění každou minutu
- Loguj každé volání nástroje zvlášť — u jednoho velkého agenta se chyba hledá mnohem hůř
- Měř cenu za dotaz, ne jen celkovou cenu — ukáže ti, který nástroj je zbytečně nacpaný kontextem