モデルとコンテキストの管理

1. モデル管理

OpenAI Agents SDKの特徴は、特定のモデルに依存しないモデル・アグノスティック(model-agnostic)な設計にある。すなわち、タスクの性質(コスト、速度、推論能力)に応じて、エージェントごとに最適なモデルを選択・調整できる。

(1) モデルの選択と調整

  • modelパラメータ: エージェントをインスタンス化する際、model="gpt-4o"model="o3-pro"のように指定するだけで、使用するモデルを切り替えられる。
    • 例: 複雑な数学的問題には推論能力の高いo3-pro、速度を優先するならgpt-4oを選択するといった使い分けが可能。
  • model_settingsによる微調整:ModelSettingsオブジェクトを使用して、モデルの挙動をさらに制御できる。
    • temperature: 出力のランダム性を制御する。値を低くすると決定的で正確な回答になり、高くすると創造的な回答になります。
    • max_tokens: モデルが生成する回答の長さを制限する。

(2) サードパーティモデルの統合 (LiteLLMの利用)

LiteLLMライブラリを利用することで、OpenAI以外のモデル(Anthropic、Google、Metaなど)を簡単に統合できる。

  • 導入: pip install "openai-agents[litellm]" を実行し、環境変数に各プロバイダーのAPIキーを設定する。
  • 指定方法: model="litellm/anthropic/claude-opus..." のように、プレフィックスを付けることで呼び出しが可能。
  • メリット: プロバイダー間でコードを大幅に書き換えることなく、ベンチマークの比較やコスト最適化が行える。

2. コンテキスト管理

エージェントがアクセスできる情報を「コンテキスト」と呼ぶ。エージェントシステムの構築においては、特にローカルコンテキスト(Local Context)の活用が重要になる。

(1) ローカルコンテキストの概念

ローカルコンテキストとは、エージェントがツールを実行する際に必要となる、LLMのプロンプトには直接含めない情報のこと。

  • 利点: ユーザーIDや機密情報などの機微データをプロンプトに埋め込むことなく、ツール経由で安全に処理できる。
  • 役割: エージェントの内部メモリとして機能し、ユーザーごとのパーソナライズされた応答を可能にする。

(2) 実装の仕組み

  1. データクラスの定義: OrderContextなどのdataclassを作成し、顧客名や注文IDなどの情報を保持させる。
  2. 型定義: エージェント作成時に Agent[OrderContext] と型を指定することで、そのエージェントがどのコンテキストを扱うかを明確にする。
  3. ツールの連携: ツール関数(function_tool)側で RunContextWrapper[OrderContext] を引数に取ることで、実行時にコンテキスト情報を受け取り、動的な処理を行う。

3. まとめ

  • 柔軟なモデル運用: OpenAI Agents SDKはマルチモデル環境を前提としており、タスクに応じて最適なモデルや設定を動的に選択できる。
  • LiteLLMによる拡張性: 最小限のコード変更で、業界トップクラスの様々なLLMをエージェントの「脳」として利用可能。
  • 効率的なデータ分離: ローカルコンテキストを活用することで、プロンプトの肥大化を防ぎつつ、セキュアかつパーソナライズされた高度なエージェントシステムを構築できる。