OpenAI エージェント

Microsoft Agent Framework では、C# と Python の両方で、2 種類の OpenAI クライアント (応答とチャットの完了) がサポートされています。 応答は、推奨されるプライマリ クライアントです。新しい OpenAI Responses API を対象とし、ホストされているツール (コード インタープリター、ファイル検索、Web 検索、ホストされた MCP、イメージの生成) の完全なセットをサポートします。 広範なモデルの互換性が必要な場合、または既存のチャット補完の統合を維持する必要がある場合は、チャット補完を使用します。

クライアントの種類 API 最適な対象者
応答 (推奨) 応答API ホストされたツール (コード インタープリター、ファイル検索、Web 検索、ホストされた MCP) を使用したフル機能のエージェント
チャットの完了 Chat Completions API 単純なエージェント、広範なモデルのサポート

OpenAI Assistants API は、OpenAI によって非推奨とされます。 新しいコードでは、Responses クライアントを使用する必要があります。 既存の Assistants ベースのアプリから移行する場合は、Semantic Kernel移行ガイドを参照してください。

はじめに

必要な NuGet パッケージをプロジェクトに追加します。

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

レスポンスクライアント

Responses クライアントは推奨されるプライマリ クライアントであり、コード インタープリター、ファイル検索、Web 検索、ホステッド 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."));

サポートされているツール: 関数ツール、ツール承認、コード インタープリター、ファイル検索、Web 検索、ホストされた MCP、ローカル MCP ツール。

チャット完了クライアント

チャット完了クライアントは、Chat Completions 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."));

サポートされているツール: 関数ツール、Web 検索、ローカル MCP ツール。

アシスタントクライアント

OpenAI Assistants API は、 OpenAI によって非推奨とされます。 Agent Framework はアシスタント クライアントを文書化しなくなりました。新しいコードには上記の Responses クライアントを使用します。 既存のアプリの移行については、Semantic Kernel移行ガイドを参照してください。

エージェントの使用

どちらのクライアントの種類でも、同じエージェント操作 (ストリーミング、スレッド、ミドルウェア) をサポートする標準の AIAgent が生成されます。

詳細については、 作業の開始に関するチュートリアルを参照してください。

ツール

OpenAI .NET クライアントは、対象となる API に応じて異なるツール サーフェスを公開します。 同じマトリックスは、Azure OpenAI プロバイダー ページ上の一致Azure OpenAI クライアントに適用されます。

ツール Responses チャットの完了
関数ツール
ツールの承認
コード インタープリター
ファイル検索
Web 検索
ホストされている MCP ツール
ローカル MCP ツール

ツール承認 はフレームワークの関数呼び出しチャット クライアントによって提供されるため、基になる API に関係なく、関数ツール呼び出しで機能します。

OpenAI Assistants API は OpenAI によって非推奨となり、Pythonには Assistants 互換性クライアント/プロバイダーが付属しなくなりました。 応答には OpenAIChatClient を使用し、チャットの完了には OpenAIChatCompletionClient を使用します。 以前の Agent Framework Python リリースから移行する場合は、Python重要な変更ガイドを参照してください。 Semantic Kernelから移行する場合は、Semantic Kernel移行ガイドを参照してください。

ヒント

Python では、Azure OpenAI では、ここで示したのと同じ agent_framework.openai クライアントが使用されるようになりました。 Azure ルーティングが必要な場合は、 credentialazure_endpoint などの明示的な Azure ルーティング入力を渡し、使用する Azure API サーフェスの api_version を設定します。 OPENAI_API_KEYが構成されている場合、AZURE_OPENAI_*変数も存在する場合でも、汎用クライアントは OpenAI にとどまります。 完全な.../openai/v1 URL が既にある場合は、base_urlではなくazure_endpointを使用します。 Microsoft Foundry プロジェクト エンドポイントと Foundry Agent Service については、 Microsoft Foundry プロバイダーのページを参照してください。 ローカル ランタイムについては、「 Foundry Local」を参照してください。

Installation

pip install agent-framework-openai

agent-framework-openai は、直接 OpenAI と Azure OpenAI の両方を使用するためのオプションの Python プロバイダー パッケージです。

コンフィギュレーション

Python OpenAI チャット クライアントでは、次の環境変数パターンが使用されます。

OPENAI_API_KEY="your-openai-api-key"
OPENAI_CHAT_MODEL="gpt-4o-mini"
# Optional shared fallback:
# OPENAI_MODEL="gpt-4o-mini"

一般的な機能

これらのクライアントの種類では、次の標準エージェント機能がサポートされています。

関数ツール

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 = OpenAIChatClient().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 = OpenAIChatClient().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 = OpenAIChatClient().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 が生成されます。

詳細については、 作業の開始に関するチュートリアルを参照してください。

ツール

Python OpenAI クライアントは、基になる API に応じて異なるツール サーフェスを公開します。 OpenAIChatClient (応答) は、ホストされているツール ファクトリを client.get_*_tool(...) ( get_code_interpreter_toolget_file_search_toolget_web_search_toolget_image_generation_toolget_shell_toolget_mcp_tool) 経由で出荷します。 OpenAIChatCompletionClient は、 get_web_search_toolのみを公開します。 どちらも関数ツールとローカル MCP サーバーで動作します。

これらのクライアントの接続先を Azure OpenAI にした場合も、同じマトリクスが適用されます。Azure OpenAI を参照してください。

ツール OpenAIChatClient (応答) OpenAIChatCompletionClient (チャットの完了)
関数ツール
ツールの承認
コード インタープリター
ファイル検索
Web 検索
イメージの生成 ✅ (get_image_generation_tool)
ホステッド シェル ✅ (get_shell_tool)
ホストされている MCP ツール
ローカル MCP ツール

ツール承認 はフレームワークの関数呼び出しチャット クライアントによって処理されるため、基になる API に関係なく、関数ツール呼び出しで機能します。

次のステップ