Upgrade kontrolních bodů pracovního postupu Python na verzi 1.13.0

Agent Framework 1.13.0 obsahuje menší zásadní změny Python provádění pracovního postupu. Většina aplikací nevyžaduje změny. Změny ovlivňují aplikace, které závisí na přesných počtech superkroků nebo iteračních číslech, nastavených max_iterations na hranici konvergence, kontrole počátečního ID zdroje zprávy nebo vytvoření předpokladů o umístění a řazení kontrolních bodů.

Pozadí

Před verzí 1.13.0 kontrolní bod plně nesplní svůj slib zachycení stavu pracovního postupu potřebného k obnovení provádění z jakékoli zaznamenané hranice. Spouštěcí exekutor běžel před smyčkou superkroku a kontrolního bodu, takže nejstarší kontrolní bod obsahoval výstup a aktualizovaný stav spouštěcího exekutoru, ale ne původní vstup pracovního postupu. Podobně se odpovědi na události požadavku doručily a zpracovávaly, aniž by se nejprve zaznamenávaly do kontrolního bodu. V důsledku toho by žádný kontrolní bod nemohl přehrát spouštěcí exekutor z původního vstupu nebo reprodukovat pokračování smyčky člověka v rámci smyčky z doručené odpovědi.

Změny chování

Verze 1.13.0 tyto mezery zavře. Spouštěcí exekutor se teď spouští v prvním superkroku, vstupní kontrolní bod zaznamenává počáteční vstup před tímto superkrokem a záznamy kontrolního bodu pro zadání odpovědi doručené před zpracováním. Tyto změny společně dělají kontrolní pracovní postup, který je plně přehrátelný ze svého vstupu, včetně pokračování smyčky člověka v rámci smyčky.

Important

Tyto změny nemají vliv na kontrolní body vytvořené před verzí 1.13.0. Stávající kontrolní body zůstanou podporovány a po upgradu je možné je obnovit.

Změny, které můžou vyžadovat akci

Area Před 1.13.0 Ve verzi 1.13.0 a novějších verzích Dopad na uživatele
Spuštění exekutoru Spouštěcí exekutor běžel před smyčkou superkroku. Vstup se zařadí do fronty pro spouštěcí exekutor, který se spustí v prvním superkroku. Každé nové spuštění generuje jednu další superstep_started událost a superstep_completed událost.
Počet iterací Iterace 1 představovala první superkrok po spuštění exekutoru spuštění. Iterace 1 spustí spouštěcí exekutor. Pozdější pracovní směny o jednu iteraci. Pracovní postup, který dříve potřeboval iterace $N$, teď potřebuje $N + 1$.
Zdroj vstupní zprávy Počáteční zpráva měla pevně zakódované zdrojové ID "Workflow". Počáteční zpráva se doručí prostřednictvím interního hraničního zařízení spouštěcího exekutoru a má ID INTERNAL_SOURCE_ID(start_executor.id)zdroje . Kód, který čte nebo filtruje POČÁTEČNÍ ID zdroje zprávy, musí použít novou hodnotu.

Vylepšení možností přehrání

Area Před 1.13.0 Ve verzi 1.13.0 a novějších verzích Zlepšení
Počáteční kontrolní bod Kontrolní bod iterace-0 byl vytvořen po spuštění spouštěcího exekutoru. Zachytil výstupní zprávy exekutoru a aktualizovaný stav, ale ne původní vstup. Vstupní kontrolní bod se vytvoří před superkrokem 1. Zaznamenává původní vstupní vstup zařazený do fronty pro spouštěcí exekutor. Obnovením vstupního kontrolního bodu se přehraje celé spuštění, včetně spouštěcího exekutoru.
Kontrolní bod odpovědi Odpověď na událost požadavku byla doručena, aniž by se nejprve zaznamenala do kontrolního bodu. Kontrolní bod pro zadání odpovědi se vytvoří po doručení odpovědi a před spuštěním superkroku. Obnovením kontrolního bodu pro zadání odpovědi se přehraje pokračování, které odpověď využívá.

Aktualizace zpracování událostí superkroku

Nové spuštění pracovního postupu teď vytvoří ještě jednu dvojici událostí superkroku, protože spouštěcí exekutor běží v superkroku 1:

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

