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 das Erstellen von Agents, die den OpenAI-Assistentendienst verwenden.
Warnung
Die OpenAI-Assistenten-API ist veraltet und wird heruntergefahren. Weitere Informationen finden Sie in der OpenAI-Dokumentation.
Erste Schritte
Fügen Sie dem Projekt die erforderlichen NuGet-Pakete hinzu.
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
Erstellen eines OpenAI-Assistenten-Agents
Als ersten Schritt müssen Sie einen Client erstellen, um eine Verbindung mit dem OpenAI-Dienst herzustellen.
using System;
using Microsoft.Agents.AI;
using OpenAI;
OpenAIClient client = new OpenAIClient("<your_api_key>");
OpenAI unterstützt mehrere Dienste, die alle Modellanruffunktionen bereitstellen. In diesem Beispiel wird der Assistent-Client verwendet, um einen Assistenten-basierten Agent zu erstellen.
#pragma warning disable OPENAI001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
var assistantClient = client.GetAssistantClient();
#pragma warning restore OPENAI001
Um den OpenAI Assistants-Dienst zu verwenden, benötigen Sie eine Assistentenressource im Dienst. Dazu können Sie entweder das OpenAI SDK oder microsoft Agent Framework-Hilfsprogramme verwenden.
Verwenden des OpenAI SDK
Erstellen Sie einen Assistenten und rufen Sie ihn als AIAgent mit dem Client ab.
// Create a server-side assistant
var createResult = await assistantClient.CreateAssistantAsync(
"gpt-4o-mini",
new() { Name = "Joker", Instructions = "You are good at telling jokes." });
// Retrieve the assistant as an AIAgent
AIAgent agent1 = await assistantClient.GetAIAgentAsync(createResult.Value.Id);
// Invoke the agent and output the text result.
Console.WriteLine(await agent1.RunAsync("Tell me a joke about a pirate."));
Verwenden von Agent Framework-Hilfsprogramme
Sie können auch ein AIAgent in einem Schritt erstellen und zurückgeben.
AIAgent agent2 = await assistantClient.CreateAIAgentAsync(
model: "gpt-4o-mini",
name: "Joker",
instructions: "You are good at telling jokes.");
Wiederverwendung von OpenAI-Assistenten
Sie können vorhandene OpenAI-Assistenten wiederverwenden, indem Sie sie mithilfe ihrer IDs abrufen.
AIAgent agent3 = await assistantClient.GetAIAgentAsync("<agent-id>");
Den Agent verwenden
Der Agent ist ein Standard AIAgent und unterstützt alle Standard-Agent-Vorgänge.
Weitere Informationen zum Ausführen und Interagieren mit Agenten finden Sie in den Agenten-Einführungstutorials.
Voraussetzungen
Installieren Sie das Microsoft Agent Framework-Paket.
pip install agent-framework --pre
Konfiguration
Umgebungsvariablen
Richten Sie die erforderlichen Umgebungsvariablen für die OpenAI-Authentifizierung ein:
# Required for OpenAI API access
OPENAI_API_KEY="your-openai-api-key"
OPENAI_CHAT_MODEL_ID="gpt-4o-mini" # or your preferred model
Alternativ können Sie eine .env Datei im Projektstamm verwenden:
OPENAI_API_KEY=your-openai-api-key
OPENAI_CHAT_MODEL_ID=gpt-4o-mini
Erste Schritte
Importieren Sie die erforderlichen Klassen aus dem Agent-Framework:
import asyncio
from agent_framework import ChatAgent
from agent_framework.openai import OpenAIAssistantsClient
Erstellen eines OpenAI-Assistenten-Agents
Grundlegende Agent-Erstellung
Die einfachste Möglichkeit, einen Agenten zu erstellen, ist die Verwendung von OpenAIAssistantsClient, das automatisch Assistenten erstellt und verwaltet.
async def basic_example():
# Create an agent with automatic assistant creation and cleanup
async with OpenAIAssistantsClient().create_agent(
instructions="You are a helpful assistant.",
name="MyAssistant"
) as agent:
result = await agent.run("Hello, how are you?")
print(result.text)
Verwendung der expliziten Konfiguration
Sie können eine explizite Konfiguration bereitstellen, anstatt sich auf Umgebungsvariablen zu verlassen:
async def explicit_config_example():
async with OpenAIAssistantsClient(
ai_model_id="gpt-4o-mini",
api_key="your-api-key-here",
).create_agent(
instructions="You are a helpful assistant.",
) as agent:
result = await agent.run("What's the weather like?")
print(result.text)
Verwenden eines vorhandenen Assistenten
Sie können vorhandene OpenAI-Assistenten wiederverwenden, indem Sie ihre IDs bereitstellen:
from openai import AsyncOpenAI
async def existing_assistant_example():
# Create OpenAI client directly
client = AsyncOpenAI()
# Create or get an existing assistant
assistant = await client.beta.assistants.create(
model="gpt-4o-mini",
name="WeatherAssistant",
instructions="You are a weather forecasting assistant."
)
try:
# Use the existing assistant with Agent Framework
async with ChatAgent(
chat_client=OpenAIAssistantsClient(
async_client=client,
assistant_id=assistant.id
),
instructions="You are a helpful weather agent.",
) as agent:
result = await agent.run("What's the weather like in Seattle?")
print(result.text)
finally:
# Clean up the assistant
await client.beta.assistants.delete(assistant.id)
Agentfeatures
Funktionstools
Sie können Ihren Assistenten mit benutzerdefinierten Funktionen ausstatten:
from typing import Annotated
from pydantic import Field
def get_weather(
location: Annotated[str, Field(description="The location to get the weather for.")]
) -> str:
"""Get the weather for a given location."""
return f"The weather in {location} is sunny with 25°C."
async def tools_example():
async with ChatAgent(
chat_client=OpenAIAssistantsClient(),
instructions="You are a helpful weather assistant.",
tools=get_weather, # Provide tools to the agent
) as agent:
result = await agent.run("What's the weather like in Tokyo?")
print(result.text)
Codedolmetscher
Aktivieren Sie Ihren Assistenten zum Ausführen von Python-Code:
from agent_framework import HostedCodeInterpreterTool
async def code_interpreter_example():
async with ChatAgent(
chat_client=OpenAIAssistantsClient(),
instructions="You are a helpful assistant that can write and execute Python code.",
tools=HostedCodeInterpreterTool(),
) as agent:
result = await agent.run("Calculate the factorial of 100 using Python code.")
print(result.text)
Dateisuche
Ermöglichen Sie Ihrem Assistenten das Durchsuchen hochgeladener Dokumente:
from agent_framework import HostedFileSearchTool, HostedVectorStoreContent
async def create_vector_store(client: OpenAIAssistantsClient) -> tuple[str, HostedVectorStoreContent]:
"""Create a vector store with sample documents."""
file = await client.client.files.create(
file=("todays_weather.txt", b"The weather today is sunny with a high of 75F."),
purpose="user_data"
)
vector_store = await client.client.vector_stores.create(
name="knowledge_base",
expires_after={"anchor": "last_active_at", "days": 1},
)
result = await client.client.vector_stores.files.create_and_poll(
vector_store_id=vector_store.id,
file_id=file.id
)
if result.last_error is not None:
raise Exception(f"Vector store file processing failed with status: {result.last_error.message}")
return file.id, HostedVectorStoreContent(vector_store_id=vector_store.id)
async def delete_vector_store(client: OpenAIAssistantsClient, file_id: str, vector_store_id: str) -> None:
"""Delete the vector store after using it."""
await client.client.vector_stores.delete(vector_store_id=vector_store_id)
await client.client.files.delete(file_id=file_id)
async def file_search_example():
print("=== OpenAI Assistants Client Agent with File Search Example ===\n")
client = OpenAIAssistantsClient()
async with ChatAgent(
chat_client=client,
instructions="You are a helpful assistant that searches files in a knowledge base.",
tools=HostedFileSearchTool(),
) as agent:
query = "What is the weather today? Do a file search to find the answer."
file_id, vector_store = await create_vector_store(client)
print(f"User: {query}")
print("Agent: ", end="", flush=True)
async for chunk in agent.run_stream(
query, tool_resources={"file_search": {"vector_store_ids": [vector_store.vector_store_id]}}
):
if chunk.text:
print(chunk.text, end="", flush=True)
print() # New line after streaming
await delete_vector_store(client, file_id, vector_store.vector_store_id)
Threadverwaltung
Den Gesprächskontext über mehrere Interaktionen hinweg beibehalten.
async def thread_example():
async with OpenAIAssistantsClient().create_agent(
name="Assistant",
instructions="You are a helpful assistant.",
) as agent:
# Create a persistent thread for conversation context
thread = agent.get_new_thread()
# First interaction
first_query = "My name is Alice"
print(f"User: {first_query}")
first_result = await agent.run(first_query, thread=thread)
print(f"Agent: {first_result.text}")
# Second interaction - agent remembers the context
second_query = "What's my name?"
print(f"User: {second_query}")
second_result = await agent.run(second_query, thread=thread)
print(f"Agent: {second_result.text}") # Should remember "Alice"
Arbeiten mit vorhandenen Assistenten
Sie können vorhandene OpenAI-Assistenten wiederverwenden, indem Sie ihre IDs bereitstellen:
from openai import AsyncOpenAI
async def existing_assistant_example():
# Create OpenAI client directly
client = AsyncOpenAI()
# Create or get an existing assistant
assistant = await client.beta.assistants.create(
model="gpt-4o-mini",
name="WeatherAssistant",
instructions="You are a weather forecasting assistant."
)
try:
# Use the existing assistant with Agent Framework
async with OpenAIAssistantsClient(
async_client=client,
assistant_id=assistant.id
).create_agent() as agent:
result = await agent.run("What's the weather like in Seattle?")
print(result.text)
finally:
# Clean up the assistant
await client.beta.assistants.delete(assistant.id)
Streaming-Antworten
Erhalten Sie Antworten, wenn sie generiert werden, um eine bessere Benutzererfahrung zu erzielen:
async def streaming_example():
async with OpenAIAssistantsClient().create_agent(
instructions="You are a helpful assistant.",
) as agent:
print("Assistant: ", end="", flush=True)
async for chunk in agent.run_stream("Tell me a story about AI."):
if chunk.text:
print(chunk.text, end="", flush=True)
print() # New line after streaming is complete
Den Agent verwenden
Der Agent ist ein Standard BaseAgent und unterstützt alle Standard-Agent-Vorgänge.
Weitere Informationen zum Ausführen und Interagieren mit Agenten finden Sie in den Agenten-Einführungstutorials.