Vissza a bloghoz

ProCat Solutions

Agent-to-agent: amikor AI-ügynökök egymással beszélnek

MCP, tool-use, planner/worker és handoff minták, guardrailek, human-in-the-loop, tracing: mikor érdemes többügynökös rendszert építeni, mikor elég egy workflow.

ProCat Solutions ai-agentmcporchestrationllmobservabilityarchitektura
Agent-to-agent: amikor AI-ügynökök egymással beszélnek

Idén több olyan rendszert építettünk, amelyben nem egy LLM válaszol egy kérdésre, hanem több, különböző feladatú ügynök adja egymásnak a munkát. A tapasztalat vegyes: bizonyos feladatoknál ez az egyetlen járható út, máshol viszont egy egyszerű, determinisztikus workflow olcsóbb, gyorsabb és megbízhatóbb. Ebben a cikkben azt foglaljuk össze, mit tanultunk.

Tool-use és MCP: a közös nyelv

Az ügynökök közötti együttműködés alapja, hogy a modell eszközöket tud hívni: strukturált paraméterekkel meghív egy függvényt, és a visszakapott eredménnyel folytatja a gondolkodást. A Model Context Protocol (MCP) ezt szabványosítja: az eszközök egy külön szerverben élnek, önleíró sémával, és bármelyik ügynök, bármelyik modellszolgáltatóval ugyanúgy éri el őket.

Nálunk ez gyakorlatilag azt jelenti, hogy a belső rendszereink (CRM-lekérdezés, naptárfoglalás, hívásindítás, számlázási státusz) MCP-szerverként vannak kitéve, és az ügynökök csak ezen keresztül érnek el bármit. Ennek két előnye van: az eszközök egy helyen tesztelhetők és jogosultságkezelhetők, és az ügynök promptja nem tartalmaz semmit az integráció részleteiről.

Az eszközök tervezésénél a legfontosabb tanulság: kevés, jól elhatárolt eszköz jobb, mint sok apró. Egy “keresd meg az ügyfelet e-mail alapján” eszköz megbízhatóbb, mint egy általános SQL-futtató.

Orkesztrációs minták

Két mintát használunk rendszeresen.

A planner/worker felállásban egy ügynök lebontja a feladatot lépésekre, és minden lépést egy szűkebb kontextusú, olcsóbb modellel futó workernek ad ki. A worker nem látja a teljes beszélgetést, csak a saját feladatát és az ahhoz szükséges eszközöket. Ez csökkenti a költséget és a hibalehetőséget, viszont a planner minősége határozza meg az egészet.

A handoff mintában egy ügynök egy ponton átadja a beszélgetést egy másiknak, a teljes vagy szűrt kontextussal együtt. Hangalapú ügyfélszolgálatban ez a tipikus: egy általános recepciós ügynök felismeri, hogy időpontfoglalásról van szó, és átadja a foglalási ügynöknek, amelyiknek szűkebb, de pontosabb utasításai és eszközei vannak. A handoff a hívó számára láthatatlan, a rendszer számára viszont egy világos állapotváltás.

Mindkét mintánál a kommunikáció strukturált: az ügynökök nem szabad szövegben “beszélgetnek”, hanem sémával ellenőrzött üzeneteket adnak át. A szabad szöveges ügynök-ügynök párbeszéd látványos demókban, de a gyakorlatban hosszú, drága és nehezen debugolható.

Guardrailek és human-in-the-loop

Több ügynök több hibalehetőséget jelent, és a hibák terjednek. Ezért a védelmi vonalak nem a promptban vannak, hanem a kódban:

  • minden eszközhívás jogosultságellenőrzésen megy át, az ügynök identitása és a tenant alapján;
  • az írási műveletek (foglalás, e-mail-küldés, státuszváltás) explicit engedélyezési listán vannak, a többi eszköz csak olvas;
  • a bemenet és a kimenet sémaellenőrzött; ha az ügynök rossz formátumot ad, egyszer újrapróbálunk, utána hibát jelzünk;
  • lépésszám- és költséglimit ügynökönként és teljes futásonként, hogy egy körbe-körbe forgó ügynök ne tudjon végtelenül futni.

Bizonyos döntéseket egyáltalán nem engedünk automatikusan: ilyen a visszatérítés, a szerződéses feltétel módosítása vagy egy eszkalált panasz lezárása. Ezeknél az ügynök előkészíti a javaslatot, és egy ember hagyja jóvá, egy sorból, egy kattintással. A human-in-the-loop nem a rendszer gyengesége, hanem tervezett része: az ügynök munkájának egy jól definiált kimenete a “kérdezz meg egy embert”.

Observability: tracing ügynökök között

Egy több ügynökös futás hibakeresése tracing nélkül reménytelen. Minden futás egyetlen trace, amelyen belül minden ügynöklépés, modellhívás és eszközhívás egy span, a bemenettel, kimenettel, tokenszámmal és időtartammal. A handoffoknál a trace azonosító átmegy, így a teljes út egy helyen látható.

Ez adja a költség- és késleltetés-elemzést is. Több ügynök esetén a válaszidő összeadódik: ha egy planner lépés 2 másodperc, és három worker fut egymás után, a hívó 8-10 másodpercet vár. Hangalapú rendszerben ez elfogadhatatlan, ezért ott a workerek párhuzamosan futnak, ahol lehet, és a hívó közben kitöltő visszajelzést kap. A költség pedig könnyen többszörösére nő, mert minden ügynök a saját kontextusát újra és újra elküldi; a prompt cache és a szűk kontextusú workerek itt sokat számítanak.

Mikor van értelme, és mikor nem

Több ügynök akkor indokolt, ha a feladat lépései előre nem ismertek, a részfeladatok eltérő tudást és eszközkészletet igényelnek, és a hibás lépés visszavonható vagy emberi jóváhagyáshoz köthető. Tipikus példa egy összetett ügyfélszolgálati eset, ahol azonosítás, ügyintézés és utánkövetés eltérő rendszereket érint.

Nem indokolt, ha a lépések sorrendje ismert és állandó. Egy “hívás vége után írj összefoglalót, küldd el e-mailben, frissítsd a CRM-et” folyamat egy sima workflow, amelynek egyetlen lépésében van LLM (az összefoglaló). Ebben az esetben az ügynökös megközelítés csak bizonytalanságot, költséget és késleltetést ad hozzá.

A szabályunk egyszerű: először írjuk le a folyamatot determinisztikus workflow-ként. Ahol ez nem megy, mert a döntés valóban kontextusfüggő, ott jön egy ügynök. Ahol egy ügynök kontextusa túl nagyra nő, ott bontjuk többre. Fordítva, ügynökökből indulva, szinte mindig túlbonyolított rendszert kapunk.

Széchenyi Terv Plusz kedvezményezetti infoblokk
QR Code