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.
Microsoft Agent Framework unterstützt drei unterschiedliche Azure OpenAI-Clienttypen, die jeweils auf eine andere API-Oberfläche mit unterschiedlichen Toolfunktionen abzielen:
| Clienttyp | API | Am besten geeignet für |
|---|---|---|
| Chatabschluss | API für Chatabschlusse | Einfache Agents, umfassende Modellunterstützung |
| Antworten | Antwort-API- | Umfassende Agents mit gehosteten Tools (Codedolmetscher, Dateisuche, Websuche, gehostete MCP) |
| Assistenten | Assistenten-API | Server-verwaltete Agenten mit Code-Interpreter und Dateisuche |
Tipp
Informationen zu direkten OpenAI-Entsprechungen (OpenAIChatClient, OpenAIResponsesClient, OpenAIAssistantsClient) finden Sie auf der OpenAI-Anbieterseite. Die Toolunterstützung ist identisch.
Erste Schritte
Fügen Sie dem Projekt die erforderlichen NuGet-Pakete hinzu.
dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
Alle Azure OpenAI-Clienttypen beginnen mit dem Erstellen einer AzureOpenAIClient:
using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
AzureOpenAIClient client = new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new DefaultAzureCredential());
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.
Chat-Vervollständigungs-Client
Der Chat-Vervollständigungsclient bietet eine einfache Möglichkeit zum Erstellen von Agents mithilfe der ChatCompletion-API.
var chatClient = client.GetChatClient("gpt-4o-mini");
AIAgent agent = chatClient.AsAIAgent(
instructions: "You are good at telling jokes.",
name: "Joker");
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));
Unterstützte Tools: Funktionstools, Websuche, lokale MCP-Tools.
Antwort-Client
Der Antwortclient bietet die reichhaltigeste Toolunterstützung, einschließlich Codedolmetscher, Dateisuche, Websuche und gehosteter MCP.
var responsesClient = client.GetResponseClient("gpt-4o-mini");
AIAgent agent = responsesClient.AsAIAgent(
instructions: "You are a helpful coding assistant.",
name: "CodeHelper");
Console.WriteLine(await agent.RunAsync("Write a Python function to sort a list."));
Unterstützte Tools: Funktionstools, Toolgenehmigung, Codedolmetscher, Dateisuche, Websuche, gehostete MCP, lokale MCP-Tools.
Assistent-Klient
Der Assistent-Client erstellt serververwaltete Agents mit integriertem Codedolmetscher und Dateisuche.
var assistantsClient = client.GetAssistantClient();
AIAgent agent = assistantsClient.AsAIAgent(
instructions: "You are a data analysis assistant.",
name: "DataHelper");
Console.WriteLine(await agent.RunAsync("Analyze trends in the uploaded data."));
Unterstützte Tools: Funktionstools, Codedolmetscher, Dateisuche, lokale MCP-Tools.
Funktionstools
Sie können benutzerdefinierte Funktionstools für jeden Azure OpenAI-Agent bereitstellen:
using System.ComponentModel;
using Microsoft.Extensions.AI;
[Description("Get the weather for a given location.")]
static string GetWeather([Description("The location to get the weather for.")] string location)
=> $"The weather in {location} is cloudy with a high of 15°C.";
AIAgent agent = new AzureOpenAIClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: "You are a helpful assistant", tools: [AIFunctionFactory.Create(GetWeather)]);
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));
Streaming-Antworten
await foreach (var update in agent.RunStreamingAsync("Tell me a joke about a pirate."))
{
Console.Write(update);
}
Tipp
Vollständige Runnable-Beispiele finden Sie in den .NET-Beispielen .
Den Agent verwenden
Alle drei Clienttypen erzeugen einen Standard AIAgent , der dieselben Agentvorgänge unterstützt (Streaming, Threads, Middleware).
Weitere Informationen finden Sie in den Lernprogrammen "Erste Schritte".
Installation
pip install agent-framework --pre
Konfiguration
Jeder Clienttyp verwendet unterschiedliche Umgebungsvariablen:
Chatvervollständigung
AZURE_OPENAI_ENDPOINT="https://<myresource>.openai.azure.com"
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME="gpt-4o-mini"
Antworten
AZURE_OPENAI_ENDPOINT="https://<myresource>.openai.azure.com"
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME="gpt-4o-mini"
Assistants
AZURE_OPENAI_ENDPOINT="https://<myresource>.openai.azure.com"
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME="gpt-4o-mini"
Optional können Sie auch Folgendes festlegen:
AZURE_OPENAI_API_VERSION="2024-10-21" # Default API version
AZURE_OPENAI_API_KEY="<your-api-key>" # If not using Azure CLI authentication
Alle Clients verwenden Azure-Anmeldeinformationen für die Authentifizierung. Der einfachste Ansatz ist AzureCliCredential nach dem Ausführen von az login.
Chat-Vervollständigungs-Client
AzureOpenAIChatClient verwendet die Chat-Vervollständigungs-API – die einfachste Option mit umfassender Modellunterstützung.
import asyncio
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential
async def main():
agent = AzureOpenAIChatClient(credential=AzureCliCredential()).as_agent(
name="Joker",
instructions="You are good at telling jokes.",
)
result = await agent.run("Tell me a joke about a pirate.")
print(result)
asyncio.run(main())
Unterstützte Tools: Funktionstools, Websuche, lokale MCP-Tools.
Antworten-Client
AzureOpenAIResponsesClient verwendet die Antwort-API – die funktionsreichste Option mit gehosteten Tools.
import asyncio
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity import AzureCliCredential
async def main():
agent = AzureOpenAIResponsesClient(credential=AzureCliCredential()).as_agent(
name="FullFeaturedAgent",
instructions="You are a helpful assistant with access to many tools.",
)
result = await agent.run("Write and run a Python script that calculates fibonacci numbers.")
print(result)
asyncio.run(main())
Antwortclient mit Azure AI Foundry-Projektendpunkt
AzureOpenAIResponsesClient kann auch von einem Azure AI Foundry-Projektendpunkt erstellt werden:
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity import AzureCliCredential
client = AzureOpenAIResponsesClient(
project_endpoint="https://<your-project>.services.ai.azure.com/api/projects/<project-id>",
deployment_name="gpt-4o-mini",
credential=AzureCliCredential(),
)
agent = client.as_agent(
name="FoundryResponsesAgent",
instructions="You are a helpful assistant.",
)
Unterstützte Tools: Funktionstools, Toolgenehmigung, Codedolmetscher, Dateisuche, Websuche, gehostete MCP, lokale MCP-Tools.
Gehostete Tools mit Antwortclient
Der Antwortclient stellt Methoden für jeden gehosteten Tooltyp bereit get_*_tool() :
async def hosted_tools_example():
client = AzureOpenAIResponsesClient(credential=AzureCliCredential())
code_interpreter = client.get_code_interpreter_tool()
web_search = client.get_web_search_tool()
file_search = client.get_file_search_tool(vector_store_ids=["vs_abc123"])
mcp_tool = client.get_mcp_tool(
name="GitHub",
url="https://api.githubcopilot.com/mcp/",
approval_mode="never_require",
)
agent = client.as_agent(
name="PowerAgent",
instructions="You have access to code execution, web search, files, and GitHub.",
tools=[code_interpreter, web_search, file_search, mcp_tool],
)
result = await agent.run("Search the web for Python best practices, then write a summary.")
print(result)
Assistent-Client
AzureOpenAIAssistantsClient verwendet die Assistenten-API – serververwaltete Agents mit integriertem Codedolmetscher und Dateisuche. Beachten Sie den async with Kontext-Manager für die automatische Verwaltung des Assistentenlebenszyklus.
import asyncio
from agent_framework.azure import AzureOpenAIAssistantsClient
from azure.identity import AzureCliCredential
async def main():
async with AzureOpenAIAssistantsClient(credential=AzureCliCredential()).as_agent(
name="DataAnalyst",
instructions="You analyze data using code execution.",
) as agent:
result = await agent.run("Calculate the first 20 prime numbers.")
print(result)
asyncio.run(main())
Unterstützte Tools: Funktionstools, Codedolmetscher, Dateisuche, lokale MCP-Tools.
Allgemeine Features
Alle drei Clienttypen unterstützen diese Standard-Agent-Features:
Funktionstools
from agent_framework import tool
@tool
def get_weather(location: str) -> str:
"""Get the weather for a given location."""
return f"The weather in {location} is sunny, 25°C."
async def example():
agent = AzureOpenAIResponsesClient(credential=AzureCliCredential()).as_agent(
instructions="You are a weather assistant.",
tools=get_weather,
)
result = await agent.run("What's the weather in Tokyo?")
print(result)
Multi-Turn-Unterhaltungen
async def thread_example():
agent = AzureOpenAIResponsesClient(credential=AzureCliCredential()).as_agent(
instructions="You are a helpful assistant.",
)
session = await agent.create_session()
result1 = await agent.run("My name is Alice", session=session)
print(result1)
result2 = await agent.run("What's my name?", session=session)
print(result2) # Remembers "Alice"
Streamen
async def streaming_example():
agent = AzureOpenAIResponsesClient(credential=AzureCliCredential()).as_agent(
instructions="You are a creative storyteller.",
)
print("Agent: ", end="", flush=True)
async for chunk in agent.run("Tell me a short story about AI.", stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print()
Den Agent verwenden
Alle Clienttypen erzeugen einen Standard Agent , der dieselben Vorgänge unterstützt.
Weitere Informationen finden Sie in den Lernprogrammen "Erste Schritte".