Open4
AIエージェント調査

業務でAIエージェントの構築を行っている。
調べたことをこちらにまとめる。

エージェント構築実践ガイド(OpenAI)
URLはこちら。
エージェント構築実践ガイド(OpenAI)
こちらで公開されている。
目次
- エージェントとは
- いつエージェントを構築すべきか
- エージェント設計の基本
- ガードレール
- まとめ
以下、読みながらのメモ👇
エージェントとは
エージェントとは、ユーザーに代わってタスクを自律的に遂行するシステムのことです。
特に、
- ワークフローを管理し、完了したかどうかを含め自らの行動を修正する
- 外部システムと連携するための様々なツールを動的に選択する
といった特性を持つ。
いつエージェントを構築すべきか
- 複雑な意思決定
- 運用が煩雑なルール
- 非構造化データへの強い依存
といった場合にエージェントは有効。
エージェント設計の基本
エージェントの構成要素
- モデル(Model)
- ツール(Tools)
- 指示(Instructions)
OpenAI Agents SDKでの例。ツールと指示を設定している事がわかる。
weather_agent = Agent(
name="Weather agent",
instructions="You are a helpful agent who can talk to users about the weather.",
tools=[get_weather],
)
ポイント
- モデル
- 常に最高性能なモデルを使うというよりは、求められたタスクを達成できる可能な限り小型のモデルに置き換えられないか検討する
- ツール
- データ(参照)、アクション、オーケストレーション(エージェント自体がツールとして使われる)の3種類に分けられる。
- 指示
- 既存のドキュメントを活用する(例えば業務手順書など)、エージェントにタスクを細分化するように指示する、明確なアクションを定義する(例えば、APIを呼び出してアカウント情報を取得する、レベルまで具体的に)、エッジケースを考慮する(例えば想定外の質問が来たときにどうするかなど)
オーケストレーション
-
シングルエージェントシステム
- 実行(run): ループとして実装され、エージェントが終了条件を満たすまで動作し続ける。主な終了条件は、ツールの呼び出し、structured outputでの出力、エラーの発生、最大ターン数への到達など。
- シングルエージェントではプロンプトテンプレートを用意し、ユースケースごとに変数で書き換えるのがおすすめ。
- まずはシングルエージェントで構築してみて、複雑な指示に対応できなかったりツールを誤って選択してしまう場合はマルチエージェントにする必要があるかも。
- 複雑なロジック(プロンプトに多くの条件分岐が含まれているなど)
- ツールのオーバーヘッド(数や類似性、重複によってエージェントが管理しきれなくなるなど)
-
マルチエージェントシステム
- マネージャー型と分散型
- マネージャー型
- マネージャーエージェント
- ツール呼び出しを通じて専用エージェントを呼び出す。
- 分散型
- トリアージエージェント
- タスクのトリアージを行い、後続処理は適切なエージェントに引き継ぐ。
- ツール呼び出しではなく、handoffでエージェントを呼び出す。(このとき制御も渡す)
- ハンドオフした二番目のエージェントに元のエージェントへのハンドオフ機能をもたせることで必要に応じて前のエージェントに制御を戻すことも可能。
ガードレール
- ガードレール
- 多層防御で考える
- ガードレールの種類
- 関連性分類器: トピック外の質問を除外(「エンパイアステートビルの高さは?」には答えない)
- 安全性分類器: プロンプトインジェクションなどへの対策
- 個人識別用情報フィルター: 個人識別用情報(PII)が含まれていないか
- モデレーション: 有害、反社会的な入力を検知する
- ツール利用時の安全対策: 各ツールのリスクを評価(読み取り専用か書き込み可能か、アカウント権限や金銭的な影響など)
- ルールベースによる保護: 正規表現フィルターなど。禁止用語やSQLインジェクション対策。
- 出力の検証: 応答がブランド価値に沿っているか、信頼性を損なわないか、など。
- ガードレールの構築
- データプライバシーとコンテンツの安全性を重視する
以上

上記の資料でOpenAI Agents SDKのコードがいくつか書いてあったので、次はAgents SDKの実装を調べてみたい。

エージェントの法人ユースにおいて、個人情報を外部に渡さない実装がポイントになる。
以下も把握しておきたい。