Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
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:
- Funktionsaufruf.
- Multi-Turn-Unterhaltungen mit Verwaltung des lokalen Chatverlaufs oder der vom Dienst bereitgestellten Chatverlaufsverwaltung.
- Benutzerdefinierte bereitgestellte Tools (z. B. MCP, Codeausführung).
- 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 |
- Upgrade von Azure OpenAI auf Azure AI Foundry
- Wir empfehlen die Verwendung des OpenAI SDK.
- 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:
- Aufrufen der Funktion
- Multi-Turn-Unterhaltungen mit der Verwaltung des lokalen Chatverlaufs oder vom Dienst bereitgestellter Verwaltung des Chatverlaufs
- Von benutzerdefinierten Diensten bereitgestellte Tools (z. B. MCP, Code Execution)
- Strukturierte Ausgabe
- 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. |