← 試験の目次へ

Architect Foundations ドメイン5: コンテキスト管理と信頼性(15%)

この章で学ぶこと: 長いやりとりで大事な事実を失わない方法、エスカレーションとあいまいさの解消、マルチエージェントでのエラーの伝え方、大きなコードベースでのコンテキスト管理、人のレビューと確信度の調整、出典と不確かさの扱い。

本番の60問のうち約9問が出ます。ほかのドメインのシナリオ問題にも、この考え方がよく混ざります。

タスクステートメント この章の節
5.1 長いやりとりで重要な情報を失わない 第1節
5.2 エスカレーションとあいまいさの解消 第2節
5.3 マルチエージェントのエラー伝播 第3節
5.4 大きなコードベースの探索でのコンテキスト管理 第4節
5.5 人のレビューと確信度の調整 第5節
5.6 出典を保ち、不確かさを扱う 第6節

Developer Foundations で学んだ基本(ここでは繰り返しません):


1. 長いやりとりで重要な情報を失わない(5.1)

1.1 3つのリスク

リスク 何が起きるか
段階的な要約で数字が消える 「注文 #4471 を 12,800円で 3月2日に返品希望、配送料は顧客負担で合意」が「顧客は返品を希望」に縮む
lost in the middle 長い入力の最初と最後はよく読まれるが、中ほどの内容は抜けやすい
ツール結果がたまる 返品に必要なのは5項目なのに、注文検索が40以上の項目を返し、それが毎ターン残る

会話の一貫性のために、次の API リクエストには会話の履歴を丸ごと渡します(Messages API は状態を持たない)。だからこそ、履歴に何を残すかの設計が大事です。

新しいモデルでの注意(2026年11月時点): 公式のプロンプトのドキュメントは、Claude 5.1 以降のモデルでは、前のメッセージを編集したり、古いターンをその場で要約し直したりすると、それより後の thinking ブロックが無効になるとしています。履歴は追記だけにして、変更は会話の途中のシステムメッセージやサーバー側のコンテキスト管理で行うよう勧めています。case facts ブロックのような「毎回入れる事実」は、この注意と合わせて設計します。

公式の長い文書のこつ: 長い文書はプロンプトの上に置き、問いと指示は後ろに置く。複数の文書は <document> で囲み、出典などのメタデータを子のタグに入れる。先に関係する部分を引用させてから仕事をさせる。

1.2 対策

対策 やり方
case facts ブロック 取引の事実(金額、日付、注文番号、ステータス、顧客が言った期待)を、要約される履歴とは別の、変わらない「case facts」ブロックに抜き出し、毎回のプロンプトに入れる
問題ごとの構造化データ 複数の問題を扱うセッションでは、問題ごとに(注文 ID、金額、ステータス)を別の層に保つ
ツール出力を削る たまる前に、必要な項目だけに削る(例: 注文検索から返品に関係する項目だけ)。PostToolUse フックでもできる(第1章 5.1)
位置の工夫 集めた入力の最初に重要な結果の要約を置き、詳細ははっきりした見出しで整理する
メタデータを必ず入れる サブエージェントの構造化出力に、日付、出典の場所、方法論の文脈を入れさせる
上流で構造化する 下流のコンテキストの予算が少ないなら、上流のエージェントに長い文章や推論の連鎖ではなく、重要な事実・引用・関連度のスコアを返させる
<case_facts>
customer_id: C-20931(確認済み)
issue_1: 注文 #4471 / 12,800円 / 返品希望 / 配送料は顧客負担で合意 / 3月2日
issue_2: 3月の請求 / 二重請求の疑い / 4,400円 / 調査中
</case_facts>

2. エスカレーションとあいまいさの解消(5.2)

2.1 エスカレーションのきっかけ

きっかけ 例
顧客がはっきり人を求めた 「人と話したい」「担当者につないで」
ポリシーの例外や抜け ポリシーは自社サイトの値下げだけを扱い、競合店との価格合わせについては何も書いていない
意味のある進展ができない 必要な情報が取れない、何度試しても解決しない

「複雑だから」だけではエスカレーションの理由になりません。複雑でも、能力とポリシーの範囲内なら解決を目指します。

2.2 顧客が人を求めたとき

状況 正しい対応
はっきり人を求めた 先に調べようとせず、すぐに応じる
不満を表しているが、人を求めてはいない。問題は単純 気持ちを受け止め、解決を申し出る。顧客がもう一度人を希望したら、エスカレーションする

