Partager via


Types d'agents du framework Microsoft Agent

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.

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

L’infrastructure de l’agent facilite la création d’agents simples en fonction 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 :

  1. Appeler une fonction
  2. Conversations à plusieurs tours avec gestion locale de l'historique des conversations ou gestion de l'historique des conversations fournie par le service
  3. Outils personnalisés fournis par le service (par exemple, MCP, Exécution du code)
  4. 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 de nombreux services populaires, nous avons également des aides pour faciliter la création de ces agents. Pour plus d’informations, consultez la documentation de chaque service :

Service d’inférence sous-jacent Descriptif Stockage pris en charge de l’historique des conversations de service Stockage d’historique des discussions personnalisées supporté
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. Non 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 de base pour tous les agents, qui, lorsqu’ils sont sous-classés, permettent 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

L’infrastructure de l’agent fournit des implémentations prêtes à l’emploi AIAgent pour les protocoles d’agent hébergés par un service commun, 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
  1. Mise à niveau d’Azure OpenAI vers Azure AI Foundry
  2. Nous vous recommandons d’utiliser le Kit de développement logiciel (SDK) OpenAI.
  3. 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 AzureCliCredential(), "https://ai.azure.com/.default"), clientOptions)

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)
    .CreateAIAgent(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 AzureCliCredential())
     .GetChatClient(deploymentName)
     .CreateAIAgent(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 AzureCliCredential());
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

L’infrastructure de l’agent facilite la création d’agents simples en fonction 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.

Ces agents prennent en charge un large éventail de fonctionnalités prêtes à l’emploi :

  1. Appeler une fonction
  2. Conversations à plusieurs tours avec gestion locale de l'historique des conversations ou gestion de l'historique des conversations fournie par le service
  3. Outils personnalisés fournis par le service (par exemple, MCP, Exécution du code)
  4. Sortie structurée
  5. Réponses de diffusion en continu

Pour créer l’un de ces agents, construisez simplement une ChatAgent en utilisant l'implémentation de client de discussion de votre choix.

from agent_framework import ChatAgent
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential

async with (
    DefaultAzureCredential() as credential,
    ChatAgent(
        chat_client=AzureAIAgentClient(async_credential=credential),
        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 AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential

async with DefaultAzureCredential() as credential:
    agent = AzureAIAgentClient(async_credential=credential).create_agent(
        instructions="You are a helpful assistant"
    )

Pour obtenir des exemples détaillés, consultez les sections de documentation spécifiques à l’agent ci-dessous.

Types d’agents pris en charge

Service d’inférence sous-jacent Descriptif Stockage pris en charge de l’historique des conversations de service Stockage d’historique des discussions personnalisées supporté
Azure AI Agent Agent qui utilise le service Azure AI Agents comme back-end. Oui Non
Fin de conversation Azure OpenAI Agent qui utilise le service d’achèvement de conversation Azure OpenAI. Non Oui
Réponses Azure OpenAI Agent qui utilise le service Réponses Azure OpenAI. Oui Oui
Complétion de discussion OpenAI Un agent qui utilise le service OpenAI Chat Completion. 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 ChatClient Vous pouvez également utiliser n’importe quelle autre implémentation de client de conversation pour créer un agent. Varie Varie

Outils de fonction

Vous pouvez fournir des outils de fonction aux agents pour des fonctionnalités améliorées :

from typing import Annotated
from pydantic import Field
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureAIAgentClient

def get_weather(location: Annotated[str, Field(description="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,
    AzureAIAgentClient(async_credential=credential).create_agent(
        instructions="You are a helpful weather assistant.",
        tools=get_weather
    ) as agent
):
    response = await agent.run("What's the weather in Seattle?")

Pour obtenir des exemples complets avec les outils de fonction, consultez :

Réponses de diffusion 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_stream("What's the weather like in Portland?"):
    if chunk.text:
        print(chunk.text, end="", flush=True)

Pour obtenir des exemples de diffusion en continu, consultez :

Outils d’interpréteur de code

Les agents Azure AI prennent en charge les outils d’interpréteur de code hébergé pour l’exécution de code Python :

from agent_framework import ChatAgent, HostedCodeInterpreterTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential

async with (
    DefaultAzureCredential() as credential,
    ChatAgent(
        chat_client=AzureAIAgentClient(async_credential=credential),
        instructions="You are a helpful assistant that can execute Python code.",
        tools=HostedCodeInterpreterTool()
    ) as agent
):
    response = await agent.run("Calculate the factorial of 100 using Python")

Pour obtenir des exemples d’interpréteur de code, consultez :

Agents personnalisés

Il est également possible de créer des agents entièrement personnalisés qui ne sont pas seulement des wrappers autour d’un client de conversation. Agent Framework fournit le protocole AgentProtocol et la classe de base BaseAgent, qui, lorsqu'ils sont implémentés ou sous-classés, permet un contrôle total sur le comportement et les capacités de l’agent.

from agent_framework import BaseAgent, AgentRunResponse, AgentRunResponseUpdate, AgentThread, ChatMessage
from collections.abc import AsyncIterable

class CustomAgent(BaseAgent):
    async def run(
        self,
        messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
        *,
        thread: AgentThread | None = None,
        **kwargs: Any,
    ) -> AgentRunResponse:
        # Custom agent implementation
        pass

    def run_stream(
        self,
        messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
        *,
        thread: AgentThread | None = None,
        **kwargs: Any,
    ) -> AsyncIterable[AgentRunResponseUpdate]:
        # Custom streaming implementation
        pass