Freigeben über


Agenttypen des Microsoft Agent Frameworks

Das Microsoft Agent Framework bietet Unterstützung für verschiedene Arten von Agents, um unterschiedliche Anwendungsfälle und Anforderungen zu erfüllen.

Alle Agents werden von einer gemeinsamen Basisklasse abgeleitet, AIAgentdie eine konsistente Schnittstelle für alle Agenttypen bereitstellt. Dies ermöglicht die Erstellung allgemeiner, agentenagnostischer Funktionen höherer Ebene, wie Multi-Agent-Orchestrierungen.

Alle Agents werden von einer gemeinsamen Basisklasse abgeleitet, Agentdie eine konsistente Schnittstelle für alle Agenttypen bereitstellt. Dies ermöglicht die Erstellung allgemeiner, agentenagnostischer Funktionen höherer Ebene, wie Multi-Agent-Orchestrierungen.

Standardmäßiges Agent-Laufzeitausführungsmodell

Alle Agents im Microsoft Agent Framework werden mit einem strukturierten Laufzeitmodell ausgeführt. Dieses Modell koordiniert die Benutzerinteraktion, Modellinferenz und Toolausführung in einer deterministischen Schleife.

KI-Agent-Diagramm

Von Bedeutung

Wenn Sie Microsoft Agent Framework verwenden, um Anwendungen zu erstellen, die mit Servern oder Agents von Drittanbietern arbeiten, tun Sie dies auf eigene Gefahr. Es wird empfohlen, alle Daten zu überprüfen, die mit Servern oder Agenten von Drittanbietern geteilt werden und sich der Praktiken von Drittanbietern zur Aufbewahrung und zum Speicherort ihrer Daten bewusst zu sein. Es liegt in Ihrer Verantwortung, zu verwalten, ob Ihre Daten außerhalb der Azure-Compliance- und geografischen Grenzen Ihrer Organisation und alle damit verbundenen Auswirkungen fließen.

Einfache Agenten basierend auf Inferenzdiensten

Das Agent-Framework erleichtert das Erstellen einfacher Agents basierend auf vielen verschiedenen Ableitungsdiensten. Jeder Rückschlussdienst, der eine Microsoft.Extensions.AI.IChatClient Implementierung bereitstellt, kann zum Erstellen dieser Agents verwendet werden. Dies Microsoft.Agents.AI.ChatClientAgent ist die Agentklasse, die verwendet wird, um einen Agent für jede IChatClient Implementierung bereitzustellen.

Diese Agents unterstützen eine Vielzahl von Funktionen standardmäßig:

  1. Funktionsaufruf.
  2. Multi-Turn-Unterhaltungen mit Verwaltung des lokalen Chatverlaufs oder der vom Dienst bereitgestellten Chatverlaufsverwaltung.
  3. Benutzerdefinierte bereitgestellte Tools (z. B. MCP, Codeausführung).
  4. Strukturierte Ausgabe.

Um einen dieser Agenten zu erstellen, konstruieren Sie einfach ein ChatClientAgent, indem Sie dazu die IChatClient-Implementierung Ihrer Wahl verwenden.

using Microsoft.Agents.AI;

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

Um die Erstellung dieser Agents noch einfacher zu machen, stellt Agent Framework Hilfsprogramme für viele beliebte Dienste bereit. Weitere Informationen finden Sie in der Dokumentation für jeden Dienst.

Zugrunde liegender Rückschlussdienst Description Die Speicherung des Dienst-Chatverlaufs wird unterstützt InMemory/Benutzerdefinierter Chatverlaufsspeicher unterstützt
Azure AI Foundry Agent Ein Agent, der den Azure AI Foundry Agents Service als Back-End verwendet. Ja Nein
Azure AI Foundry Models ChatCompletion Ein Agent, der eines der Im Azure AI Foundry Service bereitgestellten Modelle als Back-End über ChatCompletion verwendet. Nein Ja
Antworten von Azure-AI-Foundry-Modellen Ein Agent, der eines der im Azure AI Foundry Service bereitgestellten Modelle als Back-End über Antworten verwendet. Ja Ja
Azure OpenAI ChatCompletion Ein Agent, der den Azure OpenAI ChatCompletion-Dienst verwendet. Nein Ja
Azure OpenAI-Antworten Ein Agent, der den Azure OpenAI Responses-Dienst verwendet. Ja Ja
OpenAI ChatCompletion Ein Agent, der den OpenAI-ChatCompletion-Dienst verwendet. Nein Ja
OpenAI-Antworten Ein Agent, der den OpenAI-Antwortdienst verwendet. Ja Ja
OpenAI-Assistenten Ein Agent, der den OpenAI Assistants-Dienst verwendet. Ja Nein
Alle anderen IChatClient Sie können auch eine beliebige andere Microsoft.Extensions.AI.IChatClient Implementierung verwenden, um einen Agent zu erstellen. Variiert Variiert

