Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Microsoft Agent Framework admite tres tipos de cliente openAI distintos, cada uno de los cuales tiene como destino una superficie de API diferente con distintas funcionalidades de herramientas:
| Tipo de cliente: | API | Mejor para |
|---|---|---|
| Finalización del chat | API de finalizaciones de chat | Agentes simples, compatibilidad amplia con modelos |
| Respuestas | API de respuestas | Agentes completos con herramientas hospedadas (intérprete de código, búsqueda de archivos, búsqueda web, MCP hospedado) |
| Asistentes | API de asistentes | Agentes administrados por el servidor con el intérprete de código y la búsqueda de archivos |
Sugerencia
Para los equivalentes de Azure OpenAI (AzureOpenAIChatClient, AzureOpenAIResponsesClient, AzureOpenAIAssistantsClient), consulte la página del proveedor de Azure OpenAI. El soporte de herramientas es idéntico.
Introducción
Agregue los paquetes NuGet necesarios al proyecto.
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
Cliente de finalización de chat
El cliente de finalización de chat proporciona una manera sencilla de crear agentes mediante chatCompletion API.
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."));
Herramientas admitidas: Herramientas de funciones, búsqueda web, herramientas de MCP locales.
Cliente de respuestas
El cliente de respuestas proporciona la compatibilidad con herramientas más ricas, como el intérprete de código, la búsqueda de archivos, la búsqueda web y el MCP hospedado.
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."));
Herramientas admitidas: Herramientas de funciones, aprobación de herramientas, intérprete de código, búsqueda de archivos, búsqueda web, MCP hospedado, herramientas de MCP locales.
Cliente de asistentes
El cliente assistants crea agentes administrados por el servidor con el intérprete de código integrado y la búsqueda de archivos.
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."));
Herramientas admitidas: Herramientas de funciones, intérprete de código, búsqueda de archivos, herramientas de MCP locales.
Sugerencia
Consulte los ejemplos de .NET para obtener ejemplos completos de ejecución.
Uso del agente
Los tres tipos de cliente producen un estándar AIAgent que admite las mismas operaciones del agente (streaming, subprocesos, middleware).
Para obtener más información, consulte los tutoriales de introducción.
Installation
pip install agent-framework --pre
Configuración
Cada tipo de cliente usa diferentes variables de entorno:
Finalización del chat
OPENAI_API_KEY="your-openai-api-key"
OPENAI_CHAT_MODEL_ID="gpt-4o-mini"
Respuestas
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"
Cliente de finalización de chat
OpenAIChatClient usa la API de finalizaciones de chat, la opción más sencilla con amplia compatibilidad con los modelos.
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())
Herramientas admitidas: Herramientas de funciones, búsqueda web, herramientas de MCP locales.
Búsqueda web con finalización de chat
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)
Cliente de respuestas
OpenAIResponsesClient utiliza la API de Respuestas, la opción más completa con herramientas alojadas.
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())
Herramientas admitidas: Herramientas de funciones, aprobación de herramientas, intérprete de código, búsqueda de archivos, búsqueda web, MCP hospedado, herramientas de MCP locales.
Herramientas hospedadas con el cliente de respuestas
El cliente de respuestas proporciona get_*_tool() métodos para cada tipo de herramienta hospedada:
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)
Cliente de asistentes
OpenAIAssistantProvider usa la API Assistants: agentes administrados por el servidor con intérprete de código integrado y búsqueda de archivos. El proveedor administra automáticamente el ciclo de vida del asistente.
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())
Herramientas admitidas: Herramientas de funciones, intérprete de código, búsqueda de archivos, herramientas de MCP locales.
Características comunes
Los tres tipos de cliente admiten estas características de agente estándar:
Herramientas de funciones
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)
Conversaciones multiturno
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"
Transmisión en línea
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()
Uso del agente
Todos los tipos de cliente generan un estándar Agent que admite las mismas operaciones.
Para obtener más información, consulte los tutoriales de introducción.