2.3 当てにならない指標

指標 なぜ当てにならないか
感情(怒っているか) 感情の強さは、問題の複雑さと関係しない
モデルの自己申告の確信度 調整されていない。難しいケースほど誤って自信を持つことがある

エスカレーションの判断がずれているときの最初の一手は、システムプロンプトに明確なエスカレーションの基準と、「エスカレーションする / 自分で解決する」の境目を示す few-shot 例を入れることです(サンプル問題3)。別の分類モデルを作る、感情分析を入れる、は大がかりすぎるか、別の問題を解いています。

2.4 候補が複数あるとき

get_customer で「田中 花子」が3人見つかった。推測でどれかを選ばず、追加の識別情報(メールアドレス、注文番号、電話番号の下4桁など)を尋ねます。誤った顧客の口座を操作するほうが、ずっと高くつきます。


3. マルチエージェントのエラー伝播(5.3)

3.1 構造化されたエラーの文脈

サブエージェントがコーディネーターに返すエラーに入れるもの:

項目 例
失敗の種類 タイムアウト(一時的)
試した問い合わせ 「2025年 欧州 洋上風力 発電容量」
部分的な結果 取れた3件の資料
考えられる代案 期間を絞って再検索、別の情報源(政府の統計)を使う

これがあれば、コーディネーターは「問いを変えて再試行」「別の方法」「部分的な結果で進める」を賢く選べます。

3.2 アンチパターン

アンチパターン なぜだめか
一般的なステータス(「検索が使えません」) コーディネーターから大事な文脈を隠す
エラーを黙って握りつぶし、空の結果を成功として返す 回復の機会がなくなり、抜けのある報告になる
1つの失敗でワークフロー全体を止める 回復できる場面まで止まる
サブエージェント内で再試行を尽くしてから、一般的なステータスだけ返す 再試行は良いが、最後に文脈を捨てている

3.3 どこで回復するか

3.4 網羅の注記

統合の結果に、網羅の状況を書きます。

## 網羅の状況
- 十分な裏付け: 発電容量の推移、主要国の政策
- 抜けあり: 洋上風力の保守コスト(業界団体のデータベースがタイムアウトし、取得できなかった)

読み手は、どこまで信じてよいかを判断できます。


4. 大きなコードベースの探索でのコンテキスト管理(5.4)

4.1 コンテキストの劣化のサイン

長いセッションで、回答の一貫性がなくなる。前に見つけた具体的なクラス名(LegacyInvoiceAdapter)ではなく、「よくあるパターンでは〜」のような一般論を語り始める。これは劣化のサインです。

4.2 対策

対策 やり方
スクラッチパッドのファイル 重要な発見(クラス名、依存関係、決めたこと)をファイルに書かせ、後の質問ではそれを参照させる。コンテキストの境界(圧縮や新しいセッション)をこえて残る
サブエージェントに任せる 具体的な問いごとに生成する(例: 「テストファイルを全部探す」「返金フローの依存関係をたどる」)。大量の出力はサブエージェントの中に残り、メインは全体の調整を続ける
フェーズの間で要約する 次のフェーズのサブエージェントを生成する前に、前のフェーズの重要な発見を要約し、最初のプロンプトに入れる
/compact 探索の出力でコンテキストが埋まったら、要約して空きを作る

Anthropic の記事「Effective context engineering for AI agents」も、長い仕事の手法として、圧縮(compaction)、構造化したメモ(エージェントがコンテキストの外にメモを書く)、サブエージェントの3つを挙げています。

4.3 クラッシュからの回復: マニフェスト

  1. 各エージェントは、決まった場所に自分の状態を書き出す(例: state/search-agent.json に、終わった問い、取れた結果、残りの仕事)
  2. コーディネーターは、全体の進み具合をマニフェスト(state/manifest.json)にまとめる
  3. 再開するとき、コーディネーターはマニフェストを読み込み、それぞれのエージェントのプロンプトに状態を入れる

会話の記録に頼らず、構造化された状態から再開できます(第1章 7.2 の「要約で新しく始める」と同じ考え)。


5. 人のレビューと確信度の調整(5.5)

5.1 全体の正確さに隠れる弱点

文書の種類 件数 正確さ
請求書 9,000 99%
領収書 800 95%
手書きの納品書 200 71%
全体 10,000 約97.6%

