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 a pontos szupersztep-számoktól vagy iterációs számoktól függő alkalmazásokat érintik, amelyek a konvergenciahatáron vannak megadva max_iterations , ellenőrzik a kezdeti üzenetforrás-azonosítót, vagy feltételezéseket tesznek az ellenőrzőpontok elhelyezéséről és sorrendjéről.
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éppen egyetlen ellenőrzőpont sem tudta visszajátszani a kezdő végrehajtót az eredeti bemenetből, vagy reprodukálni egy emberi folytatást a továbbított 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
| Area | 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 a kezdő végrehajtóhoz, amely az első szuperstepben fut. | Minden friss futtatás egy további superstep_started eseményt bocsát superstep_completed ki. |
| Iterációk száma | Az 1. iteráció az első szupersztepet jelentette a kezdő végrehajtó futtatása után. | Az 1. iteráció futtatja a kezdő végrehajtót. A későbbi munka egy iterációval vált. | 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
| Area | 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 a kezdő végrehajtóhoz várólistára helyezett eredeti bemenetet. | A belépési ellenőrzőpont visszaállítása visszajátssza a teljes futtatást, beleértve a kezdő végrehajtót is. |
| Válasz ellenőrzőpont | A kéréseseményre adott válasz nem lett rögzítve az ellenőrzőponton. | A válaszbeviteli ellenőrzőpont a válasz kézbesítése és a felhasználó szuperstep futtatása előtt jön létre. | A válasz-belépési ellenőrzőpont visszaállítása visszajátssza a választ használó 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ói munka műszakjai egy szupersztep segítségével. 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ó a kezdeti üzenet forrásazonosítóját használja, cserélje le a merevlemez-azonosítót "Workflow" a kezdő végrehajtó belső élének forrásazonosítójára.
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 ad "internal:<executor_id>"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 újrafuttatja a kezdő végrehajtót, és reprodukálja a teljes munkafolyamat-futtatást.
Minden befejezett szuperstep után a keretrendszer továbbra is létrehoz egy ellenőrzőpontot. A $N$ szupersteps-ekkel való futtatáshoz $N + 1$ ellenőrzőpontokra számíthat: a belépési ellenőrzőpontot, majd minden befejezett szupersztephez egy ellenőrzőpontot.
Tekintse át az iterációs-0 ellenőrzőpontot feltételező kódot, amely a kezdő végrehajtó által létrehozott á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 folytatja a munkafolyamatot workflow.run(responses=...), a keretrendszer most létrehoz egy válasz-belépési ellenőrzőpontot a válaszok sorban állása és az őket használó szuperstep futtatása előtt. 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 iteration_count cikluson belüli ellenőrzőpontok előzményei nem garantáltan egyediek. Kövesse a previous_checkpoint_id láncot az ellenőrzőpont-sorrend meghatározásához. Ha a legújabb ellenőrzőpontra van szüksége, használja a Checkpoint Storage API-t a legnagyobb iteration_counthelyett.
Migrálási ellenőrzőlista
- A pontos szupersztep-számtól vagy iterációs számoktól függő frissítési állítások és eseményfelhasználók.
- 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 következőre
"Workflow"INTERNAL_SOURCE_ID(start_executor.id): . - A végrehajtás előtti bemeneti ellenőrzőpontként kezelje az iteráció-0 ellenőrzőpontot.
- Rendelje meg az emberi ciklikus ellenőrzőpontokat ahelyett, hogy egyedinek tekintenél
iteration_count. - 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.