Freigeben über


Azure OpenAI-Agents

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

Nächste Schritte