Komplexe benutzerdefinierte Agenten

Es ist auch möglich, benutzerdefinierte, vollumfängliche Agenten zu erstellen, die nicht lediglich eine Hülle um ein IChatClient sind. Das Agentframework stellt den AIAgent Basistyp bereit. Dieser Basistyp ist die Kernabstraktion für alle Agenten. Wenn er abgeleitet wird, ermöglicht er die vollständige Kontrolle über das Verhalten und die Fähigkeiten des Agenten.

Weitere Informationen finden Sie in der Dokumentation für benutzerdefinierte Agents.

Proxys für Remote-Agents

Die Agent Framework bietet von Haus aus AIAgent Implementierungen für häufig verwendete servicegehostete Agentenprotokolle, wie z.B. A2A. Auf diese Weise können Sie problemlos eine Verbindung mit Remote-Agents aus Ihrer Anwendung herstellen und verwenden.

Weitere Informationen finden Sie in der Dokumentation für jeden Agenttyp:

Protokoll Description
A2A Ein Agent, der als Proxy für einen Remote-Agent über das A2A-Protokoll dient.

Referenz zu Azure- und OpenAI SDK-Optionen

Bei Verwendung von Azure AI Foundry-, Azure OpenAI- oder OpenAI-Diensten stehen Ihnen verschiedene SDK-Optionen zur Verbindung mit diesen Diensten zur Verfügung. In einigen Fällen ist es möglich, mehrere SDKs zu verwenden, um eine Verbindung mit demselben Dienst herzustellen oder dasselbe SDK zum Herstellen einer Verbindung mit verschiedenen Diensten zu verwenden. Hier ist eine Liste der verschiedenen Optionen, die Sie nutzen sollten, wenn Sie mit der entsprechenden URL eine Verbindung herstellen. Stellen Sie sicher, dass Sie <resource> und <project> durch Ihre tatsächlichen Ressourcen- und Projektnamen ersetzen.

KI-Dienst SDK Nuget URL
Azure AI Foundry-Modelle Azure OpenAI SDK 2 Azure.AI.OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Azure AI Foundry-Modelle OpenAI SDK 3 OpenAI https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Azure AI Foundry-Modelle 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 (Softwareentwicklungs-Kit für Azure AI Persistent Agents) 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 Keine URL erforderlich
  1. Upgrade von Azure OpenAI auf Azure AI Foundry
  2. Wir empfehlen die Verwendung des OpenAI SDK.
  3. Obwohl wir empfehlen, das OpenAI SDK für den Zugriff auf Azure AI Foundry-Modelle zu verwenden, unterstützen Azure AI Foundry Models Modelle von vielen verschiedenen Anbietern, nicht nur OpenAI. Alle diese Modelle werden über das OpenAI SDK unterstützt.

Verwenden des OpenAI SDK

Wie in der obigen Tabelle gezeigt, kann das OpenAI SDK verwendet werden, um eine Verbindung mit mehreren Diensten herzustellen. Je nach Dienst, mit dem Sie eine Verbindung herstellen, müssen Sie möglicherweise beim Erstellen einer OpenAIClient eine benutzerdefinierte URL festlegen. Sie können je nach Dienst auch unterschiedliche Authentifizierungsmechanismen verwenden.

Wenn eine benutzerdefinierte URL erforderlich ist (siehe tabelle oben), können Sie sie über openAIClientOptions festlegen.

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

Es ist möglich, beim Erstellen des Clients einen API-Schlüssel zu verwenden.

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

Wenn Sie einen Azure-Dienst verwenden, ist es auch möglich, Azure-Anmeldeinformationen anstelle eines API-Schlüssels zu verwenden.

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

Warnung

DefaultAzureCredential ist praktisch für die Entwicklung, erfordert aber sorgfältige Überlegungen in der Produktion. Berücksichtigen Sie in der Produktion die Verwendung bestimmter Anmeldeinformationen (z. B. ManagedIdentityCredential), um Latenzprobleme, unbeabsichtigte Abfragen von Anmeldeinformationen und potenzielle Sicherheitsrisiken durch Ausweichmechanismen zu vermeiden.

Nachdem Sie den OpenAIClient erstellt haben, können Sie einen Unterclient für den spezifischen Dienst abrufen, den Sie verwenden möchten, und dann eine AIAgent daraus erstellen.

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

Verwenden des Azure OpenAI SDK

Dieses SDK kann verwendet werden, um eine Verbindung mit Azure OpenAI- und Azure AI Foundry Models-Diensten herzustellen. In beiden Fällen müssen Sie beim Erstellen der AzureOpenAIClient die richtige Service-URL angeben. In der obigen Tabelle finden Sie die richtige ZU verwendende URL.

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

