Uso de la orquestación secuencial
En la orquestación secuencial, los agentes se organizan en una canalización donde cada agente procesa la tarea una después de otra. La salida de un agente se convierte en la entrada de la siguiente. Este patrón es ideal para flujos de trabajo en los que cada paso depende del anterior, como la revisión de documentos, las canalizaciones de transformación de datos o el razonamiento de varias fases.
La orquestación secuencial funciona mejor para las tareas que deben realizarse paso a paso, con cada paso mejorando el último. El orden en el que se ejecutan los agentes es fijo y decidido de antemano, y los agentes no deciden lo que sucede a continuación.
Cuándo usar la orquestación secuencial
Considere la posibilidad de usar el patrón de orquestación secuencial cuando el flujo de trabajo tenga:
- Procesos formados por varios pasos que deben realizarse en un orden específico, donde cada paso se basa en el que se basa en el anterior.
- Flujos de datos en los que cada etapa aporta algo importante que la siguiente etapa necesita para funcionar correctamente.
- Tareas en las que las fases no se pueden realizar al mismo tiempo y deben ejecutarse una después de otra.
- Situaciones que requieren mejoras graduales, como la redacción, la revisión y el pulido del contenido.
- Sistemas en los que conoce el rendimiento de cada agente y puede controlar retrasos o errores en cualquier paso sin detener todo el proceso.
Cuándo evitar la orquestación secuencial
Evite este patrón cuando:
- Las fases se pueden ejecutar de forma independiente y en paralelo sin afectar a la calidad.
- Un solo agente puede realizar la tarea completa de forma eficaz.
- Las primeras fases pueden producir errores o generar resultados deficientes y no hay ninguna manera de detener o corregir el procesamiento de bajada en función de los errores.
- Los agentes deben colaborar dinámicamente en lugar de entregar el trabajo secuencialmente.
- El flujo de trabajo requiere iteración, retroceso o enrutamiento dinámico en función de los resultados intermedios.
Implementación de orquestación secuencial
Implemente el patrón de orquestación secuencial con el SDK de Microsoft Agent Framework:
Creación del cliente de chat
Configure un cliente de chat (por ejemplo,AzureOpenAIChatClient) con las credenciales adecuadas para conectarse al proveedor de servicios de IA.Definición de los agentes
Cree instancias de agente mediante el métodocreate_agentdel cliente de chat. Cada agente debe tener instrucciones específicas y un nombre que defina su rol y área de experiencia en el flujo de trabajo.Compilación del flujo de trabajo secuencial
Use laSequentialBuilderclase para crear un flujo de trabajo que ejecute agentes entre sí. Agregue las instancias del agente como participantes mediante el métodoparticipants(), y llame abuild()para crear el flujo de trabajo.Ejecución del flujo de trabajo
Llame al métodorun_streamdel flujo de trabajo con la tarea o la entrada en la que desea que los agentes trabajen. El flujo de trabajo procesa la tarea a través de todos los agentes secuencialmente, con la salida de cada agente convirtiéndose en entrada para el siguiente.Procesamiento de los eventos de flujo de trabajo
Recorrer en iteración los eventos de flujo de trabajo mediante un bucle asincrónico. Busque las instanciasWorkflowOutputEvent, las cuales contienen los resultados del procesamiento secuencial.Extracción de la conversación final
Recopile la conversación final de las salidas del flujo de trabajo. El resultado contiene el historial de conversación completo que muestra cómo cada agente de la secuencia contribuyó al resultado final.
La orquestación secuencial es ideal cuando la tarea requiere pasos claros y ordenados en los que cada agente se basa en la salida anterior. Este patrón ayuda a mejorar la calidad de salida a través del refinamiento paso a paso y garantiza flujos de trabajo predecibles. Cuando se aplica cuidadosamente con el SDK de Microsoft Agent Framework, permite canalizaciones multiagente eficaces para tareas complejas, como la creación de contenido, el procesamiento de datos, etc.