Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Platforma Microsoft Agent Framework obsługuje trzy różne typy klientów openAI, z których każda jest przeznaczona dla innej powierzchni interfejsu API z różnymi możliwościami narzędzi:
| Typ klienta | API | Najlepsze dla |
|---|---|---|
| Uzupełnianie czatu | API Uzupełnień Czatowych | Proste agenty, szerokie wsparcie dla modeli |
| Odpowiedzi | API odpowiedzi | Agenci o pełnej funkcjonalności z hostowanymi narzędziami (interpretor kodu, wyszukiwanie plików, wyszukiwanie w Internecie, hostowana aplikacja MCP) |
| Asystenci | Interfejs API asystentów | Agenci zarządzani serwerem z interpreterem kodu i wyszukiwaniem plików |
Tip
W przypadku odpowiedników usługi Azure OpenAI (AzureOpenAIChatClient, AzureOpenAIResponsesClient, AzureOpenAIAssistantsClient) zobacz stronę dostawcy azure OpenAI. Obsługa narzędzi jest identyczna.
Wprowadzenie
Dodaj wymagane pakiety NuGet do projektu.
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
Klient uzupełniania rozmów czatowych
Klient Chat Completion zapewnia łatwe tworzenie agentów za pomocą API ChatCompletion.
using Microsoft.Agents.AI;
using OpenAI;
OpenAIClient client = new OpenAIClient("<your_api_key>");
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."));
Obsługiwane narzędzia: Narzędzia funkcji, wyszukiwanie w Internecie, lokalne narzędzia MCP.
Klient odpowiedzi
Klient Odpowiedzi zapewnia najbogatszą obsługę narzędzi, w tym interpreter kodu, wyszukiwanie plików, wyszukiwanie w Internecie i hostowaną aplikację MCP.
using Microsoft.Agents.AI;
using OpenAI;
OpenAIClient client = new OpenAIClient("<your_api_key>");
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."));
Obsługiwane narzędzia: Narzędzia funkcji, zatwierdzanie narzędzi, interpreter kodu, wyszukiwanie plików, wyszukiwanie w Internecie, hostowane MCP, lokalne narzędzia MCP.
Klient asystentów
Klient Asystentów tworzy agentów zarządzanych przez serwer z wbudowanym interpreterem kodu i wyszukiwaniem plików.
using Microsoft.Agents.AI;
using OpenAI;
OpenAIClient client = new OpenAIClient("<your_api_key>");
var assistantsClient = client.GetAssistantClient();
// Assistants are managed server-side
AIAgent agent = assistantsClient.AsAIAgent(
instructions: "You are a data analysis assistant.",
name: "DataHelper");
Console.WriteLine(await agent.RunAsync("Analyze trends in the uploaded data."));
Obsługiwane narzędzia: Narzędzia funkcji, interpreter kodu, wyszukiwanie plików, lokalne narzędzia MCP.
Tip
Zobacz przykłady dla platformy .NET , aby uzyskać pełne przykłady możliwych do uruchomienia.
Korzystanie z agenta
Wszystkie trzy typy klientów tworzą standard AIAgent obsługujący te same operacje agenta (przesyłanie strumieniowe, wątki, oprogramowanie pośredniczące).
Aby uzyskać więcej informacji, zobacz samouczki 'Pierwsze kroki'.
Instalacja
pip install agent-framework --pre
Konfiguracja
Każdy typ klienta używa różnych zmiennych środowiskowych:
Ukończenie czatu
OPENAI_API_KEY="your-openai-api-key"
OPENAI_CHAT_MODEL_ID="gpt-4o-mini"
Responses
OPENAI_API_KEY="your-openai-api-key"
OPENAI_RESPONSES_MODEL_ID="gpt-4o-mini"
Assistants
OPENAI_API_KEY="your-openai-api-key"
OPENAI_CHAT_MODEL_ID="gpt-4o-mini"
Klient uzupełniania czatu
OpenAIChatClient korzysta z interfejsu API uzupełniania czatów — najprostszej opcji z szerokim wsparciem modelu.
import asyncio
from agent_framework.openai import OpenAIChatClient
async def main():
agent = OpenAIChatClient().as_agent(
name="HelpfulAssistant",
instructions="You are a helpful assistant.",
)
result = await agent.run("Hello, how can you help me?")
print(result)
asyncio.run(main())
Obsługiwane narzędzia: Narzędzia funkcji, wyszukiwanie w Internecie, lokalne narzędzia MCP.
Wyszukiwanie w Internecie z uzupełnianiem czatu
async def web_search_example():
client = OpenAIChatClient()
web_search = client.get_web_search_tool()
agent = client.as_agent(
name="SearchBot",
instructions="You can search the web for current information.",
tools=web_search,
)
result = await agent.run("What are the latest developments in AI?")
print(result)
Klient odpowiedzi
OpenAIResponsesClient korzysta z API odpowiedzi — najbardziej rozbudowanej wersji z zestawem narzędzi hostowanych.
import asyncio
from agent_framework.openai import OpenAIResponsesClient
async def main():
agent = OpenAIResponsesClient().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())
Obsługiwane narzędzia: Narzędzia funkcji, zatwierdzanie narzędzi, interpreter kodu, wyszukiwanie plików, wyszukiwanie w Internecie, hostowane MCP, lokalne narzędzia MCP.
Hostowane narzędzia z klientem odpowiedzi
Klient Odpowiedzi udostępnia get_*_tool() metody dla każdego typu hostowanego narzędzia:
async def hosted_tools_example():
client = OpenAIResponsesClient()
# Each tool is created via a client method
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)
Klient asystentów
OpenAIAssistantProvider korzysta z interfejsu API Asystentów — agentów zarządzanych przez serwer z wbudowanym interpreterem kodu i wyszukiwaniem plików. Dostawca automatycznie zarządza cyklem życia asystenta.
import asyncio
from agent_framework.openai import OpenAIAssistantProvider
from openai import AsyncOpenAI
async def main():
client = AsyncOpenAI()
provider = OpenAIAssistantProvider(client)
agent = await provider.create_agent(
name="DataAnalyst",
model="gpt-4o-mini",
instructions="You analyze data using code execution.",
)
try:
result = await agent.run("Calculate the first 20 prime numbers.")
print(result)
finally:
await provider.delete_agent(agent.id)
asyncio.run(main())
Obsługiwane narzędzia: Narzędzia funkcji, interpreter kodu, wyszukiwanie plików, lokalne narzędzia MCP.
Typowe funkcje
Wszystkie trzy typy klientów obsługują następujące standardowe funkcje agenta:
Narzędzia funkcji
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 = OpenAIResponsesClient().as_agent(
instructions="You are a weather assistant.",
tools=get_weather,
)
result = await agent.run("What's the weather in Tokyo?")
print(result)
Konwersacje wieloetapowe
async def thread_example():
agent = OpenAIResponsesClient().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"
Streaming
async def streaming_example():
agent = OpenAIResponsesClient().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()
Korzystanie z agenta
Wszystkie typy klientów tworzą standard Agent , który obsługuje te same operacje.
Aby uzyskać więcej informacji, zobacz samouczki Wprowadzenia.