Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Les fonctionnalités d’orchestration d’agent dans l’infrastructure d’agent sont à l’étape expérimentale. Ils sont en cours de développement actif et peuvent changer considérablement avant de passer à la phase de version préliminaire ou de candidat à la version finale.
L’orchestration Magentic est conçue sur la base du système Magentic-One inventé par AutoGen. Il s’agit d’un modèle multi-agent à usage général flexible conçu pour les tâches complexes et ouvertes qui nécessitent une collaboration dynamique. Dans ce modèle, un responsable Magentic dédié coordonne une équipe d’agents spécialisés, en sélectionnant l’agent qui doit agir ensuite en fonction du contexte en évolution, de la progression des tâches et des fonctionnalités de l’agent.
Le gestionnaire Magentic gère un contexte partagé, suit la progression et adapte le flux de travail en temps réel. Cela permet au système de décomposer les problèmes complexes, de déléguer des tâches subordonnées et d’affiner de manière itérative des solutions via la collaboration de l’agent. L’orchestration est particulièrement adaptée aux scénarios où le chemin de la solution n’est pas connu à l’avance et peut nécessiter plusieurs séries de raisonnement, de recherche et de calcul.
Conseil / Astuce
En savoir plus sur le Magentic-One ici.
Conseil / Astuce
Le nom « Magentic » provient de « Magentic-One ». « Magentic-One » est un système multi-agent qui inclut un ensemble d’agents, tels que le WebSurfer et FileSurfer. L’orchestration Magnétique du noyau sémantique est inspirée par le système Magentic-One où le gestionnaire Magentic coordonne une équipe d’agents spécialisés pour résoudre des tâches complexes. Toutefois, il ne s’agit pas d’une implémentation directe du système Magentic-One et ne présente pas les agents du système Magentic-One.
Pour en savoir plus sur le modèle, par exemple quand utiliser le modèle ou quand éviter le modèle dans votre charge de travail, consultez orchestration Magentic.
Cas d’usage courants
Un utilisateur demande un rapport complet comparant l’efficacité énergétique et les émissions de CO² de différents modèles Machine Learning. Le responsable Magentic affecte d’abord un agent de recherche pour collecter des données pertinentes, puis délègue l’analyse et le calcul à un agent coder. Le responsable coordonne plusieurs séries de recherches et de calculs, agrège les résultats et produit un rapport détaillé et structuré en tant que sortie finale.
Ce que vous allez apprendre
- Guide pratique pour définir et configurer des agents pour l’orchestration Magentic
- Comment configurer un responsable Magentic pour coordonner la collaboration de l’agent
- Fonctionnement du processus d’orchestration, y compris la planification, le suivi des progrès et la synthèse finale des réponses
Définir vos agents
Chaque agent du modèle Magentic a un rôle spécialisé. Dans cet exemple :
- ResearchAgent : recherche et récapitule les informations (par exemple, via la recherche web). Ici, l’exemple utilise le modèle
ChatCompletionAgentavecgpt-4o-search-previewpour sa fonctionnalité de recherche web. - CoderAgent : écrit et exécute du code pour analyser ou traiter des données. Ici, l’exemple utilise,
AzureAIAgentcar il a des outils avancés comme l’interpréteur de code.
Conseil / Astuce
Les ChatCompletionAgent et AzureAIAgent sont utilisés ici, mais vous pouvez utiliser n’importe quel type d’agent.
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);
Configurer le Gestionnaire Magentic
Le responsable Magentic coordonne les agents, planifie le flux de travail, suit la progression et synthétise la réponse finale. Le gestionnaire standard (StandardMagenticManager) utilise un modèle d’achèvement de conversation qui prend en charge la sortie structurée.
Kernel managerKernel = CreateKernelWithChatCompletion("o3-mini");
StandardMagenticManager manager = new StandardMagenticManager(
managerKernel.GetRequiredService<IChatCompletionService>(),
new OpenAIPromptExecutionSettings())
{
MaximumInvocationCount = 5,
};
Facultatif : Observer les réponses de l’agent
Vous pouvez créer une fonction de rappel pour capturer les réponses de l’agent à mesure que l’orchestration progresse via la propriété ResponseCallback.
ChatHistory history = [];
ValueTask responseCallback(ChatMessageContent response)
{
history.Add(response);
return ValueTask.CompletedTask;
}
Créer l’orchestration Magnétique
Combinez vos agents et gestionnaire dans un MagenticOrchestration objet.
MagenticOrchestration orchestration = new MagenticOrchestration(
manager,
researchAgent,
coderAgent)
{
ResponseCallback = responseCallback,
};
Démarrer le runtime
Un runtime est nécessaire pour gérer l’exécution des agents. Ici, nous utilisons InProcessRuntime et démarrons avant d’invoquer l’orchestration.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Appeler l’orchestration
Invoquez l’orchestration avec votre tâche complexe. Le responsable planifie, délègue et coordonne les agents pour résoudre le problème.
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);
Collecter les résultats
Attendez que l'orchestration se termine et récupérez la sortie finale.
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}");
}
Facultatif : arrêter le runtime
Une fois le traitement terminé, arrêtez le runtime pour nettoyer les ressources.
await runtime.RunUntilIdleAsync();
Exemple de sortie
# 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 ...
Conseil / Astuce
L’exemple de code complet est disponible ici
Définir vos agents
Chaque agent du modèle Magentic a un rôle spécialisé. Dans cet exemple :
- ResearchAgent : recherche et récapitule les informations (par exemple, via la recherche web). Ici, l’exemple utilise le modèle
ChatCompletionAgentavecgpt-4o-search-previewpour sa fonctionnalité de recherche web. - CoderAgent : écrit et exécute du code pour analyser ou traiter des données. Ici, l’exemple utilise,
OpenAIAssistantAgentcar il a des outils avancés comme l’interpréteur de code.
Conseil / Astuce
Les ChatCompletionAgent et OpenAIAssistantAgent sont utilisés ici, mais vous pouvez utiliser n’importe quel type d’agent.
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,
)
Configurer le Gestionnaire Magentic
Le responsable Magentic coordonne les agents, planifie le flux de travail, suit la progression et synthétise la réponse finale. Le gestionnaire standard (StandardMagenticManager) utilise des invites soigneusement conçues et nécessite un modèle d’achèvement de conversation qui prend en charge la sortie structurée.
from semantic_kernel.agents import StandardMagenticManager
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
manager = StandardMagenticManager(chat_completion_service=OpenAIChatCompletion())
Facultatif : Observer les réponses de l’agent
Vous pouvez définir un rappel pour imprimer le message de chaque agent à mesure que l’orchestration progresse.
from semantic_kernel.contents import ChatMessageContent
def agent_response_callback(message: ChatMessageContent) -> None:
print(f"**{message.name}**\n{message.content}")
Créer l’orchestration Magnétique
Combinez vos agents et gestionnaire dans un MagenticOrchestration objet.
from semantic_kernel.agents import MagenticOrchestration
magentic_orchestration = MagenticOrchestration(
members=[research_agent, coder_agent],
manager=manager,
agent_response_callback=agent_response_callback,
)
Démarrer le runtime
Démarrez le runtime pour gérer l’exécution de l’agent.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Appeler l’orchestration
Invoquez l’orchestration avec votre tâche complexe. Le responsable planifie, délègue et coordonne les agents pour résoudre le problème.
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,
)
Collecter les résultats
Attendez que l’orchestration se termine et imprimez le résultat final.
value = await orchestration_result.get()
print(f"\nFinal result:\n{value}")
Facultatif : arrêter le runtime
Une fois le traitement terminé, arrêtez le runtime pour nettoyer les ressources.
await runtime.stop_when_idle()
Exemple de sortie
**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...
Conseil / Astuce
L’exemple de code complet est disponible ici.
Remarque
L’orchestration de l’agent n’est pas encore disponible dans le Kit de développement logiciel (SDK) Java.