A Pydantic szerint a kód legyen az ügynökök valódi gráfja

A Pydantic szerint az ügynökrendszerek vezérlését nem külön gráfkönyvtárakra, hanem magára a kódra kell bízni. A vállalat érvelése szerint a hagyományos gráfok nehezen egyeztetik össze a típusbiztonságot, a párhuzamos futtatást és a futási állapot mentését.
- A Pydantic szerint a kód maga is alkalmas az ügynökök gráfjának leírására.
- A Python vezérlési elemei elágazást, ciklust és párhuzamos végrehajtást is kezelhetnek.
- A típusbiztonság, a párhuzamosság és a pillanatképek egyszerre nehezen biztosíthatók.
- A Monty homokozott Python-értelmezőként a kód biztonságos futtatását célozza.
A gráf már most is ott van a programban
A Pydantic október 13-án közzétett írása szerint a fejlesztőknek az ügynökök által optimalizálandó mérőszámokra és a betartandó korlátokra kell összpontosítaniuk. A vállalat úgy látja, hogy az emberek egyre kevésbé kézzel írják majd meg a programokat, a feladatuk inkább a probléma pontos megfogalmazása és az ügynökök gyors iterációjának lehetővé tétele lesz.
A Pydantic vitatja azt a megközelítést, amelyben a fejlesztő csomópontokat és éleket ad át egy gráfkönyvtárnak, a könyvtár pedig végrehajtja a struktúrát. A cég szerint a Python vezérlési elemei önmagukban lefedik a gráfok legfontosabb működését: az if elágazás, a for ciklus, a függvényhívás kapcsolat, az except hibakezelési ág, az asyncio.gather pedig párhuzamos szétágazás és csatlakozás.
A bemutatott példában a reviewer és a summarize alügynökök aszinkron függvények, típusozott eredménnyel. A Python-kód egyszerre írja le a végrehajtási folyamatot, tartalmazza a hívási vermet, és lehetőséget ad a típusellenőrzésre.
A külön gráfréteg szerintük megkettőzi az állapotot
A Pydantic szerint egy gráfkönyvtár újabb reprezentációt épít a program állapotáról, amelyet folyamatosan összhangban kell tartani a kóddal. A könyvtári csomópontok gyakran olyan függvények, amelyeket nem közvetlenül hívnak, az élek regisztrációs műveletekké válnak, az állapot pedig szótárban vagy vezérlésen kívül módosított adatobjektumban jelenik meg.
A vállalat saját korábbi példáját is összeveti egy egyszerű Python-megoldással. A pydantic-graph változatban külön gráfépítő, lépésdefiníciók, élek és összefésülési művelet szükséges ahhoz, hogy egy listán szereplő számokat párhuzamosan négyzetre emeljenek. A közvetlen Python-változat ugyanezt az asyncio.gather használatával oldja meg.
A Pydantic szerint a diagram továbbra is hasznos lehet, de a kódhoz készített ábrának kell maradnia. A pydantic-graph Mermaid-formátumban is képes megjeleníteni a gráfot. A probléma az, ha maga a rajz lesz a végrehajtás alapja, különösen olyan ügynököknél, amelyeknél a szükséges vezérlési folyamat gyakran csak futás közben alakul ki.
Három elvárás, amelyet nehéz egyszerre teljesíteni
A Pydantic három tulajdonságot emel ki az ügynökgráfoknál: a típusbiztonságot, a párhuzamos végrehajtást és a pillanatképek készítését. A pillanatképnek lehetővé kell tennie, hogy egy leállt futás a legutóbbi állapotból folytatódjon, ugyanazzal az eredménnyel, mintha nem szakadt volna meg.
A vállalat szerint a párhuzamos ágak állapotmódosításai miatt ez a három cél nehezen fér össze. Ha több csomópont egyszerre módosít egy közös állapotot, a mentés pillanatában nem feltétlenül világos, mely műveletek történtek már meg. Újraindításkor egy módosítás kétszer futhat le, vagy kimaradhat, és a futtató rendszer azt sem tudhatja, hogy egy külső művelet, például egy e-mail elküldése, biztonságosan megismételhető-e.
A Pydantic szerint erre megoldás lehet, ha a csomópontok nem közvetlenül írják az állapotot, hanem változtatási leírást adnak vissza, amelyet a futtatókörnyezet egy rögzítési ponton alkalmaz. Párhuzamos ágaknál ehhez összefésülési szabályokra van szükség. A típusellenőrző ellenőrizheti a szabály aláírását, de a vállalat szerint nem tudja igazolni, hogy az összefésülés sorrendtől független, illetve hogy a részleges módosítások után minden állapotinvariáns teljesül.
A Monty a kód biztonságos futtatását célozza
A Pydantic szerint az ügynökök által létrehozott kód futtatása külön problémát jelent. Erre a célra készítették a Montyt, amelyet a cég kifejezetten erre fejlesztett, homokozott Python-értelmezőként ír le. A Monty képes pillanatképet készíteni és folytatni a futtatást minden külső függvényhívásnál, például a bemutatott reviewer és summarize hívásakor.
A megközelítés a felhasználók számára azt jelenti, hogy az ügynökök vezérlését közvetlenül olvasható Python-kód írhatja le. A Pydantic állítása szerint ezt a kódot a fejlesztők és a modellek is könnyebben értelmezhetik, miközben megmarad a típusellenőrzés, a párhuzamos futtatás és a futás folytatásának lehetősége.
Pydantic: The code is the graph


