Compartir a través de


Orquestación del Agente Kernel Semántico

Importante

Las características de orquestación del agente en Agent Framework se encuentran en la fase experimental. Están en desarrollo activo y pueden cambiar significativamente antes de avanzar a la fase de versión preliminar o candidata para lanzamiento.

El marco de orquestación del agente del kernel semántico permite a los desarrolladores compilar, administrar y escalar flujos de trabajo de agentes complejos con facilidad.

¿Por qué orquestación multiagente?

Los sistemas tradicionales de agente único están limitados en su capacidad para gestionar tareas complejas y multifacéticas. Mediante la orquestación de varios agentes, cada uno con aptitudes o roles especializados, podemos crear sistemas más sólidos, adaptables y capaces de resolver problemas del mundo real de forma colaborativa. La orquestación multiagente en kernel semántico proporciona una base flexible para crear estos sistemas, lo que admite una variedad de patrones de coordinación.

Patrones de orquestación

El kernel semántico admite varios patrones de orquestación, cada uno diseñado para diferentes escenarios de colaboración. Estos patrones están disponibles como parte del marco y se pueden ampliar o personalizar fácilmente.

Patrones de orquestación admitidos

Modelo Descripción Caso de uso típico
Concurrente Difunde una tarea a todos los agentes, recopila los resultados de forma independiente. Análisis paralelo, subtareas independientes, toma de decisiones de conjunto.
Secuencial Pasa el resultado de un agente al siguiente en un orden definido. Flujos de trabajo, canalizaciones, procesamiento en varias fases.
de entrega de Pasa dinámicamente el control entre agentes en función del contexto o las reglas. Flujos de trabajo dinámicos, escalación, alternativa o escenarios de transferencia a expertos.
Chat en grupo Todos los agentes participan en una conversación de grupo, coordinada por un administrador de grupos. Lluvia de ideas, resolución de problemas colaborativos, creación de consenso.
Magentic Orquestación similar a chat grupal inspirada en MagenticOne. Colaboración compleja y generalista multiagente.

Simplicidad y amigable para desarrolladores

Todos los patrones de orquestación comparten una interfaz unificada para la construcción e invocación. Independientemente de la orquestación que elija, usted:

  • Defina los agentes y sus funcionalidades, consulte Semantic Kernel Agents(Agentes de kernel semánticos).
  • Cree una orquestación pasando los agentes (y, si es necesario, un administrador).
  • Opcionalmente, proporcione funciones de retorno o transformaciones para el manejo personalizado de entrada y salida.
  • Inicie un tiempo de ejecución e invoque la orquestación mediante una tarea.
  • Espere el resultado de una manera coherente y asincrónica.

Este enfoque unificado significa que puede cambiar fácilmente entre patrones de orquestación, sin aprender nuevas API ni volver a escribir la lógica del agente. El marco abstrae la complejidad de la comunicación del agente, la coordinación y la agregación de resultados, lo que le permite centrarse en los objetivos de la aplicación.

// Choose an orchestration pattern with your agents
SequentialOrchestration orchestration = new(agentA, agentB)
{
    LoggerFactory = this.LoggerFactory
};  // or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...

// Start the runtime
InProcessRuntime runtime = new();
await runtime.StartAsync();

// Invoke the orchestration and get the result
OrchestrationResult<string> result = await orchestration.InvokeAsync(task, runtime);
string text = await result.GetValueAsync();

await runtime.RunUntilIdleAsync();
# Choose an orchestration pattern with your agents
orchestration = SequentialOrchestration(members=[agent_a, agent_b])
# or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...

# Start the runtime
runtime = InProcessRuntime()
runtime.start()

# Invoke the orchestration
result = await orchestration.invoke(task="Your task here", runtime=runtime)

# Get the result
final_output = await result.get()

await runtime.stop_when_idle()

Nota:

La orquestación del agente aún no está disponible en el SDK de Java.

Preparación del entorno de desarrollo

Agregue los siguientes paquetes al proyecto antes de continuar:

dotnet add package Microsoft.SemanticKernel.Agents.Orchestration --prerelease
dotnet add package Microsoft.SemanticKernel.Agents.Runtime.InProcess --prerelease

En función de los tipos de agente que use, es posible que también tenga que agregar los paquetes respectivos para los agentes. Consulte Introducción a los agentes para obtener más detalles.

Pasos siguientes