Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Os recursos de orquestração de agentes no Agent Framework estão em estágio experimental. Eles estão em desenvolvimento ativo e podem mudar significativamente antes de avançar para o estágio de prévia ou versão candidata.
A orquestração simultânea permite que vários agentes trabalhem na mesma tarefa em paralelo. Cada agente processa a entrada de forma independente, e seus resultados são coletados e agregados. Essa abordagem é adequada para cenários onde diversas perspetivas ou soluções são valiosas, como brainstorming, raciocínio conjunto ou sistemas de votação.
Para saber mais sobre o padrão, como quando usá-lo ou quando evitá-lo, consulte Orquestração simultânea.
Casos de uso comuns
Vários agentes geram soluções diferentes para um problema, e suas respostas são coletadas para análise ou seleção posterior:
O que você vai aprender
- Como definir vários agentes com diferentes conhecimentos
- Como orquestrar esses agentes para trabalhar simultaneamente em uma única tarefa
- Como recolher e processar os resultados
Defina seus agentes
Os agentes são entidades especializadas que podem processar tarefas. Aqui, definimos dois agentes: um especialista em física e um especialista em química.
Sugestão
O ChatCompletionAgent é usado aqui, mas você pode usar qualquer 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 a orquestração simultânea
A ConcurrentOrchestration classe permite que você execute vários agentes em paralelo. Você passa a lista de agentes como membros.
ConcurrentOrchestration orchestration = new (physicist, chemist);
Iniciar o tempo de execução
É necessário um runtime para gerir a execução de agentes. Aqui, usamos InProcessRuntime e começamos por iniciá-lo antes de invocar a orquestração.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Invoque a orquestração
Agora você pode invocar a orquestração com uma tarefa específica. A orquestração executará todos os agentes simultaneamente na tarefa dada.
var result = await orchestration.InvokeAsync("What is temperature?", runtime);
Recolher Resultados
Os resultados de todos os agentes podem ser coletados de forma assíncrona. Note que a ordem dos resultados não é garantida.
string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");
Opcional: Pare o tempo de execução
Após a conclusão do processamento, pare o tempo de execução para limpar recursos.
await runtime.RunUntilIdleAsync();
Saída de amostra
# 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 ...
Sugestão
O código de exemplo completo está disponível aqui
Defina seus agentes
Os agentes são entidades especializadas que podem processar tarefas. Aqui, definimos dois agentes: um especialista em física e um especialista em química.
Sugestão
O ChatCompletionAgent é utilizado aqui com o Azure OpenAI, contudo, pode-se usar qualquer tipo de agente ou serviço 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 a orquestração simultânea
A ConcurrentOrchestration classe permite que você execute vários agentes em paralelo. Você passa a lista de agentes como membros.
from semantic_kernel.agents import ConcurrentOrchestration
agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)
Iniciar o tempo de execução
É necessário um runtime para gerir a execução de agentes. Aqui, usamos InProcessRuntime e começamos por iniciá-lo antes de invocar a orquestração.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Invoque a orquestração
Agora você pode invocar a orquestração com uma tarefa específica. A orquestração executará todos os agentes simultaneamente na tarefa dada.
orchestration_result = await concurrent_orchestration.invoke(
task="What is temperature?",
runtime=runtime,
)
Recolher Resultados
Os resultados de todos os agentes podem ser coletados de forma assíncrona. Note que a ordem dos resultados não é garantida.
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: Pare o tempo de execução
Após a conclusão do processamento, pare o tempo de execução para limpar recursos.
await runtime.stop_when_idle()
Saída de amostra
# 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...
Sugestão
O código de exemplo completo está disponível aqui.
Observação
A orquestração de agentes ainda não está disponível no Java SDK.