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.
Microsoft Agent Framework prend en charge plusieurs types d’agents pour prendre en charge différents cas d’usage et exigences.
Tous les agents sont dérivés d’une classe de base commune, AIAgentqui fournit une interface cohérente pour tous les types d’agents. Cela permet de créer des fonctionnalités courantes, indépendantes de l’agent, de niveau supérieur, telles que les orchestrations multi-agents.
Tous les agents sont dérivés d’une classe de base commune, Agentqui fournit une interface cohérente pour tous les types d’agents. Cela permet de créer des fonctionnalités courantes, indépendantes de l’agent, de niveau supérieur, telles que les orchestrations multi-agents.
Modèle d’exécution du runtime de l’agent par défaut
Tous les agents du Microsoft Agent Framework s’exécutent à l’aide d’un modèle d’exécution structuré. Ce modèle coordonne l’interaction utilisateur, l’inférence de modèle et l’exécution d’outils dans une boucle déterministe.
Important
Si vous utilisez Microsoft Agent Framework pour créer des applications qui fonctionnent avec des serveurs ou des agents tiers, vous le faites à votre propre risque. Nous vous recommandons d’examiner toutes les données partagées avec des serveurs ou agents tiers et de connaître les pratiques tierces pour la rétention et l’emplacement des données. Il est de votre responsabilité de gérer si vos données circuleront en dehors des limites géographiques et de conformité Azure de votre organisation et des implications connexes.
Agents simples basés sur les services d’inférence
Agent Framework facilite la création d’agents simples basés sur de nombreux services d’inférence différents.
Tout service d’inférence qui fournit une Microsoft.Extensions.AI.IChatClient implémentation peut être utilisé pour générer ces agents. La classe d’agent Microsoft.Agents.AI.ChatClientAgent est utilisée pour fournir un agent pour toute implémentation IChatClient.
Ces agents prennent en charge un large éventail de fonctionnalités prêtes à l’emploi :
- Appel de fonction.
- Conversations multitours avec la gestion de l'historique des conversations locale ou la gestion de l'historique des conversations fourni par le service.
- Outils fournis par le service personnalisé (par exemple, MCP, Exécution du code).
- Sortie structurée.
Pour créer l’un de ces agents, construisez simplement un ChatClientAgent en utilisant l'implémentation IChatClient de votre choix.
using Microsoft.Agents.AI;
var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");
Pour faciliter la création de ces agents, Agent Framework fournit des assistances pour de nombreux services populaires. Pour plus d’informations, consultez la documentation de chaque service.
| Service d’inférence sous-jacent | Descriptif | Stockage de l’historique des conversations de service pris en charge | Stockage de l’historique des conversations personnalisées/InMemory pris en charge |
|---|---|---|---|
| Azure AI Foundry Agent | Agent qui utilise le service Azure AI Foundry Agents comme back-end. | Oui | Non |
| Modèles d'achèvement de chat Azure AI Foundry | Agent qui utilise l’un des modèles déployés dans le service Azure AI Foundry en tant que serveur principal via ChatCompletion. | Non | Oui |
| Réponses des modèles Azure AI Foundry | Agent qui utilise l’un des modèles déployés dans le service Azure AI Foundry en tant que backend par le biais de Responses. | Oui | Oui |
| Azure OpenAI ChatCompletion | Agent qui utilise le service Azure OpenAI ChatCompletion. | Non | Oui |
| Réponses Azure OpenAI | Agent qui utilise le service Réponses Azure OpenAI. | Oui | Oui |
| OpenAI ChatCompletion | Agent qui utilise le service OpenAI ChatCompletion. | Non | Oui |
| Réponses OpenAI | Agent qui utilise le service Réponses OpenAI. | Oui | Oui |
| OpenAI Assistants | Agent qui utilise le service Assistants OpenAI. | Oui | Non |
Tout autre IChatClient |
Vous pouvez également utiliser n’importe quelle autre Microsoft.Extensions.AI.IChatClient implémentation pour créer un agent. |
Varie | Varie |
Agents personnalisés complexes
Il est également possible de créer des agents entièrement personnalisés qui ne sont pas seulement des wrappers autour d’un IChatClient.
Le cadre de l'agent fournit le AIAgent type de base.
Ce type de base est l’abstraction principale pour tous les agents, qui, lorsqu’ils sont sous-classés, permet un contrôle total sur le comportement et les fonctionnalités de l’agent.
Pour plus d’informations, consultez la documentation relative aux agents personnalisés.
Proxys pour les agents distants
Agent Framework fournit des implémentations clés en main AIAgent pour les protocoles d'agents couramment hébergés par des services, tels que A2A. De cette façon, vous pouvez facilement vous connecter et utiliser des agents distants à partir de votre application.
Pour plus d’informations, consultez la documentation de chaque type d’agent :
| Protocole | Descriptif |
|---|---|
| A2A | Agent qui sert de proxy à un agent distant via le protocole A2A. |
Informations de référence sur les options du Kit de développement logiciel (SDK) Azure et OpenAI
Lorsque vous utilisez les services Azure AI Foundry, Azure OpenAI ou OpenAI, vous disposez de différentes options sdk pour vous connecter à ces services. Dans certains cas, il est possible d’utiliser plusieurs kits SDK pour se connecter au même service ou pour utiliser le même SDK pour se connecter à différents services. Voici une liste des différentes options disponibles avec l’URL que vous devez utiliser lors de la connexion à chacun d’eux. Assurez-vous de remplacer <resource> et <project> par vos noms réels de ressources et de projets.
| Service IA | SDK | Nuget | URL |
|---|---|---|---|
| Modèles Azure AI Foundry | Kit de développement logiciel (SDK) Azure OpenAI 2 | Azure.AI.OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Modèles Azure AI Foundry | Kit de développement logiciel (SDK) OpenAI 3 | OpenAI | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Modèles Azure AI Foundry | Kit de développement logiciel (SDK) d’inférence Azure AI 2 | Azure.AI.Inference | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Azure AI Foundry Agents | Kit de développement logiciel (SDK) des agents persistants Azure AI | Azure.AI.Agents.Persistent | https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><> |
| Azure OpenAI1 | Kit de développement logiciel (SDK) Azure OpenAI 2 | Azure.AI.OpenAI | <https:// resource.openai.azure.com/> |
| Azure OpenAI1 | Kit de développement logiciel (SDK) OpenAI | OpenAI | <https://resource.openai.azure.com/openai/v1/> |
| OpenAI | Kit de développement logiciel (SDK) OpenAI | OpenAI | Aucune URL requise |
- Mise à niveau d’Azure OpenAI vers Azure AI Foundry
- Nous vous recommandons d’utiliser le Kit de développement logiciel (SDK) OpenAI.
- Bien que nous vous recommandons d’utiliser le Kit de développement logiciel (SDK) OpenAI pour accéder aux modèles Azure AI Foundry, les modèles Azure AI Foundry prennent en charge les modèles de nombreux fournisseurs différents, pas seulement OpenAI. Tous ces modèles sont pris en charge via le Kit de développement logiciel (SDK) OpenAI.
Utilisation du Kit de développement logiciel (SDK) OpenAI
Comme indiqué dans le tableau ci-dessus, le Kit de développement logiciel (SDK) OpenAI peut être utilisé pour se connecter à plusieurs services.
Selon le service auquel vous vous connectez, vous devrez peut-être définir une URL personnalisée lors de la création du OpenAIClient.
Vous pouvez également utiliser différents mécanismes d’authentification en fonction du service.
Si une URL personnalisée est requise (voir le tableau ci-dessus), vous pouvez la définir via OpenAIClientOptions.
var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };
Il est possible d’utiliser une clé API lors de la création du client.
OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);
Lorsque vous utilisez un service Azure, il est également possible d’utiliser des informations d’identification Azure au lieu d’une clé API.
OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)
Avertissement
DefaultAzureCredential est pratique pour le développement, mais nécessite une considération minutieuse en production. En production, envisagez d’utiliser des informations d’identification spécifiques (par exemple ManagedIdentityCredential) pour éviter les problèmes de latence, la détection involontaire des informations d’identification et les risques de sécurité potentiels liés aux mécanismes de secours.
Une fois que vous avez créé OpenAIClient, vous pouvez obtenir un sous-client pour le service spécifique que vous souhaitez utiliser, puis créer un AIAgent à partir de celui-ci.
AIAgent agent = client
.GetChatClient(model)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Utilisation du Kit de développement logiciel (SDK) Azure OpenAI
Ce Kit de développement logiciel (SDK) peut être utilisé pour se connecter aux services Azure OpenAI et Azure AI Foundry Models.
De toute façon, vous devez fournir l’URL de service correcte lors de la création du AzureOpenAIClient.
Consultez le tableau ci-dessus pour obtenir l’URL appropriée à utiliser.
AIAgent agent = new AzureOpenAIClient(
new Uri(serviceUrl),
new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Utilisation du kit de développement logiciel (SDK) des agents persistants Azure AI
Ce Kit de développement logiciel (SDK) est pris en charge uniquement avec le service Agents Azure AI Foundry. Consultez le tableau ci-dessus pour obtenir l’URL appropriée à utiliser.
var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new DefaultAzureCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
model: deploymentName,
name: "Joker",
instructions: "You are good at telling jokes.");
Agents simples basés sur les services d’inférence
Agent Framework facilite la création d’agents simples basés sur de nombreux services d’inférence différents.
Tout service d’inférence qui fournit une implémentation cliente de conversation peut être utilisé pour générer ces agents.
Cette opération peut être effectuée à l’aide du SupportsChatGetResponse, qui définit une norme pour les méthodes qu’un client doit prendre en charge pour être utilisé avec la classe standard Agent .
Ces agents prennent en charge un large éventail de fonctionnalités prêtes à l’emploi :
- Appeler une fonction
- Conversations à plusieurs tours avec gestion locale de l'historique des conversations ou gestion de l'historique des conversations fournie par le service
- Outils fournis par le service personnalisé (par exemple, MCP, exécution de code)
- Sortie structurée
- Réponses en streaming
Pour créer l’un de ces agents, construisez simplement un Agent en utilisant l’implémentation du client de chat de votre choix.
import os
from agent_framework import Agent
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential
Agent(
client=AzureOpenAIResponsesClient(credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")),
instructions="You are a helpful assistant"
) as agent
response = await agent.run("Hello!")
Vous pouvez également utiliser la méthode pratique sur le client de chat :
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential
agent = AzureOpenAIResponsesClient(async_credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")).as_agent(
instructions="You are a helpful assistant"
)
Note
Cet exemple montre l’utilisation d’AzureOpenAIResponsesClient, mais le même modèle s’applique à n’importe quel client de conversation qui implémente SupportsChatGetResponse, consultez la vue d’ensemble des fournisseurs pour plus d’informations sur d’autres clients.
Pour obtenir des exemples détaillés, consultez les sections de documentation spécifiques à l’agent ci-dessous.
Fournisseurs de conversation pris en charge
| Service d’inférence sous-jacent | Descriptif | Stockage pris en charge de l’historique des conversations de service |
|---|---|---|
| Azure AI Foundry Agent | Agent qui utilise le service Azure AI Agents comme back-end. | Oui |
| Fin de conversation Azure OpenAI | Agent qui utilise le service d’achèvement de conversation Azure OpenAI. | Non |
| Réponses Azure OpenAI | Agent qui utilise le service Réponses Azure OpenAI. | Oui |
| Assistants Azure OpenAI | Agent qui utilise le service Assistants Azure OpenAI. | Oui |
| Complétion de discussion OpenAI | Un agent qui utilise le service OpenAI Chat Completion. | Non |
| Réponses OpenAI | Agent qui utilise le service Réponses OpenAI. | Oui |
| OpenAI Assistants | Agent qui utilise le service Assistants OpenAI. | Oui |
| Anthropic Claude | Un agent qui utilise les modèles Claude Anthropic. | Non |
| Socle rocheux de l’Amazonie | Agent qui utilise des modèles Amazon Bedrock via le client de conversation Bedrock Agent Framework. | Non |
| GitHub Copilot | Agent qui utilise le back-end du Kit de développement logiciel (SDK) Copilot GitHub. | Non |
| Ollama (compatible OpenAI) | Agent qui utilise des modèles Ollama hébergés localement via des API compatibles OpenAI. | Non |
| Tout autre ChatClient | Vous pouvez également utiliser toute autre implémentation de SupportsChatGetResponse pour créer un agent. |
Varie |
Le stockage personnalisé de l'historique des conversations est pris en charge chaque fois que l'état de conversation basé sur la session est pris en charge.
Réponses en continu
Les agents prennent en charge les réponses standard et en flux continu :
# Regular response (wait for complete result)
response = await agent.run("What's the weather like in Seattle?")
print(response.text)
# Streaming response (get results as they are generated)
async for chunk in agent.run("What's the weather like in Portland?", stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
Pour obtenir des exemples de diffusion en continu, consultez :
Pour plus de modèles d’appel, consultez Exécution des agents.
Outils de fonction
Vous pouvez fournir des outils de fonction aux agents pour des fonctionnalités améliorées :
import os
from typing import Annotated
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient
def get_weather(location: Annotated[str, "The location to get the weather for."]) -> str:
"""Get the weather for a given location."""
return f"The weather in {location} is sunny with a high of 25°C."
async with DefaultAzureCredential() as credential:
agent = AzureOpenAIResponsesClient(
async_credential=credential,
project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"),
deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME"),
).as_agent(
instructions="You are a helpful weather assistant.",
tools=get_weather,
)
response = await agent.run("What's the weather in Seattle?")
Pour obtenir des outils et des modèles d’outils, consultez Vue d’ensemble des outils.
Agents personnalisés
Pour obtenir des implémentations entièrement personnalisées (par exemple, des agents déterministes ou des agents soutenus par l’API), consultez Agents personnalisés. Cette page couvre l’implémentation de SupportsAgentRun ou l’extension de BaseAgent, y compris les mises à jour en streaming avec AgentResponseUpdate.
Autres types d’agents
Agent Framework inclut également des agents sauvegardés par protocole, tels que :
| Type d’agent | Descriptif |
|---|---|
| A2A | Agent proxy qui se connecte et appelle des agents compatibles A2A distants. |