Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Agent Framework 1.13.0 contiene cambios importantes menores en Python ejecución del flujo de trabajo. La mayoría de las aplicaciones no requieren cambios. Los cambios afectan a las aplicaciones que dependen de un número exacto de superpasos o de iteraciones, establecen max_iterations en el límite de convergencia, inspeccionan el ID de origen del mensaje inicial o hacen suposiciones sobre la ubicación y el orden de los puntos de control.
Background
Antes de la versión 1.13.0, los puntos de control no cumplen completamente su promesa de capturar el estado de flujo de trabajo necesario para reanudar la ejecución desde cualquier límite registrado. El ejecutor de inicio se ejecutó antes del bucle de superpaso y puntos de control, por lo que el primer punto de control contenía la salida del ejecutor de inicio y el estado actualizado, pero no la entrada original del flujo de trabajo. De forma similar, las respuestas a los eventos de solicitud se entregaron y procesaron sin registrarse primero en un punto de control. Como resultado, ningún punto de control podía volver a ejecutar el ejecutor inicial a partir de la entrada original ni reproducir una continuación con intervención humana a partir de la respuesta proporcionada.
Cambios de comportamiento
La versión 1.13.0 cierra estas lagunas. El ejecutor inicial ahora se ejecuta en el primer superpaso, un punto de control de entrada registra la entrada inicial antes de ese superpaso y un punto de control de entrada de respuestas registra las respuestas entregadas antes de que se procesen. En conjunto, estos cambios hacen que un flujo de trabajo con puntos de control pueda reproducirse por completo a partir de su entrada, incluidas las continuaciones con intervención humana.
Importante
Estos cambios no afectan a los puntos de control creados antes de la versión 1.13.0. Los puntos de control existentes siguen siendo compatibles y se pueden restaurar después de la actualización.
Cambios que podrían requerir acción
| Area | Antes de la versión 1.13.0 | En la versión 1.13.0 y versiones posteriores | Impacto en el usuario |
|---|---|---|---|
| Iniciar ejecutor | El ejecutor de inicio se ejecutó antes del bucle superstep. | La entrada se pone en cola para el ejecutor de inicio, que se ejecuta en el primer superpaso. | Cada nueva ejecución emite un superstep_startedevento adicionalsuperstep_completed. |
| Recuento de iteraciones | La iteración 1 representa el primer superpaso después de que se ejecutó el ejecutor de inicio. | La iteración 1 ejecuta el ejecutor de inicio. Más adelante, el trabajo cambia por una iteración. | Ahora, un flujo de trabajo que necesitaba $N$ iteraciones necesita $N + 1$. |
| Origen del mensaje de entrada | El mensaje inicial tenía el identificador "Workflow"de origen codificado de forma codificada . |
El mensaje inicial se entrega a través del borde interno del ejecutor de inicio y tiene el identificador de origen INTERNAL_SOURCE_ID(start_executor.id). |
El código que lee o filtra el identificador de origen del mensaje inicial debe usar el nuevo valor. |
Mejoras de rejugabilidad
| Area | Antes de la versión 1.13.0 | En la versión 1.13.0 y versiones posteriores | Mejora |
|---|---|---|---|
| Punto de control inicial | El punto de comprobación de iteración-0 se creó después de que se ejecutó el ejecutor de inicio. Capturó los mensajes de salida del ejecutor y el estado actualizado, pero no la entrada original. | Se crea un punto de control de entrada antes del superpaso 1. Registra la entrada original en cola para el ejecutor de inicio. | Al restaurar el punto de control de entrada, se reproduce la ejecución completa, incluido el ejecutor de inicio. |
| Punto de control de respuesta | Se entregó una respuesta a un evento de solicitud sin registrarse primero en un punto de control. | Se crea un punto de control de entrada de la respuesta después de que se entregue la respuesta y antes de que se ejecute el superpaso que la consume. | Al restaurar el punto de control de entrada de la respuesta, se vuelve a ejecutar la continuación que consume la respuesta. |
Actualización del control de eventos de superstep
Una nueva ejecución de flujo de trabajo ahora genera un par más de eventos de superstep porque el ejecutor de inicio se ejecuta en superstep 1:
-
superstep_startedconiteration == 1 -
superstep_completedconiteration == 1
El trabajo del ejecutor posterior cambia por un superpaso. Actualice pruebas, telemetría, indicadores de progreso u otro código que asuma un recuento exacto de eventos o asigne un ejecutor determinado a una iteración fija.
El código que responde a los tipos de eventos sin depender de su recuento o iteración no necesita cambiar.
Revisión del límite máximo de iteración
El max_iterations límite ahora incluye el superpaso que ejecuta el ejecutor de inicio. Si un flujo de trabajo usó previamente su límite completo, aumente el valor configurado en uno:
from agent_framework import WorkflowBuilder
workflow = WorkflowBuilder(
start_executor=start_executor,
max_iterations=previous_max_iterations + 1,
).build()
No se necesita ningún cambio si el flujo de trabajo ya converge antes de alcanzar el límite configurado.
Actualizar comprobaciones de origen de mensajes iniciales
Si un ejecutor de inicio consume el identificador de origen del mensaje inicial, reemplace el valor fijo "Workflow" por el identificador de origen de la arista interna del ejecutor de inicio.
Antes de la versión 1.13.0:
is_workflow_input = ctx.source_executor_ids != ["Workflow"]
En 1.13.0 y versiones posteriores:
from agent_framework import INTERNAL_SOURCE_ID
is_workflow_input = ctx.source_executor_ids != [INTERNAL_SOURCE_ID(self.id)]
INTERNAL_SOURCE_ID(executor_id) devuelve actualmente "internal:<executor_id>". Use el asistente en lugar de construir esta cadena para que el código siga el formato de identificador de origen del marco.
Actualización de la gestión de puntos de control
Puntos de control de entrada iniciales
Cuando se habilitan los puntos de control, cada nueva ejecución crea ahora un punto de control de entrada en iteration_count == 0. Este punto de control contiene la entrada original como un mensaje en curso dirigido al ejecutor de inicio. Al restaurarlo, se vuelve a ejecutar el ejecutor inicial y se reproduce la ejecución completa del flujo de trabajo.
Después de completar cada superpaso, el marco continúa creando un punto de control. Para una ejecución con $N$ superpasos, espere $N + 1$ puntos de control: el punto de control inicial, seguido de un punto de control por cada superpaso completado.
Revise el código que supone que el punto de control de iteración-0 contiene el estado generado por el ejecutor de inicio. Ese estado aparece ahora en el punto de control creado después del superpaso 1.
Puntos de control de solicitud-respuesta
Al continuar un flujo de trabajo con workflow.run(responses=...), el framework ahora crea un punto de control de entrada de respuestas después de poner las respuestas en cola y antes de ejecutar el superpaso que las consume. La restauración de este punto de control vuelve a entrega las respuestas grabadas y reproduce el resto del flujo de trabajo.
El punto de control de entrada de respuesta tiene el mismo iteration_count que el punto de control anterior que contiene la solicitud pendiente. Es un punto de control independiente cuyo previous_checkpoint_id apunta a ese punto de control de solicitud en espera.
Importante
Un iteration_count no es necesariamente único en un historial de puntos de control con intervención humana. Siga la previous_checkpoint_id cadena para determinar el orden de los puntos de control. Si necesita el punto de comprobación más reciente, use la API de almacenamiento de puntos de control en lugar de seleccionar el mayor iteration_count.
Lista de comprobación para la migración
- Actualice las aserciones y los consumidores de eventos que dependen de recuentos exactos de superpasos o números de iteración.
- Aumente
max_iterationsen uno solo para los flujos de trabajo que alcanzaron el límite anterior. - Reemplace las comprobaciones de identificador de origen iniciales de
"Workflow"porINTERNAL_SOURCE_ID(start_executor.id). - Considere el punto de control de la iteración 0 como el punto de control de entrada previo a la ejecución.
- Ordene los puntos de control con intervención humana por linaje en lugar de asumir que
iteration_countes único. - Compruebe que, al volver a ejecutar un punto de control de entrada y un punto de control de respuesta-entrada, se producen la salida y los efectos secundarios esperados.
Para obtener más información sobre la implementación, consulte Permitir la reproducibilidad completa del punto de control de flujo de trabajo.