Context
O companie care pune un agent AI în contact direct cu clienții — la telefon, într-un widget web sau pe un canal de mesagerie — are nevoie simultan de trei lucruri: răspunsuri bazate pe propriile materiale aprobate, acțiuni care au loc cu adevărat (o programare, o comandă sau o ofertă) și o modalitate de a verifica, înainte de lansare și săptămânal după aceea, că agentul respectă limitele stabilite.
Dificultatea nu este primul demo, ci rularea aceluiași runtime pentru multe companii diferite, fiecare cu propriile cunoștințe și unelte și cu propriul public, precum și măsurarea întregului proces: ce a răspuns agentul, ce a făcut, cât a costat și dacă discuția a fost rezolvată cu adevărat.
Ce am construit
Un singur runtime deservește mai multe profiluri de companie. Fiecare profil își declară identitatea, limitele, colecția de cunoștințe, uneltele permise și publicul (extern sau intern), astfel încât o clinică stomatologică, un hotel și un departament de vânzări B2B rulează pe aceeași bază de cod, cu configurații diferite.
- Retrieval ancorat — documentele sunt împărțite în fragmente și indexate într-un vector store pentru fiecare profil; fragmentele relevante sunt regăsite pe baza unor praguri de scor și primesc vizibilitate publică sau internă, astfel încât un agent intern vede marjele, iar unul destinat clienților nu.
- Execuție de acțiuni — rutare a intenției, planificare a uneltelor și un executor iterativ cu limite stricte de apeluri și iterații, astfel încât o programare sau o comandă este o acțiune reală și delimitată, nu o confirmare inventată.
- Memorie a clientului cu proveniență — pentru fiecare fapt reținut sunt înregistrate sursa și categoria de public căreia îi este destinat; faptul este filtrat pentru fiecare agent și injectat ca date delimitate explicit și marcate drept neverificate, astfel încât memoria nu devine niciodată un canal de instrucțiuni.
- Simulare și QA — personaje LLM discută cu runtime-ul real de chat și sunt evaluate de un judecător LLM, alături de detectoare deterministe pentru divulgarea datelor (prompt de sistem, scheme de unelte, credențiale și cifre interne), pe care niciun răspuns convingător nu le poate eluda; un panou de QA evaluează în același mod conversațiile reale.
- Măsurarea rezultatelor — conversațiile sunt clasificate determinist drept rezolvate sau escaladate și tarifate în consecință, astfel încât facturarea pentru fiecare rezolvare este reproductibilă, iar costurile sunt importate de la fiecare furnizor.
- Agent-către-agent prin MCP — agentul companiei își expune uneltele printr-un server Model Context Protocol, astfel încât un alt asistent poate negocia o programare prin aceeași interfață, cu limite pentru apeluri, runde de conversație și timp.
Stack
TypeScript pe Node cu Fastify și WebSockets, React și Vite pentru consola operatorului, Postgres cu Prisma pentru conversații și date de cost, Qdrant pentru vectori cu embeddings locale și o singură interfață pentru furnizorii LLM, cu API-uri găzduite, modele locale și agenți CLI în spatele ei. Vocea rulează prin mai multe runtime-uri realtime (telefonie, WebRTC și voce din browser), cu speech-to-text și text-to-speech independente de furnizor. O suită extinsă de teste unitare blochează implicit apelurile către furnizori reali.
Status
Produs intern, folosit ca bază pentru implementări de agenți destinate clienților. Un demo live pentru mai multe domenii de activitate este disponibil la cerere.