Python munkafolyamat-ellenőrzőpontok frissítése 1.13.0-ra

Az Agent Framework 1.13.0 kisebb kompatibilitástörő módosításokat tartalmaz Python munkafolyamat-végrehajtáshoz. A legtöbb alkalmazás nem igényel módosításokat. A módosítások azokat az alkalmazásokat érintik, amelyek pontos superstep-számoktól vagy iterációszámoktól függenek, a konvergenciahatáron max_iterations értéket állítanak be, ellenőrzik a kezdeti üzenet forrásazonosítóját, vagy feltételezésekkel élnek az ellenőrzőpontok elhelyezésével és sorrendjével kapcsolatban.

Background

Az 1.13.0 előtt az ellenőrzőpont-ellenőrzés nem felelt meg teljes mértékben annak az ígéretének, hogy rögzíti a munkafolyamat állapotát, amely a végrehajtás bármely rögzített határvonalról való folytatásához szükséges. A kezdő végrehajtó a superstep és az ellenőrzőpont ciklus előtt futott, így a legkorábbi ellenőrzőpont a kezdő végrehajtó kimenetét és frissített állapotát tartalmazta, de az eredeti munkafolyamat-bemenetet nem. Hasonlóképpen, a kéréses eseményekre adott válaszok kézbesítése és feldolgozása anélkül történt meg, hogy azokat először feljegyezték volna egy ellenőrzőponton. Ennek eredményeként egyetlen ellenőrzőpont sem tudta sem visszajátszani a start végrehajtót az eredeti bemenet alapján, sem újra előállítani az ember közreműködésével történő folytatást az átadott válaszból.

Viselkedésbeli változások

Az 1.13.0-s verzió bezárja ezeket a hiányosságokat. A kezdő végrehajtó most az első szuperstepben fut, a belépési ellenőrzőpont rögzíti a kezdeti bemenetet a szupersztep előtt, és egy válasz-bejegyzés ellenőrzőpont rögzíti a válaszokat a feldolgozás előtt. Ezek a módosítások együttesen egy ellenőrzőponttal rendelkező munkafolyamatot teljes mértékben visszajátszhatóvá tesznek a bemenetből, beleértve a cikluson belüli emberi folytatásokat is.

Important

Ezek a módosítások nem érintik az 1.13.0-s verzió előtt létrehozott ellenőrzőpontokat. A meglévő ellenőrzőpontok továbbra is támogatottak, és a frissítés után is visszaállíthatók.

Műveletet igénylő módosítások

Terület 1.13.0 előtt Az 1.13.0-s és újabb verziókban Felhasználóra gyakorolt hatás
Végrehajtó indítása A kezdő végrehajtó a superstep ciklus előtt futott. A bemenet várólistára kerül az indító végrehajtó számára, amely az első szuperlépésben fut le. Minden új futtatás egy további superstep_started és superstep_completed eseményt generál.
Iterációk száma Az 1. iteráció a kezdő végrehajtóegység futását követő első szuperlépés volt. Az 1. iteráció futtatja a kezdő végrehajtót. A későbbi munka egy iterációval eltolódik. A korábban $N$ iterációkat igénylő munkafolyamatnak most $N + 1$-ra van szüksége.
Bemeneti üzenet forrása A kezdeti üzenetben a kódolt forrásazonosító "Workflow"volt. A kezdeti üzenet a kezdő végrehajtó belső peremén keresztül érkezik, és forrásazonosítóval INTERNAL_SOURCE_ID(start_executor.id)rendelkezik. A kezdeti üzenet forrásazonosítóját beolvasó vagy szűrő kódnak az új értéket kell használnia.

Visszajátszási fejlesztések

Terület 1.13.0 előtt Az 1.13.0-s és újabb verziókban Javulás
Kezdeti ellenőrzőpont Az iteráció-0 ellenőrzőpont a kezdő végrehajtó futtatása után jött létre. Rögzítette a végrehajtó kimeneti üzeneteit és frissített állapotát, de az eredeti bemenetet nem. Az 1. szupersztep előtt létrejön egy belépési ellenőrzőpont. Rögzíti az indító végrehajtóhoz sorba állított eredeti bemenetet. Az indítási ellenőrzőpont visszaállítása újrajátssza a teljes futást, beleértve az indító végrehajtót is.
Válasz ellenőrzési pontja A kéréseseményre adott válasz nem lett rögzítve az ellenőrzőponton. A válaszbejegyzési ellenőrzési pont a válasz kézbesítése után, és azt feldolgozó szuperlépés futása előtt jön létre. A válaszbeviteli ellenőrzőpont visszaállítása újrajátssza a választ feldolgozó folytatást.

Superstep-eseménykezelés frissítése

Egy friss munkafolyamat-futtatás most még egy pár szuperstep-eseményt hoz létre, mert a kezdő végrehajtó az 1. superstepben fut:

  • superstep_started és iteration == 1
  • superstep_completed és iteration == 1

