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.
Magentic Orchestration basiert auf dem Magentic-One System , das von AutoGen erfunden wurde. Es handelt sich um ein flexibles, allgemeines mehrstufiges Muster, das für komplexe, offene Aufgaben entwickelt wurde, die eine dynamische Zusammenarbeit erfordern. In diesem Muster koordiniert ein dedizierter Magentic-Manager ein Team von spezialisierten Agents, wobei ausgewählt wird, welcher Agent auf der Grundlage des sich entwickelnden Kontexts, des Aufgabenfortschritts und der Agent-Funktionen als nächstes agieren soll.
Der Magentic-Manager verwaltet einen freigegebenen Kontext, verfolgt den Fortschritt und passt den Workflow in Echtzeit an. Auf diese Weise kann das System komplexe Probleme aufschlüsseln, Teilvorgänge delegieren und Lösungen durch die Agentzusammenarbeit iterativ verfeinern. Die Orchestrierung eignet sich besonders gut für Szenarien, in denen der Lösungspfad im Voraus nicht bekannt ist und möglicherweise mehrere Runden von Gründen, Forschung und Berechnung erforderlich ist.
Tipp
Weitere Informationen zum Magentic-One finden Sie hier.
Tipp
Der Name "Magentic" stammt aus "Magentic-One". "Magentic-One" ist ein Multi-Agent-System, das eine Reihe von Agents enthält, z. B. die WebSurfer und FileSurfer. Die semantische Kernel Magentic-Orchestrierung wird vom Magentic-One System inspiriert, in dem der Magentic Manager ein Team spezialisierter Agenten koordiniert, um komplexe Aufgaben zu lösen. Es handelt sich jedoch nicht um eine direkte Implementierung des Magentic-One Systems und verfügt nicht über die Agents aus dem Magentic-One-System.
Weitere Informationen zum Muster, z. B. zum Verwenden des Musters oder zum Vermeiden des Musters in Ihrer Workload, finden Sie unter Magentic Orchestration.
Gängige Anwendungsfälle
Ein Nutzer fordert einen umfassenden Bericht zum Vergleich der Energieeffizienz und CO‐Emissionen verschiedener Machine Learning-Modelle an. Der Magentic-Manager weist zunächst einen Forschungsagenten zu, um relevante Daten zu sammeln, delegiert dann die Analyse und Berechnung an einen Coder-Agent. Der Vorgesetzte koordiniert mehrere Forschungs- und Berechnungsrunden, aggregiert die Ergebnisse und erzeugt einen detaillierten, strukturierten Bericht als Endausgabe.
Sie lernen Folgendes
- Definieren und Konfigurieren von Agents für magentische Orchestrierung
- Einrichten eines Magentic-Managers zur Koordinierung der Agentzusammenarbeit
- Funktionsweise des Orchestrierungsprozesses, einschließlich Planung, Fortschrittsverfolgung und endgültige Antwortsynthese
Definieren Sie Ihre Agenten
Jeder Agent im Magentischen Muster hat eine spezielle Rolle. In diesem Beispiel:
- ResearchAgent: Findet und fasst Informationen zusammen (z. B. über die Websuche). Hier wird das Beispiel mit dem
ChatCompletionAgentModell für diegpt-4o-search-previewWebsuchfunktion verwendet. - CoderAgent: Schreibt Und führt Code aus, um Daten zu analysieren oder zu verarbeiten. Hier wird das
AzureAIAgentverwendet, da es fortschrittliche Tools wie den Code-Interpreter bietet.
Tipp
Die ChatCompletionAgent und AzureAIAgent werden hier verwendet, aber Sie können jeden Agent-Typ verwenden.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using Microsoft.SemanticKernel.Agents.AzureAI;
using Microsoft.SemanticKernel.Agents.Magentic;
using Microsoft.SemanticKernel.Agents.Orchestration;
using Microsoft.SemanticKernel.Agents.Runtime.InProcess;
using Microsoft.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Azure.AI.Agents.Persistent;
using Azure.Identity;
// Helper function to create a kernel with chat completion
public static Kernel CreateKernelWithChatCompletion(...)
{
...
}
// Create a kernel with OpenAI chat completion for the research agent
Kernel researchKernel = CreateKernelWithChatCompletion("gpt-4o-search-preview");
ChatCompletionAgent researchAgent = new ChatCompletionAgent {
Name = "ResearchAgent",
Description = "A helpful assistant with access to web search. Ask it to perform web searches.",
Instructions = "You are a Researcher. You find information without additional computation or quantitative analysis.",
Kernel = researchKernel,
};
// Create a persistent Azure AI agent for code execution
PersistentAgentsClient agentsClient = AzureAIAgent.CreateAgentsClient(endpoint, new AzureCliCredential());
PersistentAgent definition = await agentsClient.Administration.CreateAgentAsync(
modelId,
name: "CoderAgent",
description: "Write and executes code to process and analyze data.",
instructions: "You solve questions using code. Please provide detailed analysis and computation process.",
tools: [new CodeInterpreterToolDefinition()]);
AzureAIAgent coderAgent = new AzureAIAgent(definition, agentsClient);
Einrichten des Magentic-Managers
Der Magentic Manager koordiniert die Agents, plant den Workflow, verfolgt den Fortschritt und synthetisiert die endgültige Antwort. Der Standard-Manager (StandardMagenticManager) verwendet ein Chatabschlussmodell, das strukturierte Ausgabe unterstützt.
Kernel managerKernel = CreateKernelWithChatCompletion("o3-mini");
StandardMagenticManager manager = new StandardMagenticManager(
managerKernel.GetRequiredService<IChatCompletionService>(),
new OpenAIPromptExecutionSettings())
{
MaximumInvocationCount = 5,
};
Optional: Beobachten von Agentantworten
Sie können eine Callback-Funktion erstellen, um Agentenantworten zu erfassen, während die Orchestrierung über die ResponseCallback-Eigenschaft fortschreitet.
ChatHistory history = [];
ValueTask responseCallback(ChatMessageContent response)
{
history.Add(response);
return ValueTask.CompletedTask;
}
Magnetische Orchestrierung erstellen
Kombinieren Sie Ihre Agents und Manager in einem MagenticOrchestration Objekt.
MagenticOrchestration orchestration = new MagenticOrchestration(
manager,
researchAgent,
coderAgent)
{
ResponseCallback = responseCallback,
};
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
Rufen Sie die Orchestrierung mit Ihrer komplexen Aufgabe auf. Der Vorgesetzte plant, delegieren und koordinieren die Agents, um das Problem zu lösen.
string input = @"I am preparing a report on the energy efficiency of different machine learning model architectures.\nCompare the estimated training and inference energy consumption of ResNet-50, BERT-base, and GPT-2 on standard datasets (e.g., ImageNet for ResNet, GLUE for BERT, WebText for GPT-2). Then, estimate the CO2 emissions associated with each, assuming training on an Azure Standard_NC6s_v3 VM for 24 hours. Provide tables for clarity, and recommend the most energy-efficient model per task type (image classification, text classification, and text generation).";
var result = await orchestration.InvokeAsync(input, runtime);
Sammeln von Ergebnissen
Warten Sie, bis die Orchestrierung abgeschlossen ist, und rufen Sie die endgültige Ausgabe ab.
string output = await result.GetValueAsync(TimeSpan.FromSeconds(300));
Console.WriteLine($"\n# RESULT: {output}");
Console.WriteLine("\n\nORCHESTRATION HISTORY");
foreach (ChatMessageContent message in history)
{
// Print each message
Console.WriteLine($"# {message.Role} - {message.AuthorName}: {message.Content}");
}
Optional: Beenden der Laufzeit
Beenden Sie nach Abschluss der Verarbeitung die Laufzeit, um Ressourcen zu bereinigen.
await runtime.RunUntilIdleAsync();
Beispielausgabe
# RESULT: ```markdown
# Report: Energy Efficiency of Machine Learning Model Architectures
This report assesses the energy consumption and related CO₂ emissions for three popular ...
ORCHESTRATION HISTORY
# Assistant - ResearchAgent: Comparing the energy efficiency of different machine learning ...
# assistant - CoderAgent: Below are tables summarizing the approximate energy consumption and ...
# assistant - CoderAgent: The estimates provided in our tables align with a general understanding ...
# assistant - CoderAgent: Here's the updated structure for the report integrating both the ...
Tipp
Der vollständige Beispielcode ist hier verfügbar.
Definieren Sie Ihre Agenten
Jeder Agent im Magentischen Muster hat eine spezielle Rolle. In diesem Beispiel:
- ResearchAgent: Findet und fasst Informationen zusammen (z. B. über die Websuche). Hier wird das Beispiel mit dem
ChatCompletionAgentModell für diegpt-4o-search-previewWebsuchfunktion verwendet. - CoderAgent: Schreibt Und führt Code aus, um Daten zu analysieren oder zu verarbeiten. Hier wird das
OpenAIAssistantAgentverwendet, da es fortschrittliche Tools wie den Code-Interpreter bietet.
Tipp
Die ChatCompletionAgent und OpenAIAssistantAgent werden hier verwendet, aber Sie können jeden Agent-Typ verwenden.
from semantic_kernel.agents import ChatCompletionAgent, OpenAIAssistantAgent
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
research_agent = ChatCompletionAgent(
name="ResearchAgent",
description="A helpful assistant with access to web search. Ask it to perform web searches.",
instructions="You are a Researcher. You find information without additional computation or quantitative analysis.",
service=OpenAIChatCompletion(ai_model_id="gpt-4o-search-preview"),
)
# Create an OpenAI Assistant agent with code interpreter capability
client, model = OpenAIAssistantAgent.setup_resources()
code_interpreter_tool, code_interpreter_tool_resources = OpenAIAssistantAgent.configure_code_interpreter_tool()
definition = await client.beta.assistants.create(
model=model,
name="CoderAgent",
description="A helpful assistant that writes and executes code to process and analyze data.",
instructions="You solve questions using code. Please provide detailed analysis and computation process.",
tools=code_interpreter_tool,
tool_resources=code_interpreter_tool_resources,
)
coder_agent = OpenAIAssistantAgent(
client=client,
definition=definition,
)
Einrichten des Magentic-Managers
Der Magentic Manager koordiniert die Agents, plant den Workflow, verfolgt den Fortschritt und synthetisiert die endgültige Antwort. Der Standardmanager (StandardMagenticManager) verwendet sorgfältig gestaltete Eingabeaufforderungen und erfordert ein Chatabschlussmodell, das strukturierte Ausgabe unterstützt.
from semantic_kernel.agents import StandardMagenticManager
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
manager = StandardMagenticManager(chat_completion_service=OpenAIChatCompletion())
Optional: Beobachten von Agentantworten
Sie können einen Rückruf definieren, um die Nachricht jedes Agents zu drucken, während die Orchestrierung fortschreitet.
from semantic_kernel.contents import ChatMessageContent
def agent_response_callback(message: ChatMessageContent) -> None:
print(f"**{message.name}**\n{message.content}")
Magnetische Orchestrierung erstellen
Kombinieren Sie Ihre Agents und Manager in einem MagenticOrchestration Objekt.
from semantic_kernel.agents import MagenticOrchestration
magentic_orchestration = MagenticOrchestration(
members=[research_agent, coder_agent],
manager=manager,
agent_response_callback=agent_response_callback,
)
Laufzeit starten
Starten Sie die Laufzeit, um die Agentausführung zu verwalten.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Aufrufen der Orchestrierung
Rufen Sie die Orchestrierung mit Ihrer komplexen Aufgabe auf. Der Vorgesetzte plant, delegieren und koordinieren die Agents, um das Problem zu lösen.
orchestration_result = await magentic_orchestration.invoke(
task=(
"I am preparing a report on the energy efficiency of different machine learning model architectures. "
"Compare the estimated training and inference energy consumption of ResNet-50, BERT-base, and GPT-2 "
"on standard datasets (e.g., ImageNet for ResNet, GLUE for BERT, WebText for GPT-2). "
"Then, estimate the CO2 emissions associated with each, assuming training on an Azure Standard_NC6s_v3 VM "
"for 24 hours. Provide tables for clarity, and recommend the most energy-efficient model "
"per task type (image classification, text classification, and text generation)."
),
runtime=runtime,
)
Sammeln von Ergebnissen
Warten Sie, bis die Orchestrierung abgeschlossen ist, und drucken Sie das Endergebnis.
value = await orchestration_result.get()
print(f"\nFinal result:\n{value}")
Optional: Beenden der Laufzeit
Beenden Sie nach Abschluss der Verarbeitung die Laufzeit, um Ressourcen zu bereinigen.
await runtime.stop_when_idle()
Beispielausgabe
**ResearchAgent**
Estimating the energy consumption and associated CO₂ emissions for training and inference of ResNet-50, BERT-base...
**CoderAgent**
Here is the comparison of energy consumption and CO₂ emissions for each model (ResNet-50, BERT-base, and GPT-2)
over a 24-hour period:
| Model | Training Energy (kWh) | Inference Energy (kWh) | Total Energy (kWh) | CO₂ Emissions (kg) |
|-----------|------------------------|------------------------|---------------------|---------------------|
| ResNet-50 | 21.11 | 0.08232 | 21.19232 | 19.50 |
| BERT-base | 0.048 | 0.23736 | 0.28536 | 0.26 |
| GPT-2 | 42.22 | 0.35604 | 42.57604 | 39.17 |
...
Final result:
Here is the comprehensive report on energy efficiency and CO₂ emissions for ResNet-50, BERT-base, and GPT-2 models...
Tipp
Der vollständige Beispielcode ist hier verfügbar.
Hinweis
Die Agent-Orchestrierung ist noch nicht im Java SDK verfügbar.