
2026-04-04#Claude#API#生成AI#エージェント#Claude Certified Architect
D1直前対策チートシート——エージェント・ワークフロー設計(試験比率27%)【CCA Foundations対策】
試験比率27%、全5ドメイン中最大。ツール設計・エージェントループ・マルチエージェントオーケストレーション・エスカレーション判断・エラー伝播が主な出題範囲。
ワークフロー vs エージェントの使い分け
| 条件 | 選択 |
|---|---|
| 処理ステップが事前に予測できる | ワークフロー(固定パイプライン) |
| 必要なステップがClaudeの判断に依存する | エージェント(動的ループ) |
| ループ回数を最小にしたい | ワークフローで設計し、動的部分だけエージェント化 |
エージェントループの制御
stop_reason: "tool_use"→ ツールを実行してClaudeを再呼び出し(ループ継続)stop_reason: "end_turn"→ 最終応答(ループ終了)- ループ回数の上限を設けて無限ループを防ぐ
- 並列ツール呼び出し:1ターンで複数ツールを要求 → round-tripを削減
ツール設計の原則
- 説明文が選択精度に直結する:「何をするか」「いつ使うか」「類似ツールとの違い」を明記
- 最小権限:スキルや操作に必要なツールのみ渡す
- 抽象的な設計:ファイルパス直接操作より「意図を渡す」設計(環境に依存しない)
- 類似ツールが2つある場合、名前と説明で明確に区別しないと誤選択が増える
→ 詳細: Tool Use基礎① / Tool Use応用
マルチエージェント:コーディネーターパターン
- コーディネーターの役割:一元的な可視性・エラーハンドリング・情報ルーティングの制御
- サブエージェント間の直接通信を避ける → コーディネーター経由で一貫性を保つ
- タスク分解はコーディネーターが行う(狭すぎると網羅性に欠ける)
- 並列実行:独立したサブタスクは同時に走らせてlatencyを削減
→ 詳細: エージェントの設計
エスカレーション判断
| 状況 | エスカレーション | 理由 |
|---|---|---|
| ポリシーに記載のないケース | ✅ すべき | 人間の判断が必要なポリシーギャップ |
| 矛盾する証拠(追跡データ vs 顧客申告) | ❌ 不要 | 事実を提示するのがエージェントの役割 |
| 顧客が感情的・不満を示している | ❌ 不要 | 感情はエスカレーション基準にならない |
| 複数の問い合わせが含まれている | ❌ 不要 | 分解して処理できる |
原則:ポリシーのギャップだけがエスカレーションの確実な基準
→ 詳細: エスカレーションと反復改善
Evaluator-Optimizerパターン
- ドラフトを生成 → 自己評価ステップで基準を満たしているか確認 → 不十分なら再生成
- 「顧客への確認」に頼るのではなく、エージェント自身が出力品質を担保する
- 評価基準を明示(ポリシーの文脈・タイムライン・次のステップが含まれているか)
→ 詳細: エスカレーションと反復改善
エラー伝播の設計
| エラーの種類 | 対処 |
|---|---|
| タイムアウト(一時的な接続失敗) | エラー種別・試みたクエリ・部分結果を含めてコーディネーターに返す |
| 空の結果(クエリは成功・結果ゼロ) | 有効な結果として返す(タイムアウトと混同しない) |
| 部分的な成功(一部ソースが失敗) | カバレッジ注釈付きで合成する(完全失敗扱いはNG) |
| 破損ファイル等・解決不能 | ローカルリトライ後、コンテキスト付きでコーディネーターに伝播 |
→ 詳細: コンテキスト最適化とprovenance管理
コンテキスト管理:Lost-in-the-Middle対策
- Primacy effect:重要情報を入力の冒頭に置く(中間は読み飛ばされやすい)
- セクション見出しで中間コンテンツをナビゲートしやすくする
- 上流エージェントが冗長な出力(推論過程・ページ全文)を返すと下流で問題になる → 構造化データ(key facts・引用・関連スコア)を返すよう設計する
プログラム的前提条件
- プロンプト指示は確率的:12%のスキップも防げない
- ツールの入力バリデーション・前提条件チェックをコードで実装 → 決定論的に手順を強制
- 金銭的・セキュリティ上の影響がある必須手順はプログラム的に強制する
→ 詳細: エージェント信頼性の設計
よくある誤解まとめ
| 誤解 | 実際 |
|---|---|
| 感情的な顧客はエスカレーションすべき | ポリシーギャップがない限りエスカレーション不要 |
| max_tokensを増やすと並列ツール呼び出しが増える | 無関係。プロンプトで「まとめてリクエストせよ」と指示する |
| サブエージェントが直接通信するほうが効率的 | コーディネーター経由で一元管理するのが基本 |
| 部分成功はエラーとして返すべき | カバレッジ注釈付きで使える結果を返す(graceful degradation) |
| タイムアウトと空結果は同じ扱いでよい | 意味が異なる。コーディネーターの判断材料として区別して伝える |