Delen via


Typen Microsoft Agent Framework-agent

Het Microsoft Agent Framework biedt ondersteuning voor verschillende typen agents voor verschillende gebruiksscenario's en vereisten.

Alle agents zijn afgeleid van een algemene basisklasse, AIAgentdie een consistente interface biedt voor alle agenttypen. Hiermee kunt u algemene, agentagnostische functionaliteit op een hoger niveau bouwen, zoals coördinaties met meerdere agenten.

Belangrijk

Als u Microsoft Agent Framework gebruikt om toepassingen te bouwen die werken met servers of agents van derden, doet u dit op eigen risico. We raden u aan om alle gegevens te controleren die worden gedeeld met servers of agents van derden en om te voldoen aan procedures van derden voor het bewaren en de locatie van gegevens. Het is uw verantwoordelijkheid om te beheren of uw gegevens buiten de Azure-nalevings- en geografische grenzen van uw organisatie stromen en eventuele gerelateerde gevolgen.

Eenvoudige agents op basis van inferentieservices

Met Agent Framework kunt u eenvoudig eenvoudige agents maken op basis van veel verschillende deductieservices. Elke deductieservice die een Microsoft.Extensions.AI.IChatClient implementatie biedt, kan worden gebruikt om deze agents te bouwen. Dit Microsoft.Agents.AI.ChatClientAgent is de agentklasse die wordt gebruikt om een agent te bieden voor elke IChatClient implementatie.

Deze agents bieden ondersteuning voor een breed scala aan functionaliteit:

  1. Functie aanroepen.
  2. Gesprekken met meerdere beurten waarbij het beheer van de chatgeschiedenis lokaal of door de service wordt verzorgd.
  3. Door aangepaste service geleverde hulpprogramma's (bijvoorbeeld MCP, code-uitvoering).
  4. Gestructureerde uitvoer.

Als u een van deze agents wilt maken, maakt u gewoon een ChatClientAgent met behulp van de IChatClient implementatie van uw keuze.

using Microsoft.Agents.AI;

var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");

Om het maken van deze agents nog eenvoudiger te maken, biedt Agent Framework helpers voor veel populaire services. Zie de documentatie voor elke service voor meer informatie.

Onderliggende deductieservice Description Ondersteuning voor opslag van servicechatgeschiedenis Ondersteuning voor opslag van aangepaste chatgeschiedenis
Azure AI Foundry Agent Een agent die gebruikmaakt van de Azure AI Foundry Agents-service als back-end. Yes Nee.
ChatCompletion voor Azure AI Foundry-modellen Een agent die gebruikmaakt van een van de modellen die zijn geïmplementeerd in de Azure AI Foundry Service als back-end via ChatCompletion. Nee. Yes
Antwoorden op Azure AI Foundry-modellen Een agent die gebruikmaakt van een van de modellen die zijn geïmplementeerd in de Azure AI Foundry Service als back-end via Responses. Nee. Yes
Azure OpenAI ChatCompletion Een agent die gebruikmaakt van de Azure OpenAI ChatCompletion-service. Nee. Yes
Azure OpenAI-antwoorden Een agent die gebruikmaakt van de Azure OpenAI-antwoordenservice. Yes Yes
OpenAI ChatCompletion Een agent die gebruikmaakt van de OpenAI ChatCompletion-service. Nee. Yes
OpenAI-antwoorden Een agent die gebruikmaakt van de OpenAI-antwoordenservice. Yes Yes
OpenAI-assistenten Een agent die gebruikmaakt van de Service OpenAI Assistants. Yes Nee.
Andere IChatClient U kunt ook elke andere Microsoft.Extensions.AI.IChatClient implementatie gebruiken om een agent te maken. Varies Varies

Complexe aangepaste agents

Het is ook mogelijk om agents volledig op maat te maken, in plaats van slechts als wrappers rond een IChatClient. Het agentframework biedt het AIAgent basistype. Dit basistype is de kernabstractie voor alle agents, die, wanneer subklassen worden gebruikt, volledige controle over het gedrag en de mogelijkheden van de agent mogelijk maakt.

Voor meer informatie, zie de documentatie voor aangepaste agenten.

Proxy's voor externe agents

Agent Framework biedt kant-en-klare AIAgent implementaties voor algemene service-gehoste agentprotocollen, zoals A2A. Op deze manier kunt u eenvoudig verbinding maken met externe agents en deze gebruiken vanuit uw toepassing.

Zie de documentatie voor elk type agent voor meer informatie:

protocol Description
A2A Een agent die als proxy fungeert voor een externe agent via het A2A-protocol.

Naslaginformatie over Azure- en OpenAI SDK-opties

Wanneer u Azure AI Foundry-, Azure OpenAI- of OpenAI-services gebruikt, hebt u verschillende SDK-opties om verbinding te maken met deze services. In sommige gevallen is het mogelijk om meerdere SDK's te gebruiken om verbinding te maken met dezelfde service of om dezelfde SDK te gebruiken om verbinding te maken met verschillende services. Hier volgt een lijst met de verschillende opties die beschikbaar zijn met de URL die u moet gebruiken bij het maken van verbinding met elke url. Zorg ervoor dat u <resource> en <project> vervangt met uw werkelijke resource- en projectnamen.

