OpenAI Agents SDK のツール活用 (2)

1. カスタムツールの例

LLMが苦手とする計算や、最新情報の取得を補完するため、ユーザーが独自のツールを定義しエージェントに使用させる。

  • 算術計算ツール: 住宅ローンの支払額計算など、正確な数値計算が必要なタスクをPython関数として定義し、エージェントに呼び出させる。
  • 外部API連携ツール : requestsライブラリを使用して仮想通貨の価格をリアルタイムで取得するなど、学習データに含まれない最新情報を取得する。
  • データベースクエリツール: 顧客情報やチケット履歴などの社内データベースを模した構造から、特定の条件でデータを抽出する。
  • ツールの連鎖 : 「顧客の注文一覧を取得」→「特定の注文の詳細を確認」というように、複数のツールを順番に使用することが可能。

2. OpenAIホストツールの例

OpenAIが標準で提供するマネージドツールとして以下のようなものがある。

  • FileSearchTool: ベクターストアを作成し、アップロードされたドキュメントから関連情報を検索(RAG)する。
  • ImageGenerationTool: DALL-E等のモデルを使用して、テキストプロンプトから画像を生成する。
  • CodeInterpreterTool: 安全に隔離された環境(サンドボックス)内でエージェントが 自力でPython コードを記述し実行する。
  • WebSearchTool: 最新のニュースやイベント情報をウェブ上から検索する。

3. 高度な構成例

単一のタスクを超えて、複雑なワークフローを制御するため、以下の手法がある。

  • Agent-as-a-tool : あるエージェントを別のエージェントのツールとして登録する構造。下図のように、オーケストレーターエージェント(指揮役のエージェント)がロケーションエージェントや距離計算エージェントなど他のエージェントを呼び出して最終的な回答を作成する。
  • Handoffとの違い: 制御権を完全に移す Handoff に対し、Agent-as-a-tool は元のエージェントが制御を維持したまま、特定タスクのみを別エージェントに依頼する。
  • MCP (Model Context Protocol): エージェントがローカルまたは外部サーバ上のツールを発見・呼び出す方法を標準化するためのプロトコル。MCPサーバが提供するツールを自動検出してエージェントのツールとして利用できる。

4. 監視とデバッグ

  • Traces : エージェントがどの順番でツールを呼び出し、各ステップに何ミリ秒かかったか、どのような引数で関数が実行されたかを可視化し、デバッグすることが可能。