Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Agent Framework 1.13.0 enthält geringfügige Änderungen an Python Workflowausführung. Die meisten Anwendungen erfordern keine Änderungen. Die Änderungen betreffen Anwendungen, die von exakten Superstep-Anzahlen oder Iterationsnummern abhängen, max_iterations an der Konvergenzgrenze setzen, die Quell-ID der ursprünglichen Nachricht prüfen oder Annahmen über die Platzierung und Reihenfolge von Checkpoints treffen.
Hintergrund
Vor 1.13.0 wurde Checkpointing seinem Anspruch nicht vollständig gerecht, den Workflow-Zustand so zu erfassen, dass die Ausführung an jeder aufgezeichneten Grenze fortgesetzt werden konnte. Der Start-Executor wurde vor der Superstep- und Checkpoint-Schleife ausgeführt, sodass der früheste Checkpoint die Ausgabe des Start-Executors und den aktualisierten Zustand enthielt, nicht jedoch die ursprünglichen Eingaben des Workflows. Ebenso wurden Antworten auf Anforderungsereignisse übermittelt und verarbeitet, ohne zuerst in einem Prüfpunkt aufgezeichnet zu werden. Daher konnte kein Checkpoint den Start-Executor aus der ursprünglichen Eingabe erneut ausführen oder eine Fortsetzung mit menschlicher Beteiligung anhand der bereitgestellten Antwort rekonstruieren.
Verhaltensänderungen
Version 1.13.0 schließt diese Lücken. Der Start-Executor wird jetzt im ersten Superstep ausgeführt, ein Eintragsprüfpunkt zeichnet die anfängliche Eingabe vor diesem Superstep auf, und ein Antworteingabeprüfpunkt erfasst Antworten, bevor sie verarbeitet werden. Zusammen ermöglichen diese Änderungen, dass ein Workflow mit Prüfpunkten anhand seiner Eingabe vollständig erneut ausgeführt werden kann, einschließlich von Fortsetzungen mit menschlicher Beteiligung.
Important
Diese Änderungen wirken sich nicht auf Prüfpunkte aus, die vor Version 1.13.0 erstellt wurden. Vorhandene Prüfpunkte werden weiterhin unterstützt und können nach dem Upgrade weiterhin wiederhergestellt werden.
Änderungen, die möglicherweise eine Aktion erfordern
| Region | Vor 1.13.0 | Ab Version 1.13.0 und höher | Benutzerauswirkungen |
|---|---|---|---|
| Starten des Executors | Der Start-Executor lief vor der Superstep-Schleife. | Die Eingabe wird für den Start-Executor in die Warteschlange eingereiht, der im ersten Superstep ausgeführt wird. | Jeder neue Durchlauf erzeugt ein zusätzliches superstep_started- und superstep_completed-Ereignis. |
| Iterationsanzahl | Iteration 1 bezeichnete den ersten Superstep, nachdem der Start-Executor ausgeführt worden war. | Iteration 1 führt den Start-Executor aus. Spätere Arbeitsschritte werden um eine Iteration verschoben. | Ein Workflow, der zuvor $N$ Iterationen benötigt hat, benötigt jetzt $N + 1$. |
| Eingabenachrichtenquelle | Die ursprüngliche Nachricht hatte die hartcodierte Quell-ID "Workflow". |
Die initiale Nachricht wird über die interne Edge des Start-Executors zugestellt und hat die Quell-ID INTERNAL_SOURCE_ID(start_executor.id). |
Code, der die ursprüngliche Nachrichtenquell-ID liest oder filtert, muss den neuen Wert verwenden. |
Verbesserungen bei der Wiedergabebarkeit
| Region | Vor 1.13.0 | Ab Version 1.13.0 und höher | Verbesserung |
|---|---|---|---|
| Anfangsprüfpunkt | Der Checkpoint für Iteration 0 wurde erstellt, nachdem der Start-Executor gestartet wurde. Er erfasste die Ausgabemeldungen des Executors und den aktualisierten Zustand, jedoch nicht die ursprüngliche Eingabe. | Vor Superstep 1 wird ein Einstiegs-Checkpoint erstellt. Es zeichnet die ursprüngliche Eingabe auf, die für den Start-Executor in die Warteschlange gestellt wurde. | Durch das Wiederherstellen des Einstiegs-Checkpoints wird der vollständige Durchlauf erneut abgespielt, einschließlich des Start-Executors. |
| Antwortprüfpunkt | Eine Antwort auf ein Anforderungsereignis wurde übermittelt, ohne zuerst in einem Prüfpunkt aufgezeichnet zu werden. | Ein Prüfpunkt für den Antworteintrag wird erstellt, nachdem die Antwort übermittelt wurde und bevor der Superstep ausgeführt wird, der sie verarbeitet. | Beim Wiederherstellen des Prüfpunkts für die Antworteingabe wird die Fortsetzung erneut ausgeführt, die die Antwort verarbeitet. |
Aktualisieren der Ereignisbehandlung in Supersteps
Ein neuer Workflow-Durchlauf erzeugt jetzt ein weiteres Paar von Superstep-Ereignissen, da der Start-Executor in Superstep 1 läuft:
-
superstep_startedmititeration == 1 -
superstep_completedmititeration == 1
Die Arbeit nachfolgender Executoren verschiebt sich um einen Superstep. Aktualisieren Sie Tests, Telemetrie, Statusanzeigen oder anderen Code, der davon ausgeht, dass eine genaue Ereignisanzahl oder ein bestimmter Executor einer festen Iteration zugeordnet wird.
Code, der auf Ereignistypen reagiert, ohne sich auf die Anzahl oder Iteration zu verlassen, muss sich nicht ändern.
Überprüfen des maximalen Iterationsgrenzwerts
Das max_iterations Limit schließt jetzt den Superstep ein, in dem der Start-Executor ausgeführt wird. Wenn ein Workflow zuvor seinen vollständigen Grenzwert verwendet hat, erhöhen Sie den konfigurierten Wert um eins:
from agent_framework import WorkflowBuilder
workflow = WorkflowBuilder(
start_executor=start_executor,
max_iterations=previous_max_iterations + 1,
).build()
Es ist keine Änderung erforderlich, wenn der Workflow bereits zusammengeführt wird, bevor der konfigurierte Grenzwert erreicht wird.
Aktualisieren der ursprünglichen Nachrichtenquellenüberprüfungen
Wenn ein Start-Executor die Quell-ID der anfänglichen Nachricht verarbeitet, ersetzen Sie den hartcodierten "Workflow"-Wert durch die Quell-ID für die interne Kante des Start-Executors.
Vor 1.13.0:
is_workflow_input = ctx.source_executor_ids != ["Workflow"]
In 1.13.0 und höher:
from agent_framework import INTERNAL_SOURCE_ID
is_workflow_input = ctx.source_executor_ids != [INTERNAL_SOURCE_ID(self.id)]
INTERNAL_SOURCE_ID(executor_id) gibt zurzeit zurück "internal:<executor_id>". Verwenden Sie das Hilfsprogramm, anstatt diese Zeichenfolge zu erstellen, damit Ihr Code dem Quell-ID-Format des Frameworks folgt.
Aktualisieren der Prüfpunktbehandlung
Anfängliche Eingabeprüfpunkte
Wenn die Prüfpunkterstellung aktiviert ist, erstellt jede neue Ausführung jetzt einen Eintragsprüfpunkt bei iteration_count == 0. Dieser Prüfpunkt enthält die ursprüngliche Eingabe als In-Flight-Nachricht, die an den Startausführer adressiert ist. Beim Wiederherstellen wird der Start-Executor erneut ausgeführt und der vollständige Workflow-Durchlauf erneut erstellt.
Nach jedem abgeschlossenen Superstep erstellt das Framework weiterhin einen Prüfpunkt. Für eine Ausführung mit $N$ Supersteps erwarten Sie $N + 1$ Prüfpunkte: der Einstiegsprüfpunkt gefolgt von einem Prüfpunkt für jeden abgeschlossenen Superstep.
Überprüfen Sie Code, der davon ausgeht, dass der Prüfpunkt der Iteration 0 den vom Start-Executor erzeugten Zustand enthält. Dieser Zustand wird nun im Prüfpunkt angezeigt, der nach dem Superstep 1 erstellt wurde.
Anforderungsantwortprüfpunkte
Wenn Sie einen Workflow mit workflow.run(responses=...) fortsetzen, erstellt das Framework jetzt einen Checkpoint für die Antworterfassung, nachdem die Antworten in die Warteschlange eingereiht wurden und bevor der Superstep ausgeführt wird, der sie verarbeitet. Durch das Wiederherstellen dieses Prüfpunkts werden die aufgezeichneten Antworten erneut übermittelt und der Rest des Workflows wiedergegeben.
Der Prüfpunkt für den Antworteintrag hat den gleichen Wert iteration_count wie der vorherige Prüfpunkt, der die ausstehende Anforderung enthält. Es handelt sich um einen separaten Prüfpunkt, dessen previous_checkpoint_id auf diesen Prüfpunkt für ausstehende Anfragen verweist.
Important
Ein iteration_count ist im Human-in-the-Loop-Checkpoint-Verlauf nicht zwangsläufig eindeutig. Folgen Sie der previous_checkpoint_id Kette, um die Prüfpunktreihenfolge zu bestimmen. Wenn Sie den neuesten Prüfpunkt benötigen, verwenden Sie die Prüfpunktspeicher-API, anstatt die größte iteration_countauszuwählen.
Migrationscheckliste
- Aktualisieren Sie Assertionen und Ereignis-Consumer, die von exakten Superstep-Anzahlen oder Iterationsnummern abhängen.
- Erhöhen Sie
max_iterationsnur um eins für Workflows, die die vorherige Grenze erreicht haben. - Ersetzen Sie die anfänglichen Quell-ID-Prüfungen für
"Workflow"durchINTERNAL_SOURCE_ID(start_executor.id). - Behandeln Sie den Iterations-0-Prüfpunkt als Eingabeprüfpunkt vor der Ausführung.
- Ordnen Sie Human-in-the-Loop-Prüfpunkte nach Abstammungslinie, anstatt anzunehmen, dass
iteration_counteindeutig ist. - Stellen Sie sicher, dass die Wiedergabe eines Eintragsprüfpunkts und eines Prüfpunkts für den Antworteintrag die erwartete Ausgabe und Nebenwirkungen erzeugt.
Details zur Implementierung finden Sie unter "Vollständige Wiedergabebarkeit des Workflowprüfpunkts zulassen".