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

1. ツールの定義とカスタマイズ

  • 基本: Pythonの関数に @function_tool デコレータを付与することで、モデルが利用可能なツールとして登録できる。SDKは関数の名前、型ヒント、docstringから自動的にJSONスキーマを生成する。
  • 関数のデフォルトの特性の上書き: name_overridedescription_override パラメータを使用することで、モデルが理解しやすいようにツールの名称や説明を明示的にカスタマイズが可能。

2. ツール使用の制御 (tool_choice)

ModelSettingstool_choice パラメータにより、モデルによるツール使用を制御できる。

  • auto: モデルがツールを呼び出すかどうか、またどのツールを呼び出すかを自ら判断する(デフォルト)。
  • required: モデルに必ずいずれかのツールを使用させる。内部知識による回答を防ぎ、信頼できるデータソースへのアクセスを強制したい場合に有効。
  • none: モデルにツールを使用させない。
  • 特定のツール名: 特定のツールのみを強制的に実行させる。

3. ツール使用後の挙動制御 (tool_use_behavior)

ModelSettings の tool_use_behavior パラメータにより、ツール使用後のモデルの挙動を制御できる。

  • run_llm_again: ツール実行結果をモデルに返し、最終回答を生成させる(デフォルト)。
  • stop_on_first_tool: 最初のツール実行結果をそのまま最終回答として出力し、モデルによる再処理を行わない。
  • StopAtTools: 特定のツールが実行されたときのみ、処理を停止して結果をそのまま返す。請求書発行など、フォーマットや法的文言を維持したい場合に適している。

4. Pydantic(データの構造定義・型チェック・検証を自動で行うPythonライブラリ)による入力バリデーション

  • 複雑な入力構造(階層構造やリストなど)を定義する際、Pydanticの BaseModel を引数に利用できる。
  • これにより、モデルが誤った型や不足したパラメータでツールを呼び出そうとした場合、SDK側で ValidationError を発生させることができ、システムの堅牢性が向上する。

5. その他

  • OpenAI提供のツール: WebSearchToolFileSearchToolCodeInterpreterTool などの事前定義済みツールの利用。
  • MCP (Model Context Protocol): 外部のMCPサーバーに接続し、自前で構築することなく既存のツールセット群を取り込む方法。