Verwenden des Azure AI Persistent Agents SDK

Dieses SDK wird nur mit dem Azure AI Foundry Agents-Dienst unterstützt. In der obigen Tabelle finden Sie die richtige ZU verwendende URL.

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

Einfache Agenten basierend auf Inferenzdiensten

Das Agent-Framework erleichtert das Erstellen einfacher Agents basierend auf vielen verschiedenen Ableitungsdiensten. Jeder Rückschlussdienst, der eine Chatclientimplementierung bereitstellt, kann zum Erstellen dieser Agents verwendet werden. Dies kann mit dem SupportsChatGetResponse erreicht werden, der einen Standard für die Methoden definiert, die ein Client unterstützen muss, damit sie mit der Standardklasse Agent verwendet werden können.

Diese Agents unterstützen eine Vielzahl von Funktionen standardmäßig:

  1. Aufrufen der Funktion
  2. Multi-Turn-Unterhaltungen mit der Verwaltung des lokalen Chatverlaufs oder vom Dienst bereitgestellter Verwaltung des Chatverlaufs
  3. Von benutzerdefinierten Diensten bereitgestellte Tools (z. B. MCP, Code Execution)
  4. Strukturierte Ausgabe
  5. Antworten bei Streaming-Diensten

Um einen dieser Agents zu erstellen, konstruieren Sie einfach einen Agent, indem Sie eine Chat-Client-Implementierung Ihrer Wahl verwenden.

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

Alternativ können Sie die Komfortmethode auf dem Chatclient verwenden:

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

Hinweis

Dieses Beispiel zeigt die Verwendung des AzureOpenAIResponsesClient. Dasselbe Muster gilt jedoch für jeden Chat-Client, der SupportsChatGetResponse implementiert. Siehe Anbieterübersicht für weitere Details zu anderen Clients.

Ausführliche Beispiele finden Sie in den unten aufgeführten Abschnitten zu agentspezifischen Dokumentationen.

Unterstützte Chatanbieter

Zugrunde liegender Inferenzdienst Description Speicherung des Service-Chat-Verlaufs unterstützt
Azure AI Foundry Agent Ein Agent, der den Azure AI Agents Service als Back-End verwendet. Ja
Abschluss des Azure OpenAI-Chats Ein Agent, der den Azure OpenAI-Chat-Abschlussdienst verwendet. Nein
Azure OpenAI-Antworten Ein Agent, der den Azure OpenAI Responses-Dienst verwendet. Ja
Azure OpenAI-Assistenten Ein Agent, der den Azure OpenAI Assistants-Dienst verwendet. Ja
Abschluss des OpenAI-Chats Ein Agent, der den OpenAI-Chatabschlussdienst verwendet. Nein
OpenAI-Antworten Ein Agent, der den OpenAI-Antwortdienst verwendet. Ja
OpenAI-Assistenten Ein Agent, der den OpenAI Assistants-Dienst verwendet. Ja
Anthropic Claude Ein Agent, der Anthropic Claude Modelle verwendet. Nein
Amazonas-Grundgestein Ein Agent, der Amazon Bedrock-Modelle über den Agent Framework Bedrock-Chat-Client verwendet. Nein
GitHub Copilot Ein Agent, der das GitHub Copilot SDK-Back-End verwendet. Nein
Ollama (OpenAI-kompatibel) Ein Agent, der lokal gehostete Ollama-Modelle über OpenAI-kompatible APIs verwendet. Nein
Ein anderer ChatClient Sie können auch eine beliebige andere Implementierung SupportsChatGetResponse verwenden, um einen Agent zu erstellen. Variiert

Benutzerdefinierte Chatverlaufsspeicherung wird unterstützt, sofern der sitzungsbasierte Gesprächsstatus unterstützt wird.

Streaming-Antworten

Agenten unterstützen sowohl normale als auch Streaming-Antworten.

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

Beispiele für Streaming finden Sie unter:

Weitere Aufrufmuster finden Sie unter Agenten ausführen.

Funktionstools

Sie können den Agenten Tools für erweiterte Funktionen bereitstellen.

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

Tools und Toolmuster finden Sie in der Übersicht über Tools.

Benutzerdefinierte Agents

Vollständige benutzerdefinierte Implementierungen (z. B. deterministische Agents oder API-gesicherte Agents) finden Sie unter Custom Agents. Diese Seite umfasst die Implementierung SupportsAgentRun oder Erweiterung BaseAgent, einschließlich Stream-Aktualisierungen mit AgentResponseUpdate.

Andere Agenttypen

Das Agent-Framework umfasst auch protokollgestützte Agents, z. B.:

Agenttyp Description
A2A Ein Proxy-Agent, der eine Verbindung zu und den Aufruf von remote A2A-kompatiblen Agenten herstellt.

Nächste Schritte