Поделиться через


Агенты OpenAI

Microsoft Agent Framework поддерживает три разных типа клиентов OpenAI, каждая из которых нацелена на другую область API с разными возможностями инструментов:

Тип клиента API Лучше всего для
Завершение чата API завершения чата Простые агенты, широкая поддержка модели
Ответы API ответов Полнофункциональные агенты c размещенными инструментами (например, интерпретатор кода, поиск файлов, веб-поиск, размещенный MCP)
Помощников API помощников Управляемые сервером агенты с интерпретатором кода и поиском файлов

Подсказка

Сведения об эквивалентах Azure OpenAI (, , ) см. на странице поставщика Azure OpenAI . Поддержка инструментов идентична.

Начало работы

Добавьте необходимые пакеты NuGet в проект.

dotnet add package Microsoft.Agents.AI.OpenAI --prerelease

Клиент завершения чата

Клиент завершения чата предоставляет простой способ создания агентов с помощью 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."));

Поддерживаемые средства: Инструменты функций, веб-поиск, локальные инструменты MCP.

Клиент для ответов

Клиент Responses предоставляет самую полную поддержку инструментов, включая интерпретатор кода, поиск файлов, веб-поиск и хостинг 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."));

Поддерживаемые средства: Функциональные средства, утверждение средств, интерпретатор кода, поиск файлов, поиск в Интернете, облачные средства MCP, локальные средства MCP.

Клиент ассистентов

Клиент Assistants создает управляемые сервером агенты со встроенным интерпретатором кода и поиском файлов.

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

Поддерживаемые средства: Инструменты функций, интерпретатор кода, поиск файлов, локальные средства MCP.

Подсказка

Полные примеры запуска см. в примерах .NET .

Использование агента

Все три типа клиентов создают стандартный AIAgent, поддерживающий одни и те же операции агента (стриминг, потоки, средства промежуточного слоя).

Дополнительные сведения см. в руководствах по началу работы.

Installation

pip install agent-framework --pre

Конфигурация

Каждый тип клиента использует разные переменные среды:

Завершение чата

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"

Клиент завершения чата

OpenAIChatClient использует API завершения чата — самый простой вариант с широкой поддержкой модели.

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())

Поддерживаемые средства: Инструменты функций, веб-поиск, локальные инструменты MCP.

Поиск в Интернете с завершением чата

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)

Клиент для ответов

OpenAIResponsesClient использует Responses API — самую функционально насыщенную опцию с встроенными инструментами.

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())

Поддерживаемые средства: Функциональные средства, подтверждение инструментов, интерпретатор кода, поиск файлов, поиск в Интернете, хостинговые MCP, локальные MCP-инструменты.

Облачные инструменты с клиентом ответов

Клиент Responses предоставляет get_*_tool() методы для каждого поддерживаемого типа инструмента.

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)

Клиент ассистентов

OpenAIAssistantProvider использует API Помощников — управляемые сервером агенты с встроенным интерпретатором кода и поиском файлов. Поставщик автоматически управляет жизненным циклом помощника.

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())

Поддерживаемые средства: Инструменты функций, интерпретатор кода, поиск файлов, локальные средства MCP.

Общие функции

Все три типа клиентов поддерживают следующие стандартные функции агента:

Инструменты функций

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)

Беседы с несколькими поворотами

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"

Стриминг

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()

Использование агента

Все типы клиентов создают стандарт Agent , поддерживающий одни и те же операции.

Дополнительные сведения см. в руководствах по началу работы.

Дальнейшие шаги