A későbbi végrehajtó munkája egy szuperlépéssel eltolódik. Frissítse a teszteket, a telemetriát, a folyamatjelzőket vagy más kódot, amelyek pontos eseményszámot feltételeznek, vagy egy adott végrehajtót rögzített iterációra képeznek le.

Az eseménytípusokra a darabszámra vagy az iterációra való támaszkodás nélkül válaszoló kódnak nem kell változnia.

Tekintse át a maximális iterációs korlátot

A max_iterations korlát most már tartalmazza a kezdő végrehajtót futtató szuperstepet. Ha egy munkafolyamat korábban a teljes korlátját használta, növelje a konfigurált értéket eggyel:

from agent_framework import WorkflowBuilder

workflow = WorkflowBuilder(
    start_executor=start_executor,
    max_iterations=previous_max_iterations + 1,
).build()

Nincs szükség módosításra, ha a munkafolyamat már konvergál a konfigurált korlát elérése előtt.

Kezdeti üzenetforrás-ellenőrzések frissítése

Ha egy kezdő végrehajtó felhasználja a kezdeti üzenet forrásazonosítóját, cserélje le a fixen beállított "Workflow" értéket a kezdő végrehajtó belső élének forrásazonosítójával.

1.13.0 előtt:

is_workflow_input = ctx.source_executor_ids != ["Workflow"]

Az 1.13.0-s és újabb verziókban:

from agent_framework import INTERNAL_SOURCE_ID

is_workflow_input = ctx.source_executor_ids != [INTERNAL_SOURCE_ID(self.id)]

INTERNAL_SOURCE_ID(executor_id) jelenleg "internal:<executor_id>" ad vissza. Használja a segédet a sztring létrehozása helyett, hogy a kód a keretrendszer forrásazonosító-formátumát kövesse.

Ellenőrzőpont kezelésének frissítése

Kezdeti beviteli ellenőrzőpontok

Ha az ellenőrzőpontozás engedélyezve van, minden új futtatás most létrehoz egy belépési ellenőrzőpontot a következő helyen iteration_count == 0: . Ez az ellenőrzőpont az eredeti bemenetet tartalmazza a kezdő végrehajtónak címzett, repülés közbeni üzenetként. A visszaállítás újra lefuttatja a kezdő végrehajtási lépést, és újra létrehozza a teljes munkafolyamat-futást.

Minden befejezett szuperstep után a keretrendszer továbbra is létrehoz egy ellenőrzőpontot. Egy $N$ szuperlépésből álló futás esetén várhatóan $N + 1$ ellenőrzőpont lesz: a belépési ellenőrzőpont, majd minden befejezett szuperlépés után egy-egy ellenőrzőpont.

Tekintse át azt a kódot, amely abból indul ki, hogy az iteráció-0 ellenőrzőpont az indító végrehajtó által előállított állapotot tartalmazza. Ez az állapot most megjelenik az 1. szuperstep után létrehozott ellenőrzőponton.

Kérelem-válasz ellenőrzőpontok

Amikor a workflow.run(responses=...) használatával folytatja a munkafolyamatot, a keretrendszer most egy válaszbejegyzési ellenőrzőpontot hoz létre, miután a válaszokat sorba állította, és mielőtt lefuttatná az azokat feldolgozó szuperlépést. Az ellenőrzőpont visszaállítása újra visszaadja a rögzített válaszokat, és visszajátssza a munkafolyamat többi részét.

A válaszbejegyzés ellenőrzőpontja megegyezik iteration_count a függőben lévő kérést tartalmazó előző ellenőrzőponttal. Ez egy külön ellenőrzőpont, amelynek previous_checkpoint_id a függőben lévő kérések ellenőrzőpontjára mutat.

Important

A(z) iteration_count nem garantáltan egyedi az ember által felügyelt ellenőrzőpont-előzményekben. Kövesse a previous_checkpoint_id láncot az ellenőrzőpont-sorrend meghatározásához. Ha a legfrissebb checkpointra van szüksége, a legnagyobb iteration_count kiválasztása helyett használja a checkpointtároló API-t.

Migrálási ellenőrzőlista

  • Frissítse azokat az ellenőrző állításokat és eseményfogyasztókat, amelyek pontos szuperlépésszámoktól vagy iterációszámoktól függenek.
  • Csak az előző korlátot elérő munkafolyamatok esetében növelje max_iterations egyenként.
  • Cserélje le a kezdeti forrásazonosító-ellenőrzéseket a(z) "Workflow" helyett INTERNAL_SOURCE_ID(start_executor.id) elemre.
  • A végrehajtás előtti bemeneti ellenőrzőpontként kezelje az iteráció-0 ellenőrzőpontot.
  • Rendezze az ember a folyamatban típusú ellenőrzőpontokat származás szerint ahelyett, hogy feltételezné, hogy a iteration_count egyedi.
  • Ellenőrizze, hogy a belépési ellenőrzőpont és a válasz-belépési ellenőrzőpont ismételt elhelyezése a várt kimenetet és mellékhatásokat eredményezi-e.

A megvalósítás részleteiért lásd: A munkafolyamat-ellenőrzőpont teljes újrajátszhatóságának engedélyezése.