다음을 통해 공유


OpenAI 에이전트

Microsoft Agent Framework는 각각 다른 도구 기능을 사용하여 다른 API 화면을 대상으로 하는 세 가지 고유한 OpenAI 클라이언트 유형을 지원합니다.

클라이언트 유형 API 적합한 대상
채팅 완료 채팅 완료 API 간단한 에이전트, 광범위한 모델 지원
응답 응답 API 호스트된 도구가 있는 전체 기능 에이전트(코드 인터프리터, 파일 검색, 웹 검색, 호스트된 MCP)
조수 Assistants API 코드 인터프리터 및 파일 검색을 사용하는 서버 관리 에이전트

팁 (조언)

Azure OpenAI에 해당하는 항목(AzureOpenAIChatClient, AzureOpenAIResponsesClient, AzureOpenAIAssistantsClient)은 Azure OpenAI 공급자 페이지를 참조하세요. 도구 지원은 동일합니다.

시작하기

필요한 NuGet 패키지를 프로젝트에 추가합니다.

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

채팅 완료 클라이언트

채팅 완료 클라이언트는 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."));

지원되는 도구: 함수 도구, 웹 검색, 로컬 MCP 도구.

응답 클라이언트

응답 클라이언트는 코드 인터프리터, 파일 검색, 웹 검색 및 호스트된 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 생성합니다.

자세한 내용은 시작 자습서를 참조하세요.

설치

pip install agent-framework --pre

구성 / 설정

각 클라이언트 유형은 서로 다른 환경 변수를 사용합니다.

채팅 완료

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

응답

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 는 호스트된 도구에서 가장 기능이 풍부한 옵션인 응답 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 도구.

응답 클라이언트가 있는 호스트된 도구

응답 클라이언트는 호스트된 각 도구 유형에 대한 메서드를 제공합니다 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 는 기본 제공 코드 인터프리터 및 파일 검색을 사용하는 서버 관리 에이전트인 Assistants 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 생성합니다.

자세한 내용은 시작 자습서를 참조하세요.

다음 단계: