Agent パターン一覧¶
概要¶
このドキュメントでは、Agents SDK Modelsで利用可能な、または実装予定のAgentパターンを整理しています。各AgentはStepクラスとして実装され、Flowワークフロー内で使用できます。
実装状況¶
- ✅ 実装済み
- 🚧 部分実装
- 📋 設計済み
- 💡 検討中
現在実装済みのAgent¶
GenAgent ✅¶
目的: LLMベースの生成と評価を行う汎用エージェント
主な機能: - テキスト生成 - 生成結果の評価 - リトライ機能 - 構造化出力対応
使用例: - 文書作成 - コード生成 - 要約作成
ClarifyAgent ✅¶
目的: ユーザーとの対話を通じて要件や情報を明確化
主な機能: - 対話的質問生成 - 要件収集 - ターン管理 - 完了条件判定
使用例: - 要件定義 - ユーザー情報収集 - 設定ウィザード
典型的なAgentパターン(カテゴリ別)¶
1. Processing Agents(処理系)¶
TransformerAgent 💡¶
目的: データを一つの形式から別の形式に変換
主な機能: - フォーマット変換(JSON ↔ XML ↔ YAML) - データ正規化 - エンコーディング変換 - スキーマ変換
使用例:
transformer = TransformerAgent(
name="json_to_xml",
transformation_type="json_to_xml",
schema_mapping=mapping_rules
)
ExtractorAgent 💡¶
目的: 非構造化データから特定の情報を抽出し、構造化されたデータとして出力
責務の明確化: - 入力: テキスト、HTML、PDF、ログファイルなどの非構造化データ - 処理: 事前定義されたパターンやルールに基づく情報抽出 - 出力: 構造化されたデータ(辞書、リスト、Pydanticモデル)
主な機能: - パターンベース抽出: 正規表現、XPath、CSSセレクター - LLMベース抽出: 自然言語による抽出指示とスキーマ定義 - マルチフォーマット対応: テキスト、HTML、JSON、XML、CSV対応 - バリデーション: 抽出結果の検証と品質チェック - 複数抽出: 一つの入力から複数の情報を同時抽出 - エラーハンドリング: 抽出失敗時のフォールバック処理
他Agentとの役割分担: - vs ClassifierAgent: 分類ではなく具体的なデータ値を抽出 - vs TransformerAgent: 形式変換ではなく情報の取り出し - vs ValidatorAgent: 検証ではなく抽出が主目的
具体的な抽出パターン:
# 構造化されたデータ抽出例
extractor = ExtractorAgent(
name="contact_extractor",
extraction_rules=[
EmailRule(pattern=r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'),
PhoneRule(pattern=r'\b\d{3}-\d{3}-\d{4}\b'),
NameRule(llm_prompt="Extract person names from the text"),
DateRule(formats=['%Y-%m-%d', '%m/%d/%Y'])
],
output_schema=ContactInfo # Pydanticモデル
)
使用例: - 文書からメタデータ抽出: PDF契約書から契約者名、期間、金額 - メールから構造化情報抽出: 問い合わせメールから顧客情報、要件 - ログから診断情報抽出: エラーログからタイムスタンプ、エラーコード、詳細 - Webページから商品情報抽出: ECサイトから価格、仕様、在庫状況 - 帳票からデータ抽出: 請求書から金額、項目、支払い期限
ValidatorAgent 💡¶
目的: データや条件の検証を行う
主な機能: - 入力データ検証 - ビジネスルール適用 - スキーマ検証 - カスタム検証ルール
使用例:
validator = ValidatorAgent(
name="email_validator",
validation_rules=[
EmailFormatRule(),
DomainWhitelistRule(allowed_domains)
]
)
AggregatorAgent 💡¶
目的: 複数のソースからデータを集約・統合
主な機能: - データ結合 - 重複排除 - 統計計算 - レポート生成
使用例: - 複数API結果統合 - データ分析レポート - ダッシュボード生成
2. Decision Agents(判断系)¶
RouterAgent 💡¶
目的: 入力を分析して適切な処理パスに振り分け
主な機能: - 意図検出 - 分類ベースルーティング - 条件ベースルーティング - フォールバック処理
使用例:
router = RouterAgent(
name="intent_router",
routes={
"question": "qa_flow",
"complaint": "support_flow",
"request": "service_flow"
},
classifier=IntentClassifier()
)
ClassifierAgent 💡¶
目的: 入力を事前定義されたカテゴリに分類
主な機能: - テキスト分類 - 感情分析 - 優先度判定 - 言語検出
使用例: - サポートチケット分類 - 感情分析 - スパム検出
DecisionAgent 💡¶
目的: 複数の基準に基づいて複雑な判断を実行
主な機能: - 多基準評価 - 重み付け判定 - リスク評価 - 承認/却下判定
使用例:
decision = DecisionAgent(
name="loan_approval",
criteria=[
CreditScoreCriteria(weight=0.4),
IncomeCriteria(weight=0.3),
HistoryCriteria(weight=0.3)
],
threshold=0.7
)
PrioritizerAgent 💡¶
目的: タスクやアイテムに優先度を付けて並び替え
主な機能: - 優先度スコア計算 - 複数基準での並び替え - 動的優先度調整
使用例: - タスク管理 - サポートチケット優先度付け - リソース配分
3. Communication Agents(対話系)¶
NotificationAgent 💡¶
目的: 各種チャネルを通じて通知を送信
主な機能: - メール送信 - Slack/Teams通知 - SMS送信 - Webhook呼び出し
使用例:
notifier = NotificationAgent(
name="error_notifier",
channels=[
EmailChannel(recipients=admin_emails),
SlackChannel(webhook_url=slack_webhook)
]
)
ChatbotAgent 💡¶
目的: 対話型インターフェースの提供
主な機能: - 自然言語理解 - 対話管理 - コンテキスト保持 - 応答生成
使用例: - カスタマーサポート - FAQ対応 - 情報検索
InterviewAgent 💡¶
目的: 構造化されたインタビューや質問票を実行
主な機能: - 動的質問生成 - 回答検証 - 条件分岐 - 結果集約
使用例: - 顧客調査 - 診断質問 - 設定収集
4. Data Agents(データ系)¶
CollectorAgent 💡¶
目的: 複数のソースからデータを収集
主な機能: - API呼び出し - ファイル読み込み - データベース接続 - Webスクレイピング
使用例:
collector = CollectorAgent(
name="weather_collector",
sources=[
APISource(url="weather.api.com"),
DatabaseSource(query="SELECT * FROM weather")
]
)
CacheAgent 💡¶
目的: データのキャッシングと高速アクセス
主な機能: - メモリキャッシュ - 永続化キャッシュ - TTL管理 - キャッシュ戦略
使用例: - API応答キャッシュ - 計算結果保存 - セッション管理
SearchAgent 💡¶
目的: 情報検索と関連データの取得
主な機能: - テキスト検索 - セマンティック検索 - ベクトル検索 - ハイブリッド検索
使用例: - 文書検索 - FAQ検索 - 類似データ発見
5. Control Agents(制御系)¶
OrchestratorAgent 💡¶
目的: 複数のAgentやタスクの協調実行
主な機能: - タスク調整 - 実行順序制御 - 依存関係管理 - エラー処理
使用例:
orchestrator = OrchestratorAgent(
name="data_pipeline",
tasks=[
("collect", CollectorAgent()),
("validate", ValidatorAgent()),
("transform", TransformerAgent()),
("store", StorageAgent())
]
)
MonitorAgent 💡¶
目的: システムやプロセスの監視
主な機能: - ヘルスチェック - パフォーマンス監視 - アラート生成 - ログ分析
使用例: - システム監視 - APIヘルスチェック - パフォーマンス追跡
SchedulerAgent 💡¶
目的: タスクのスケジューリングと時間管理
主な機能: - 定期実行 - 遅延実行 - 条件トリガー - 依存関係考慮
使用例: - バッチ処理 - 定期レポート - リマインダー
6. Security Agents(セキュリティ系)¶
AuthAgent 💡¶
目的: 認証と認可の管理
主な機能: - ユーザー認証 - トークン管理 - 権限チェック - セッション管理
使用例: - API認証 - ユーザーログイン - 権限確認
AuditAgent 💡¶
目的: 操作ログとセキュリティ監査
主な機能: - 操作ログ記録 - セキュリティイベント検出 - コンプライアンス確認 - レポート生成
使用例: - 操作履歴追跡 - セキュリティ監査 - コンプライアンス確認
実装優先度¶
高優先度(次期リリース候補)¶
- RouterAgent - 最も汎用的で多くの場面で必要
- ValidatorAgent - データ品質確保に必須
- ExtractorAgent - 情報処理の基本機能
- NotificationAgent - アラートやレポート配信に必要
中優先度(将来版での実装)¶
- ClassifierAgent - ルーティングと組み合わせて強力
- TransformerAgent - データ変換の汎用性
- AggregatorAgent - レポート・分析機能
- SearchAgent - 情報検索機能
低優先度(長期的な拡張)¶
- OrchestratorAgent - 複雑なワークフロー制御
- MonitorAgent - 運用監視機能
- AuthAgent - セキュリティ強化
- SchedulerAgent - 高度なタスク管理
設計原則¶
1. Stepクラスベース¶
全てのAgentはStep
クラスを継承し、Flow内で統一的に使用可能
2. 設定駆動¶
各AgentはPydanticモデルで設定を管理し、型安全性を確保
3. LLMPipeline統合¶
LLMを使用するAgentはLLMPipeline
またはInteractivePipeline
を活用
4. ツール統合¶
OpenAI Function CallingやMCPサーバーとの統合をサポート
5. エラーハンドリング¶
適切なエラー処理とリトライ機能を標準装備
使用パターン例¶
1. カスタマーサポートワークフロー¶
flow = Flow([
RouterAgent(name="intent_router"), # 問い合わせ分類
ClarifyAgent(name="detail_collector"), # 詳細聞き取り
ValidatorAgent(name="info_validator"), # 情報検証
NotificationAgent(name="ticket_creator") # チケット作成通知
])
2. データ処理パイプライン¶
flow = Flow([
CollectorAgent(name="data_collector"), # データ収集
ValidatorAgent(name="data_validator"), # データ検証
TransformerAgent(name="data_transformer"), # データ変換
AggregatorAgent(name="report_generator") # レポート生成
])
3. 承認ワークフロー¶
flow = Flow([
ExtractorAgent(name="request_extractor"), # 申請内容抽出
ClassifierAgent(name="urgency_classifier"), # 緊急度分類
DecisionAgent(name="auto_approver"), # 自動承認判定
NotificationAgent(name="result_notifier") # 結果通知
])
次のステップ¶
- RouterAgentの詳細設計と実装
- 各Agentの共通インターフェース定義
- Agent間の連携パターンの標準化
- 包括的なテストスイート作成
- 使用例とドキュメントの充実