Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Agent Orchestration-Features im Agent Framework befinden sich in der experimentellen Phase. Sie befinden sich in der aktiven Entwicklung und können sich erheblich ändern, bevor sie zur Vorschau- oder Veröffentlichungskandidatenphase wechseln.
Das gleichzeitige Pattern erlaubt es mehreren Agenten, parallel an derselben Aufgabe zu arbeiten. Jeder Agent verarbeitet die Eingabe unabhängig, und ihre Ergebnisse werden gesammelt und aggregiert. Dieser Ansatz eignet sich gut für Szenarien, in denen vielfältige Perspektiven oder Lösungen hilfreich sind, z. B. Brainstorming, Ensemble-Begründung oder Abstimmungssysteme.
Gängige Anwendungsfälle
Mehrere Agents generieren unterschiedliche Lösungen für ein Problem, und ihre Antworten werden zur weiteren Analyse oder Auswahl gesammelt:
Sie lernen Folgendes
- So definieren Sie mehrere Agents mit unterschiedlichen Kenntnissen
- So koordinieren Sie diese Agents, um gleichzeitig an einer einzelnen Aufgabe zu arbeiten
- Sammeln und Verarbeiten der Ergebnisse
Definieren Sie Ihre Agenten
Agents sind spezialisierte Entitäten, die Aufgaben verarbeiten können. Hier definieren wir zwei Agenten: einen Physikexperten und einen Chemieexperten.
Tipp
Dies ChatCompletionAgent
wird hier verwendet, aber Sie können jeden Agenttyp verwenden.
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,
};
Einrichten der parallelen Orchestrierung
Mit der ConcurrentOrchestration
Klasse können Sie mehrere Agents parallel ausführen. Sie übermitteln die Liste der Agenten als Mitglieder.
ConcurrentOrchestration orchestration = new (physicist, chemist);
Laufzeit starten
Zum Verwalten der Ausführung von Agents ist eine Laufzeit erforderlich. Hier verwenden wir InProcessRuntime
und beginnen es, bevor wir die Orchestrierung aufrufen.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Aufrufen der Orchestrierung
Sie können jetzt die Orchestrierung mit einer bestimmten Aufgabe aufrufen. Die Orchestrierung führt alle Agents gleichzeitig für die angegebene Aufgabe aus.
var result = await orchestration.InvokeAsync("What is temperature?", runtime);
Sammeln von Ergebnissen
Die Ergebnisse aller Agents können asynchron gesammelt werden. Beachten Sie, dass die Reihenfolge der Ergebnisse nicht garantiert ist.
string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");
Optional: Beenden der Laufzeit
Beenden Sie nach Abschluss der Verarbeitung die Laufzeit, um Ressourcen zu bereinigen.
await runtime.RunUntilIdleAsync();
Beispielausgabe
# 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 ...
Tipp
Der vollständige Beispielcode ist hier verfügbar.
Definieren Sie Ihre Agenten
Agents sind spezialisierte Entitäten, die Aufgaben verarbeiten können. Hier definieren wir zwei Agenten: einen Physikexperten und einen Chemieexperten.
Tipp
Dies ChatCompletionAgent
wird hier mit Azure OpenAI verwendet, Sie können jedoch jeden Agenttyp oder Modelldienst verwenden.
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]
Einrichten der parallelen Orchestrierung
Mit der ConcurrentOrchestration
Klasse können Sie mehrere Agents parallel ausführen. Sie übermitteln die Liste der Agenten als Mitglieder.
from semantic_kernel.agents import ConcurrentOrchestration
agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)
Laufzeit starten
Zum Verwalten der Ausführung von Agents ist eine Laufzeit erforderlich. Hier verwenden wir InProcessRuntime
und beginnen es, bevor wir die Orchestrierung aufrufen.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Aufrufen der Orchestrierung
Sie können jetzt die Orchestrierung mit einer bestimmten Aufgabe aufrufen. Die Orchestrierung führt alle Agents gleichzeitig für die angegebene Aufgabe aus.
orchestration_result = await concurrent_orchestration.invoke(
task="What is temperature?",
runtime=runtime,
)
Sammeln von Ergebnissen
Die Ergebnisse aller Agents können asynchron gesammelt werden. Beachten Sie, dass die Reihenfolge der Ergebnisse nicht garantiert ist.
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}")
Optional: Beenden der Laufzeit
Beenden Sie nach Abschluss der Verarbeitung die Laufzeit, um Ressourcen zu bereinigen.
await runtime.stop_when_idle()
Beispielausgabe
# 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...
Tipp
Der vollständige Beispielcode ist hier verfügbar.
Hinweis
Die Agent-Orchestrierung ist noch nicht im Java SDK verfügbar.