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


Агенты OpenAI для завершения чатов

Microsoft Agent Framework поддерживает создание агентов, использующих службу OpenAI ChatCompletion .

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

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

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

Создание агента OpenAI ChatCompletion

Сначала необходимо создать клиент для подключения к службе OpenAI.

using System;
using Microsoft.Agents.AI;
using OpenAI;

OpenAIClient client = new OpenAIClient("<your_api_key>");

OpenAI поддерживает несколько служб, которые предоставляют возможности вызова моделей. Выберите службу ChatCompletion, чтобы создать агент на основе ChatCompletion.

var chatCompletionClient = client.GetChatClient("gpt-4o-mini");

Наконец, создайте агент с помощью метода расширения AsAIAgent на ChatCompletionClient.

AIAgent agent = chatCompletionClient.AsAIAgent(
    instructions: "You are good at telling jokes.",
    name: "Joker");

// Invoke the agent and output the text result.
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));

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

Агент является стандартным AIAgent и поддерживает все стандартные AIAgent операции.

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

Предпосылки

Установите пакет Microsoft Agent Framework.

pip install agent-framework-core --pre

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

Переменные среды

Настройте необходимые переменные среды для проверки подлинности OpenAI:

# Required for OpenAI API access
OPENAI_API_KEY="your-openai-api-key"
OPENAI_CHAT_MODEL_ID="gpt-4o-mini"  # or your preferred model

Кроме того, вы можете использовать файл в корневом .env каталоге проекта:

OPENAI_API_KEY=your-openai-api-key
OPENAI_CHAT_MODEL_ID=gpt-4o-mini

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

Импортируйте необходимые классы из Agent Framework:

import asyncio
from agent_framework import ChatAgent
from agent_framework.openai import OpenAIChatClient

Создание агента OpenAI ChatCompletion

Базовое создание агента

Самый простой способ создания агента завершения чата:

async def basic_example():
    # Create an agent using OpenAI ChatCompletion
    agent = OpenAIChatClient().as_agent(
        name="HelpfulAssistant",
        instructions="You are a helpful assistant.",
    )

    result = await agent.run("Hello, how can you help me?")
    print(result.text)

Использование явной конфигурации

Можно предоставить явную конфигурацию вместо того, чтобы полагаться на переменные среды:

async def explicit_config_example():
    agent = OpenAIChatClient(
        ai_model_id="gpt-4o-mini",
        api_key="your-api-key-here",
    ).as_agent(
        instructions="You are a helpful assistant.",
    )

    result = await agent.run("What can you do?")
    print(result.text)

Компоненты агента

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

Оснастите вашего агента настраиваемыми функциями:

from typing import Annotated
from pydantic import Field

def get_weather(
    location: Annotated[str, Field(description="The location to get weather for")]
) -> str:
    """Get the weather for a given location."""
    # Your weather API implementation here
    return f"The weather in {location} is sunny with 25°C."

async def tools_example():
    agent = ChatAgent(
        chat_client=OpenAIChatClient(),
        instructions="You are a helpful weather assistant.",
        tools=get_weather,  # Add tools to the agent
    )

    result = await agent.run("What's the weather like in Tokyo?")
    print(result.text)

Включите возможности поиска в интернете в режиме реального времени:

from agent_framework import HostedWebSearchTool

async def web_search_example():
    agent = OpenAIChatClient(model_id="gpt-4o-search-preview").as_agent(
        name="SearchBot",
        instructions="You are a helpful assistant that can search the web for current information.",
        tools=HostedWebSearchTool(),
    )

    result = await agent.run("What are the latest developments in artificial intelligence?")
    print(result.text)

Средства протокола контекста модели (MCP)

Подключитесь к локальным серверам MCP для расширенных возможностей:

from agent_framework import MCPStreamableHTTPTool

async def local_mcp_example():
    agent = OpenAIChatClient().as_agent(
        name="DocsAgent",
        instructions="You are a helpful assistant that can help with Microsoft documentation.",
        tools=MCPStreamableHTTPTool(
            name="Microsoft Learn MCP",
            url="https://learn.microsoft.com/api/mcp",
        ),
    )

    result = await agent.run("How do I create an Azure storage account using az cli?")
    print(result.text)

Управление потоками

Сохраняйте контекст беседы в нескольких взаимодействиях:

async def thread_example():
    agent = OpenAIChatClient().as_agent(
        name="Agent",
        instructions="You are a helpful assistant.",
    )

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

Стриминговые ответы

Получите ответы по мере их создания для улучшения взаимодействия с пользователем:

async def streaming_example():
    agent = OpenAIChatClient().as_agent(
        name="StoryTeller",
        instructions="You are a creative storyteller.",
    )

    print("Agent: ", end="", flush=True)
    async for chunk in agent.run_stream("Tell me a short story about AI."):
        if chunk.text:
            print(chunk.text, end="", flush=True)
    print()  # New line after streaming

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

Агент стандартный BaseAgent и поддерживает все стандартные операции агента.

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

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