Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Agentorkestreringsfunktionerna i Agent Framework är i den experimentella fasen. De är under aktiv utveckling och kan ändras avsevärt innan de går vidare till förhandsversionen eller lanseringsfasen.
Samtidig orkestrering gör att flera agenter kan arbeta med samma uppgift parallellt. Varje agent bearbetar indata separat och deras resultat samlas in och aggregeras. Den här metoden passar bra för scenarier där olika perspektiv eller lösningar är värdefulla, till exempel brainstorming, ensemble-resonemang eller röstningssystem.
Mer information om mönstret, till exempel när du ska använda mönstret eller när du ska undvika mönstret, finns i Samtidig orkestrering.
Vanliga Användningsfall
Flera agenter genererar olika lösningar på ett problem och deras svar samlas in för ytterligare analys eller val:
Vad du ska lära dig
- Så här definierar du flera agenter med olika expertis
- Så här dirigerar du dessa agenter för att arbeta samtidigt med en enda uppgift
- Så här samlar du in och bearbetar resultaten
Definiera dina agenter
Agenter är specialiserade entiteter som kan bearbeta uppgifter. Här definierar vi två agenter: en fysikexpert och en kemiexpert.
Tips/Råd
ChatCompletionAgent Används här, men du kan använda vilken agenttyp som helst.
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,
};
Konfigurera samtidig orkestrering
Med ConcurrentOrchestration klassen kan du köra flera agenter parallellt. Du skickar listan med agenter som medlemmar.
ConcurrentOrchestration orchestration = new (physicist, chemist);
Starta körningen
En körmiljö krävs för att hantera exekveringen av agenter. Här använder vi InProcessRuntime och startar den innan vi anropar orkestreringen.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Anropa orkestreringen
Nu kan du anropa orkestreringen med en specifik uppgift. Orkestreringen kommer att köra alla agenter samtidigt för den angivna uppgiften.
var result = await orchestration.InvokeAsync("What is temperature?", runtime);
Samla in resultat
Resultaten från alla agenter kan samlas in asynkront. Observera att resultatordningen inte är garanterad.
string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");
Valfritt: Stoppa körningen
När bearbetningen är klar stoppar du körningen för att rensa resurser.
await runtime.RunUntilIdleAsync();
Exempelutdata
# 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 ...
Tips/Råd
Den fullständiga exempelkoden finns här
Definiera dina agenter
Agenter är specialiserade entiteter som kan bearbeta uppgifter. Här definierar vi två agenter: en fysikexpert och en kemiexpert.
Tips/Råd
ChatCompletionAgent Används här med Azure OpenAI, men du kan använda valfri agenttyp eller modelltjänst.
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]
Konfigurera samtidig orkestrering
Med ConcurrentOrchestration klassen kan du köra flera agenter parallellt. Du skickar listan med agenter som medlemmar.
from semantic_kernel.agents import ConcurrentOrchestration
agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)
Starta körningen
En körmiljö krävs för att hantera exekveringen av agenter. Här använder vi InProcessRuntime och startar den innan vi anropar orkestreringen.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Anropa orkestreringen
Nu kan du anropa orkestreringen med en specifik uppgift. Orkestreringen kommer att köra alla agenter samtidigt för den angivna uppgiften.
orchestration_result = await concurrent_orchestration.invoke(
task="What is temperature?",
runtime=runtime,
)
Samla in resultat
Resultaten från alla agenter kan samlas in asynkront. Observera att resultatordningen inte är garanterad.
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}")
Valfritt: Stoppa körningen
När bearbetningen är klar stoppar du körningen för att rensa resurser.
await runtime.stop_when_idle()
Exempelutdata
# 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...
Tips/Råd
Den fullständiga exempelkoden finns här.
Anmärkning
Agentorkestrering är ännu inte tillgängligt i Java SDK.