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.

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

Standaarduitvoeringsmodel voor agent-runtime-omgeving

Alle agents in het Microsoft Agent Framework worden uitgevoerd met behulp van een gestructureerd runtimemodel. Dit model coördineert gebruikersinteractie, modeldeductie en uitvoering van hulpprogramma's in een deterministische lus.

AI-agentdiagram

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 Opslag van servicechatgeschiedenis ondersteund InMemory/Aangepaste chatgeschiedenisopslag ondersteund
Azure AI Foundry Agent Een agent die gebruikmaakt van de Azure AI Foundry Agents-service als back-end. Ja 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. Ja
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. Ja Ja
Azure OpenAI ChatCompletion Een agent die gebruikmaakt van de Azure OpenAI ChatCompletion-service. Nee. Ja
Azure OpenAI-antwoorden Een agent die gebruikmaakt van de Azure OpenAI-antwoordenservice. Ja Ja
OpenAI ChatCompletion Een agent die gebruikmaakt van de OpenAI ChatCompletion-service. Nee. Ja
OpenAI-antwoorden Een agent die gebruikmaakt van de OpenAI-antwoordenservice. Ja Ja
OpenAI-assistenten Een agent die gebruikmaakt van de Service OpenAI Assistants. Ja 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-inferentie-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 DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)

Waarschuwing

DefaultAzureCredential is handig voor ontwikkeling, maar vereist zorgvuldige overwegingen in de productieomgeving. Overweeg in productie een specifieke referentie te gebruiken (bijvoorbeeld ManagedIdentityCredential) om latentieproblemen, onbedoelde referentieprobing en potentiële beveiligingsrisico's van terugvalmechanismen te voorkomen.

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)
    .AsAIAgent(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 DefaultAzureCredential())
     .GetChatClient(deploymentName)
     .AsAIAgent(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 DefaultAzureCredential());
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. Dit kan worden gedaan met behulp van de SupportsChatGetResponse, waarmee een standaard wordt gedefinieerd voor de methoden die een client moet ondersteunen voor gebruik met de standaardklasse Agent .

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

Als u een van deze agents wilt maken, maakt u eenvoudigweg een Agent door gebruik te maken van de implementatie van de chatclient van uw keuze.

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

U kunt ook de gemaksmethode op de chatclient gebruiken:

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

Opmerking

In dit voorbeeld ziet u hoe u de AzureOpenAIResponsesClient gebruikt, maar hetzelfde patroon is van toepassing op een chatclient die implementeert SupportsChatGetResponse, raadpleegt u het overzicht van providers voor meer informatie over andere clients.

Zie de secties over agentspecifieke documentatie hieronder voor gedetailleerde voorbeelden.

Ondersteunde chatproviders

Onderliggende inferenceservice Description Opslag voor servicechatgeschiedenis ondersteund
Azure AI Foundry Agent Een agent die de Azure AI Agents-service als back-end gebruikt. Ja
Voltooiing van Azure OpenAI-chat Een agent die gebruikmaakt van de Azure OpenAI Chat Completion-service. Nee.
Azure OpenAI-antwoorden Een agent die gebruikmaakt van de Azure OpenAI-antwoordenservice. Ja
Azure OpenAI-assistenten Een agent die gebruikmaakt van de Azure OpenAI Assistant-service. Ja
Voltooiing van openAI-chat Een agent die gebruikmaakt van de OpenAI Chat Completion-service. Nee.
OpenAI-antwoorden Een agent die gebruikmaakt van de OpenAI-antwoordenservice. Ja
OpenAI-assistenten Een agent die gebruikmaakt van de Service OpenAI Assistants. Ja
Anthropic Claude Een agent die Anthropic Claude-modellen gebruikt. Nee.
Amazon Bedrock Een agent die Gebruikmaakt van Amazon Bedrock-modellen via de Agent Framework Bedrock-chatclient. Nee.
GitHub-copiloot Een agent die gebruikmaakt van de Back-end van de GitHub Copilot SDK. Nee.
Ollama (OpenAI-compatibel) Een agent die lokaal gehoste Ollama-modellen gebruikt via openAI-compatibele API's. Nee.
Een andere ChatClient U kunt ook elke andere implementatie van SupportsChatGetResponse gebruiken om een agent te creëren. Varies

Aangepaste opslag van chatgeschiedenis wordt ondersteund wanneer de sessiegebaseerde gespreksstatus wordt ondersteund.

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

Zie voor streamingvoorbeelden:

Zie Agents uitvoeren voor meer aanroeppatronen.

Functiehulpmiddelen

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

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

Zie Tools overzicht voor hulpprogramma's en hulpprogrammapatronen.

Aangepaste agenten

Zie Aangepaste agents voor volledig aangepaste implementaties (bijvoorbeeld deterministische agents of door API ondersteunde agents). Op deze pagina wordt het implementeren SupportsAgentRun of uitbreiden BaseAgentbeschreven, inclusief streaming-updates met AgentResponseUpdate.

Andere agenttypen

Agent Framework bevat ook agents met protocolsteun, zoals:

Agenttype Description
A2A Een proxyagent die verbinding maakt met externe A2A-compatibele agents en deze aanroept.

Volgende stappen