Následné pracovní směny exekutoru o jeden superkrok. Aktualizace testů, telemetrie, indikátorů průběhu nebo jiného kódu, který předpokládá přesný počet událostí nebo mapuje konkrétní exekutor na pevnou iteraci.

Kód, který reaguje na typy událostí, aniž by se spoléhal na jejich počet nebo iteraci, se nemusí měnit.

Kontrola maximálního limitu iterace

Limit max_iterations teď zahrnuje superkrok, který spouští spouštěcí exekutor. Pokud pracovní postup dříve použil úplný limit, zvyšte nakonfigurovanou hodnotu o jednu:

from agent_framework import WorkflowBuilder

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

Pokud už pracovní postup konverguje před dosažením nakonfigurovaného limitu, není potřeba žádná změna.

Aktualizace kontrol zdroje počáteční zprávy

Pokud spouštěcí exekutor využívá ID zdroje počáteční zprávy, nahraďte pevně zakódovanou "Workflow" hodnotu id zdroje pro interní hraniční zařízení spouštěcího exekutoru.

Před 1.13.0:

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

Ve verzi 1.13.0 a novější:

from agent_framework import INTERNAL_SOURCE_ID

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

INTERNAL_SOURCE_ID(executor_id) v současné době vrací "internal:<executor_id>". Místo vytváření tohoto řetězce použijte pomocnou rutinu, aby váš kód používal formát zdrojového ID architektury.

Aktualizace zpracování kontrolních bodů

Počáteční vstupní kontrolní body

Když je vytváření kontrolních bodů povolené, každé nové spuštění teď vytvoří vstupní kontrolní bod na iteration_count == 0adrese . Tento kontrolní bod obsahuje původní vstup jako zprávu v letu adresovanou spouštěcímu exekutoru. Obnovením znovu spustíte spouštěcí exekutor a reprodukuje se spuštění celého pracovního postupu.

Po dokončení superkroku vytvoří architektura i nadále kontrolní bod. U spuštění se superkroky $N$ očekáváme, že $N + 1$ kontrolní body: vstupní kontrolní bod následovaný jedním kontrolním bodem pro každý dokončený superkrok.

Zkontrolujte kód, který předpokládá, že kontrolní bod iterace-0 obsahuje stav vytvořený spouštěcím exekutorem. Tento stav se teď zobrazí v kontrolním bodu vytvořeném po superkroku 1.

Kontrolní body žádosti a odpovědi

Když budete pokračovat v workflow.run(responses=...)pracovním postupu, architektura teď vytvoří kontrolní bod pro zadání odpovědi po vytvoření fronty odpovědí a před spuštěním superkroku, který je spotřebovává. Obnovením tohoto kontrolního bodu se znovu doručí zaznamenané odpovědi a přehraje zbytek pracovního postupu.

Kontrolní bod pro zadání odpovědi má stejný iteration_count jako předchozí kontrolní bod, který obsahuje čekající požadavek. Jedná se o samostatný kontrolní bod, jehož previous_checkpoint_id odkazuje na kontrolní bod čekajícího požadavku.

Important

V iteration_count historii kontrolních bodů pro člověka ve smyčce není zaručeno, že je jedinečná. previous_checkpoint_id Podle řetězce určete pořadí kontrolních bodů. Pokud potřebujete nejnovější kontrolní bod, místo výběru největšího iteration_countrozhraní API úložiště kontrolních bodů použijte rozhraní API úložiště kontrolních bodů.

Kontrolní seznam pro migraci

  • Aktualizujte kontrolní výrazy a příjemce událostí, které závisí na přesných počtech superkroků nebo číslech iterací.
  • Zvýšení max_iterations o jeden pouze u pracovních postupů, které dosáhly předchozího limitu.
  • Nahraďte počáteční kontroly "Workflow"INTERNAL_SOURCE_ID(start_executor.id)ID zdroje .
  • Zachází s kontrolním bodem iterace-0 jako se vstupním kontrolním bodem před provedením.
  • Pořadí kontrolních bodů lidské smyčky podle rodokmenu, nikoli za předpokladu iteration_count , že je jedinečné.
  • Ověřte, že přehrání vstupního kontrolního bodu a kontrolního bodu pro zadání odpovědi vytvoří očekávaný výstup a vedlejší účinky.

Podrobnosti o implementaci najdete v tématu Povolit úplné přehrání kontrolního bodu pracovního postupu.