Architektura a rozšiřitelnost

Deterministické vs. nedeterministické: Kdy má agent rozhodovat sám?

DeterministickéStejný nástroj se spustípokaždé, bez ohledu naúsudek modeluNedeterministickéModel rozhoduje tah potahu, co a kdy zavolat

Jakmile má agent k dispozici nástroje, okamžitě vyvstává návrhová otázka: má u daného kroku rozhodnout model, který nástroj a kdy zavolá, nebo má být toto rozhodnutí předem naskriptované tak, aby proběhlo stejně pokaždé? Obě varianty jsou legitimní volbou a dobře postavený agentní systém obvykle obsahuje hodně obojího — dovednost spočívá v tom vědět, co který krok vyžaduje.

Dva režimy volání

Deterministické volání znamená, že volání je předem naskriptované: stejný nástroj, nebo stejná pevná sada nástrojů, se spustí pokaždé, kdy je daný krok dosažen, bez ohledu na to, k čemu model dospěje. Nedeterministické volání znamená, že model sám v danou chvíli rozhodne, který nástroj (pokud vůbec nějaký) zavolá, na základě svého čtení aktuální situace — může zavolat jeden nástroj, několik, nebo žádný, a volba se může lišit i při podobném vstupu mezi jednotlivými běhy.

Konkrétní ilustrace dělá kontrast názorným. V jednom skutečném produkčním systému, kterému se v této sérii věnujeme později, agent pro analýzu sentimentu při každém běhu bez podmínek načítá data ze tří pevných zdrojů — zpravodajského feedu, sociální sítě a fóra; jediné, o čem model rozhoduje, je jaké sentimentové skóre přiřadit tomu, co se vrátí. Sesterský agent ve stejném systému, pověřený makroekonomickou a zpravodajskou analýzou, si naopak tah po tahu sám vybírá, kterou podmnožinu z pěti dostupných datových nástrojů zavolá, v jakém pořadí, a opakuje to ve smyčce, dokud jeho vlastní úsudek neusoudí, že má dost informací.

Praktické pravidlo

Praktické doporučení nezní paušálně "upřednostňujte determinismus" ani "upřednostňujte flexibilitu" — jde o to přizpůsobit režim volání tomu, kolik úsudku daný krok skutečně vyžaduje a jak nákladný by byl špatný úsudek. Krok, kde je správná akce vždy stejná, nebo kde je chyba nákladná a těžko odhalitelná, je silným kandidátem na deterministické volání: ukotvěte ho pevně a nedovolte, aby variabilita modelu vnášela riziko do kroku, který flexibilitu nikdy nepotřeboval. Krok, kde správná akce skutečně závisí na kontextu, který je jasný až za běhu, je naopak silným kandidátem na to nechat rozhodnutí na nedeterministickém úsudku modelu — protože předem naskriptovat takové rozhodnutí by znamenalo hádat dopředu něco, co je lépe rozhodnout s výhodou konkrétního kontextu daného tahu.

Toto rozlišení se vrací neustále, jakmile ho začnete hledat: je to stejná myšlenka, která stojí za rozdílem mezi příkazem (deterministickým, vždy stejná akce) a akcí agenta (nedeterministickou, odvozenou modelem), a je to stejná myšlenka za schvalovacími body pro člověka, kde je samotné rozhodnutí přerušit běh kvůli člověku obvykle pevně deterministické, i když vše, co člověk posuzuje, bylo vytvořeno nedeterministicky.

Otázky pro váš tým

  • Které z vašich workflow byste nikdy nenechali rozhodovat agenta samotného?
  • Kde byla skutečným brzdícím faktorem spíše přílišná rigidita než přílišná autonomie?

Také dostupné v jazyce English

← Tři způsoby, jak agent přesahuje sám sebe: Tools, MCP a A2A Co je to "harness"? Skrytá vrstva za každým agentem →