Delen via


agenttypen voor Microsoft Agent Framework

Het Microsoft Agent Framework biedt ondersteuning voor verschillende typen agents voor verschillende use cases 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 van derden, agents, code of niet-Azure Directe modellen ('Systemen van derden'), doet u dit op eigen risico. Systemen van derden zijn niet-Microsoft Producten onder de Microsoft Productvoorwaarden en vallen onder hun eigen licentievoorwaarden van derden. U bent verantwoordelijk voor alle gebruiks- en bijbehorende kosten.

We raden u aan alle gegevens te bekijken die worden gedeeld met en ontvangen van systemen van derden en om kennis te nemen van procedures van derden voor het verwerken, delen, bewaren en locatie van gegevens. Het is uw verantwoordelijkheid om te beheren of uw gegevens buiten de Azure nalevings- en geografische grenzen van uw organisatie en eventuele gerelateerde gevolgen stromen, en of de juiste machtigingen, grenzen en goedkeuringen worden ingericht.

U bent verantwoordelijk voor het zorgvuldig controleren en testen van toepassingen die u bouwt met behulp van Microsoft Agent Framework in de context van uw specifieke use cases en het nemen van alle juiste beslissingen en aanpassingen. Dit omvat het implementeren van uw eigen verantwoorde AI-oplossingen, zoals metaprompt, inhoudsfilters of andere veiligheidssystemen, en ervoor zorgen dat uw toepassingen voldoen aan de juiste kwaliteits-, betrouwbaarheids-, beveiligings- en betrouwbaarheidsstandaarden. Zie ook: Veelgestelde vragen over transparantie

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. De 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
Microsoft Foundry Agent Een agent die de Foundry Agent-service als back-end gebruikt. Ja Nee.
Foundry Models ChatCompletion Een agent die gebruikmaakt van een van de modellen die zijn geïmplementeerd in de Foundry-service als back-end via ChatCompletion. Nee. Ja
Antwoorden op Foundry-modellen Een agent die gebruikmaakt van een van de modellen die zijn geïmplementeerd in de Foundry-service als back-end via Responses. Ja Ja
Foundry Antropic Een agent die gebruikmaakt van een Claude-model via de Foundry Antropic Service als back-end. Nee. 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 service Azure OpenAI-antwoorden. Ja Ja
Antropisch Een agent die gebruikmaakt van een Claude-model via de Anthropic Service als backend. Nee. 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
Andere IChatClient U kunt ook 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.

Referentie voor Azure- en OpenAI SDK-opties

Wanneer u Foundry gebruikt, Azure OpenAI-, OpenAI-services of Antropische services, 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
Foundry-modellen Azure OpenAI SDK 2 Azure. AI. OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Foundry-modellen OpenAI SDK 3 OpenAI https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Foundry-modellen Azure AI Inference SDK 2 Azure.AI.Inference https://ai-foundry-<resource.services.ai.azure.com/models>
Gieterijagenten AZURE AI Projects SDK + Microsoft Agents AI Foundry Azure.AI.Projecten / Microsoft.Agents.AI.Foundry 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
Microsoft Foundry Antropic Anthropic Foundry SDK Anthropic.Foundry Resourcenaam vereist
Antropisch Antropische SDK Antropisch Er is geen URL of resourcenaam vereist
  1. Upgrading from Azure OpenAI to Foundry
  2. U wordt aangeraden de OpenAI SDK te gebruiken.
  3. Hoewel het raadzaam is om de OpenAI SDK te gebruiken voor toegang tot Foundry-modellen, ondersteunen 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
    .AsAIAgent(model: model, instructions: "You are good at telling jokes.", name: "Joker");

De AZURE AI Projects SDK gebruiken

Deze SDK kan worden gebruikt om verbinding te maken met Foundry-services. U moet de juiste eindpunt-URL voor het project opgeven bij het maken van de AIProjectClient. Zie de bovenstaande tabel voor de juiste URL die u wilt gebruiken.

AIAgent agent = new AIProjectClient(
    new Uri(serviceUrl),
    new DefaultAzureCredential())
     .AsAIAgent(
         model: deploymentName,
         instructions: "You are good at telling jokes.",
         name: "Joker");

De AZURE AI Projects SDK gebruiken met Foundry Agents

Deze SDK wordt gebruikt voor zowel Responses API gebaseerde agents als voor versioned Foundry Agents. Zie de bovenstaande tabel voor de juiste URL die u wilt gebruiken.

var aiProjectClient = new AIProjectClient(new Uri(serviceUrl), new DefaultAzureCredential());
AIAgent agent = aiProjectClient.AsAIAgent(
    model: deploymentName,
    instructions: "You are good at telling jokes.",
    name: "Joker");

De Foundry Antropic SDK gebruiken

De resource is de naam van het subdomein/voornaam die vóór .services.ai.azure.com in de eindpunt-URI wordt weergegeven.

Bijvoorbeeld: https://(resource name).services.ai.azure.com/anthropic/v1/chat/completions

var client = new AnthropicFoundryClient(new AnthropicFoundryApiKeyCredentials(apiKey, resource));
AIAgent agent = client.AsAIAgent(
    model: deploymentName,
    instructions: "Joker",
    name: "You are good at telling jokes.");

Anthropic SDK gebruiken

var client = new AnthropicClient() { ApiKey = apiKey };
AIAgent agent = client.AsAIAgent(
    model: deploymentName,
    instructions: "Joker",
    name: "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 het SupportsChatGetResponse protocol, 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.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential

agent = Agent(
    client=FoundryChatClient(
        credential=DefaultAzureCredential(),
        project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
        model=os.getenv("FOUNDRY_MODEL"),
    ),
    instructions="You are a helpful assistant",
)
response = await agent.run("Hello!")

U kunt ook de gemaksmethode op de chatclient gebruiken:

from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential

agent = FoundryChatClient(
    credential=DefaultAzureCredential(),
    project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
    model=os.getenv("FOUNDRY_MODEL"),
).as_agent(
    instructions="You are a helpful assistant"
)

Opmerking

In dit voorbeeld ziet u hoe u de FoundryChatClient gebruikt, maar hetzelfde patroon geldt voor een chatclient die wordt geïmplementeerd 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
Gieterij Agent Een agent die de agentservice als back-end gebruikt. Ja
Azure Voltooiing van openAI-chat Een agent die gebruikmaakt van de Azure OpenAI Chat Completion-service. Nee.
Azure OpenAI-antwoorden Een agent die gebruikmaakt van de service Azure OpenAI-antwoorden. 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
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 Copilot Een agent die gebruikmaakt van de GitHub Copilot SDK-back-end. 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.foundry import FoundryChatClient

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 = FoundryChatClient(
        credential=credential,
        project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
        model=os.getenv("FOUNDRY_MODEL"),
    ).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