Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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ésiteration == 1 -
superstep_completedésiteration == 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_iterationsegyenként. - Cserélje le a kezdeti forrásazonosító-ellenőrzéseket a(z)
"Workflow"helyettINTERNAL_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_countegyedi. - 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.