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.
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.
La orquestación simultánea permite que varios agentes funcionen en la misma tarea en paralelo. Cada agente procesa la entrada de forma independiente y sus resultados se recopilan y agregan. Este enfoque es adecuado para escenarios en los que diversas perspectivas o soluciones son valiosas, como lluvia de ideas, razonamiento de conjuntos o sistemas de votación.
Para obtener más información sobre el patrón, como cuándo usar el patrón o cuándo evitar el patrón, consulte Orquestación simultánea.
Casos de uso comunes
Varios agentes generan diferentes soluciones a un problema y sus respuestas se recopilan para un análisis o selección adicionales:
Temas que se abordarán
- Cómo definir varios agentes con diferentes conocimientos
- Cómo organizar estos agentes para que funcionen simultáneamente en una sola tarea
- Recopilación y procesamiento de los resultados
Definir los agentes
Los agentes son entidades especializadas que pueden procesar tareas. Aquí definimos dos agentes: un experto en física y un experto en química.
Sugerencia
ChatCompletionAgent se usa aquí, pero puede usar cualquier tipo de agente.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using Microsoft.SemanticKernel.Agents.Orchestration;
using Microsoft.SemanticKernel.Agents.Orchestration.Concurrent;
using Microsoft.SemanticKernel.Agents.Runtime.InProcess;
// Create a kernel with an AI service
Kernel kernel = ...;
ChatCompletionAgent physicist = new ChatCompletionAgent{
Name = "PhysicsExpert",
Instructions = "You are an expert in physics. You answer questions from a physics perspective."
Kernel = kernel,
};
ChatCompletionAgent chemist = new ChatCompletionAgent{
Name = "ChemistryExpert",
Instructions = "You are an expert in chemistry. You answer questions from a chemistry perspective."
Kernel = kernel,
};
Configurar la orquestación simultánea
La ConcurrentOrchestration clase permite ejecutar varios agentes en paralelo. Se pasa la lista de agentes como miembros.
ConcurrentOrchestration orchestration = new (physicist, chemist);
Iniciar el entorno de ejecución
Se requiere un tiempo de ejecución para administrar la ejecución de agentes. Aquí, usamos InProcessRuntime e iniciamos antes de invocar la orquestación.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Invocar la orquestación
Ahora puede invocar el proceso de orquestación con una tarea específica. La orquestación ejecutará todos los agentes simultáneamente en la tarea especificada.
var result = await orchestration.InvokeAsync("What is temperature?", runtime);
Recopilar resultados
Los resultados de todos los agentes se pueden recopilar de forma asincrónica. Tenga en cuenta que no se garantiza el orden de los resultados.
string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");
Opcional: Detener el tiempo de ejecución
Una vez completado el procesamiento, detenga el tiempo de ejecución para limpiar los recursos.
await runtime.RunUntilIdleAsync();
Salida de ejemplo
# RESULT:
Temperature is a fundamental physical quantity that measures the average kinetic energy ...
Temperature is a measure of the average kinetic energy of the particles ...
Sugerencia
El código de ejemplo completo está disponible aquí.
Definir los agentes
Los agentes son entidades especializadas que pueden procesar tareas. Aquí definimos dos agentes: un experto en física y un experto en química.
Sugerencia
ChatCompletionAgent Se usa aquí con Azure OpenAI, pero puede usar cualquier tipo de agente o servicio de modelo.
from semantic_kernel.agents import Agent, ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
def get_agents() -> list[Agent]:
physics_agent = ChatCompletionAgent(
name="PhysicsExpert",
instructions="You are an expert in physics. You answer questions from a physics perspective.",
service=AzureChatCompletion(),
)
chemistry_agent = ChatCompletionAgent(
name="ChemistryExpert",
instructions="You are an expert in chemistry. You answer questions from a chemistry perspective.",
service=AzureChatCompletion(),
)
return [physics_agent, chemistry_agent]
Configurar la orquestación simultánea
La ConcurrentOrchestration clase permite ejecutar varios agentes en paralelo. Se pasa la lista de agentes como miembros.
from semantic_kernel.agents import ConcurrentOrchestration
agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)
Iniciar el entorno de ejecución
Se requiere un tiempo de ejecución para administrar la ejecución de agentes. Aquí, usamos InProcessRuntime e iniciamos antes de invocar la orquestación.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Invocar la orquestación
Ahora puede invocar el proceso de orquestación con una tarea específica. La orquestación ejecutará todos los agentes simultáneamente en la tarea especificada.
orchestration_result = await concurrent_orchestration.invoke(
task="What is temperature?",
runtime=runtime,
)
Recopilar resultados
Los resultados de todos los agentes se pueden recopilar de forma asincrónica. Tenga en cuenta que no se garantiza el orden de los resultados.
value = await orchestration_result.get(timeout=20)
# For the concurrent orchestration, the result is a list of chat messages
for item in value:
print(f"# {item.name}: {item.content}")
Opcional: Detener el tiempo de ejecución
Una vez completado el procesamiento, detenga el tiempo de ejecución para limpiar los recursos.
await runtime.stop_when_idle()
Salida de ejemplo
# PhysicsExpert: Temperature is a physical quantity that represents the average kinetic energy of the particles in a substance...
# ChemistryExpert: Temperature is a fundamental concept in chemistry and physics, representing a measure of the average kinetic energy...
Sugerencia
El código de ejemplo completo está disponible aquí.
Nota:
La orquestación del agente aún no está disponible en el SDK de Java.