全体では97%を超えても、手書きの納品書は71%です。「全体で97%だから人のレビューを減らす」は危険です。

5.2 自動化の前に確かめること

5.3 確信度を調整して使う

  1. モデルに、項目ごとの確信度を出させる
  2. ラベル付きの検証セット(正解のわかっている文書)で、確信度と実際の正しさを比べる
  3. レビューのしきい値を決める(例: 確信度 0.9 以上の項目は、検証セットで正答率 99%だった)

自己申告の確信度を、調整せずにそのまま使ってはいけません。

5.4 層別ランダムサンプリング

自動化した「確信度の高い抽出」からも、文書の種類などの層ごとにランダムに少しずつ取り出し、人が確かめます。

5.5 人の時間をどこに使うか

人のレビューに回す 自動で通す
確信度の低い抽出 確信度が高く、その区分の正確さが確かめられた抽出(サンプリングで監視)
元の文書があいまい・矛盾している(conflict_detected が true) —

6. 出典を保ち、不確かさを扱う(5.6)

6.1 要約で出典が消える

要約の段階で、主張と出典の対応を残さずに圧縮すると、どの主張がどこから来たかがわからなくなります。

対策: サブエージェントに、主張と出典の対応表(出典の URL、文書名、該当の抜粋)を構造化して出させ、統合のエージェントはそれを最後まで保ちます(第1章 3.3)。

6.2 食い違う統計

信頼できる2つの情報源で、数字が違う(例: A は「市場の成長率 12%」、B は「8%」)。

やり方 評価
どちらかを勝手に選ぶ 誤り
平均を取る 誤り(根拠のない新しい数字を作る)
両方の値を出典付きで書き、食い違いを注記する 正しい

6.3 時期のデータ

A は2023年のデータ、B は2025年のデータなら、数字の違いは矛盾ではなく変化かもしれません。サブエージェントの構造化出力に、公開日やデータの収集日を必ず入れさせます。

6.4 内容に合った表現

内容 表現
財務データ 表
ニュース、経緯 文章
技術的な結果 構造化したリスト

すべてを同じ形式にそろえる必要はありません。


7. 試験に向けたまとめ

問われ方 答えの考え方
要約で金額や日付が消える case facts ブロックに抜き出し、毎回入れる
長い入力の中ほどを見落とす 重要な要約を最初に、詳細は見出しで整理
ツール結果でコンテキストが埋まる 必要な項目だけに削る
顧客がはっきり人を求めた すぐにエスカレーション
不満はあるが、問題は単純 受け止めて解決を申し出る。再度求めたらエスカレーション
ポリシーに書いていない依頼 エスカレーション
エスカレーションの判断がずれる 明確な基準と few-shot 例。感情や自己申告の確信度ではない
同じ名前の顧客が複数 追加の識別情報を尋ねる
サブエージェントのタイムアウト 失敗の種類、問い合わせ、部分結果、代案を含む構造化エラー
エラーを空の成功にする / 全体を止める どちらもアンチパターン
長いセッションで一般論を語り出す スクラッチパッド、サブエージェント、フェーズ間の要約、/compact
クラッシュからの再開 各エージェントの状態とマニフェスト
全体97%だからレビューを減らす 種類・項目ごとに確かめる
確信度で振り分ける ラベル付きの検証セットで調整してから
自動化した後の監視 層別ランダムサンプリング
情報源で数字が違う 両方を出典付きで。食い違いを注記
年の違うデータ 公開日・収集日を必ず入れる

8. 用語集

用語 意味
case facts 会話の要約とは別に保つ、取引の事実のブロック
lost in the middle 長い入力の中ほどが見落とされやすいこと
スクラッチパッド エージェントが発見を書き残す作業用のファイル
マニフェスト 全体の進み具合と各エージェントの状態の一覧
確信度の調整(calibration) 確信度の数字が実際の正しさと合うように合わせること
層別ランダムサンプリング グループごとにランダムに取り出して確かめること
網羅の注記 どこまで調べられたか、どこに抜けがあるかの説明

出典

注意: 第5.1節の表の数字は説明のための例です。「lost in the middle」は試験ガイドの用語で、公式ドキュメントでは「長い文書は上に、問いは最後に置く」などの形で説明されています。内容は2026年11月時点のもので、上の出典を要約・言い換えたものです(ライセンスに配慮して書き直しています)。