AI-service SDK Nuget URL
Azure AI Foundry Modellen Azure OpenAI SDK 2 Azure.AI.OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Azure AI Foundry Modellen OpenAI SDK 3 OpenAI https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Azure AI Foundry Modellen Azure AI Inference-SDK 2 Azure.AI.Inference https://ai-foundry-<resource.services.ai.azure.com/models>
Azure AI Foundry Agents Azure AI Persistent Agents SDK Azure.AI.Agents.Persistent https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><>
Azure OpenAI1 Azure OpenAI SDK 2 Azure.AI.OpenAI <https:// resource.openai.azure.com/>
Azure OpenAI1 OpenAI SDK OpenAI <https://resource.openai.azure.com/openai/v1/>
OpenAI OpenAI SDK OpenAI Geen URL vereist
  1. Upgraden van Azure OpenAI naar Azure AI Foundry
  2. U wordt aangeraden de OpenAI SDK te gebruiken.
  3. Hoewel het raadzaam is om de OpenAI SDK te gebruiken voor toegang tot Azure AI Foundry-modellen, ondersteunen Azure AI Foundry-modellen modellen van veel verschillende leveranciers, niet alleen OpenAI. Al deze modellen worden ondersteund via de OpenAI SDK.

De OpenAI SDK gebruiken

Zoals wordt weergegeven in de bovenstaande tabel, kan de OpenAI SDK worden gebruikt om verbinding te maken met meerdere services. Afhankelijk van de service waarmee u verbinding maakt, moet u mogelijk een aangepaste URL instellen bij het maken van de OpenAIClient. U kunt ook verschillende verificatiemechanismen gebruiken, afhankelijk van de service.

Als een aangepaste URL is vereist (zie de bovenstaande tabel), kunt u deze instellen via de OpenAIClientOptions.

var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };

Het is mogelijk om een API-sleutel te gebruiken bij het maken van de client.

OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);

Wanneer u een Azure-service gebruikt, is het ook mogelijk om Azure-referenties te gebruiken in plaats van een API-sleutel.

OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new AzureCliCredential(), "https://ai.azure.com/.default"), clientOptions)

Zodra u de OpenAIClient hebt gemaakt, kunt u een subclient ophalen voor de specifieke service die u wilt gebruiken en vervolgens een AIAgent daarvan maken.

AIAgent agent = client
    .GetChatClient(model)
    .CreateAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

De Azure OpenAI SDK gebruiken

Deze SDK kan worden gebruikt om verbinding te maken met zowel Azure OpenAI- als Azure AI Foundry Models-services. In beide gevallen moet u de juiste service-URL opgeven bij het maken van de AzureOpenAIClient. Zie de bovenstaande tabel voor de juiste URL die u wilt gebruiken.

AIAgent agent = new AzureOpenAIClient(
    new Uri(serviceUrl),
    new AzureCliCredential())
     .GetChatClient(deploymentName)
     .CreateAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

De Azure AI Persistent Agents SDK gebruiken

Deze SDK wordt alleen ondersteund met de Azure AI Foundry Agents-service. Zie de bovenstaande tabel voor de juiste URL die u wilt gebruiken.

var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new AzureCliCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
    model: deploymentName,
    name: "Joker",
    instructions: "You are good at telling jokes.");

Eenvoudige agents op basis van inferentieservices

Met Agent Framework kunt u eenvoudig eenvoudige agents maken op basis van veel verschillende deductieservices. Elke deductieservice die een implementatie van een chatclient biedt, kan worden gebruikt om deze agents te bouwen.

Deze agents bieden ondersteuning voor een breed scala aan functionaliteit:

  1. Functie oproepen
  2. Gesprekken met meer gespreksrondes met lokaal beheer van chatgeschiedenis of door de service geboden beheer van chatgeschiedenis
  3. Door aangepaste service geleverde hulpprogramma's (bijvoorbeeld MCP, code-uitvoering)
  4. Gestructureerde uitvoer
  5. Streamingantwoorden

Om een van deze agents te maken, bouwt u eenvoudig een ChatAgent met behulp van de chatclient-implementatie van uw keuze.

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!")

U kunt ook de gemaksmethode op de chatclient gebruiken:

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"
    )

Zie de secties over agentspecifieke documentatie hieronder voor gedetailleerde voorbeelden.

Ondersteunde agenttypen

Onderliggende inferenceservice Description Opslag voor servicechatgeschiedenis ondersteund Opslag voor aangepaste chatgeschiedenis ondersteund
Azure AI-agent Een agent die de Azure AI Agents-service als back-end gebruikt. Yes Nee.
Voltooiing van Azure OpenAI-chat Een agent die gebruikmaakt van de Azure OpenAI Chat Completion-service. Nee. Yes
Azure OpenAI-antwoorden Een agent die gebruikmaakt van de Azure OpenAI-antwoordenservice. Yes Yes
Voltooiing van openAI-chat Een agent die gebruikmaakt van de OpenAI Chat Completion-service. Nee. Yes
OpenAI-antwoorden Een agent die gebruikmaakt van de OpenAI-antwoordenservice. Yes Yes
OpenAI-assistenten Een agent die gebruikmaakt van de Service OpenAI Assistants. Yes Nee.
Een andere ChatClient U kunt ook elke andere implementatie van een chatclient gebruiken om een agent te maken. Varies Varies

Functiehulpmiddelen

U kunt functiehulpprogramma's aan agents bieden voor verbeterde mogelijkheden:

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?")

Zie voor volledige voorbeelden met functiehulpprogramma's:

Streamingreacties

Agents ondersteunen zowel reguliere als streamingreacties:

# 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)

Zie voor streamingvoorbeelden:

Hulpprogramma's voor code-interpreters

Azure AI-agents ondersteunen gehoste code-interpreterhulpprogramma's voor het uitvoeren van Python-code:

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")

Zie voor voorbeelden van code-interpreters:

Aangepaste agenten

Het is ook mogelijk om volledig aangepaste agents te maken die niet alleen wrappers zijn rond een chatclient. Agent Framework biedt het AgentProtocol protocol en de BaseAgent basisklasse, die, wanneer geïmplementeerd of gesubklast, volledige controle over het gedrag en de mogelijkheden van de agent mogelijk maakt.

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