Microsoft Agent Framework では、複数の OpenAI クライアントの種類がサポートされています。 C# では、チャットの完了、応答、アシスタントが含まれます。 Python では、プロバイダーをリードする OpenAI サーフェスはチャットの完了と応答です。
| クライアントの種類 | API | 最適な対象者 |
|---|---|---|
| チャットの完了 | Chat Completions API | 単純なエージェント、広範なモデルのサポート |
| 応答 | 応答API | ホストされたツール (コード インタープリター、ファイル検索、Web 検索、ホストされた MCP) を使用したフル機能のエージェント |
| アシスタント | Assistants API | コード インタープリターとファイル検索を使用するサーバーマネージド エージェント |
使用できる言語は異なります。 Python では、このページのチャット完了クライアントと応答クライアントが使用されます。以下のアシスタントの対象範囲は C# のみです。
はじめに
必要な NuGet パッケージをプロジェクトに追加します。
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
チャット完了クライアント
Chat Completion クライアントでは、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."));
サポートされているツール: 関数ツール、Web 検索、ローカル MCP ツール。
レスポンスクライアント
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 ツール。
アシスタントクライアント
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 サンプル を参照してください。
エージェントの使用
3 つのクライアントの種類はすべて、同じエージェント操作 (ストリーミング、スレッド、ミドルウェア) をサポートする標準の AIAgent を生成します。
詳細については、 作業の開始に関するチュートリアルを参照してください。
ヒント
Python では、Azure OpenAI では、ここで示したのと同じ agent_framework.openai クライアントが使用されるようになりました。 Azure ルーティングが必要な場合は、 credential や azure_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_COMPLETION_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 が生成されます。
詳細については、 作業の開始に関するチュートリアルを参照してください。