AIエージェント・ストラテジスト › Web参考書 › 第6章

5Dモデル Step3 Design(設計・プロンプト):コンテキスト設計、I/O設計、セキュリティ設計

第6章 AIエージェントを実装する5Dモデル / 節 3

シラバスのキーワード: コンテキスト設計I/O設計セキュリティ設計Few-shotChain-of-Thought例からルールを抽出JSONスキーマバリデーションアクセス制御ガードレールバイアス防止

本文を読んだあと、覚えているか確認してください。

「やりたいこと」と「どう動かすか」の間にある溝

Definition で「修繕依頼から設備と症状を読み取り、緊急度を判定したい」と決まりました。でも、この一文では AI は動きません。どんな指示を与えるのか、出力をどんな形で受け取るのか、どんなデータを渡してはいけないのか。これを具体的に決めるのが Design です。設計は3つの領域に分けて考えます。試験では「この設計論点はどの領域か」を判別させる問題が出ます。

領域 問い
コンテキスト設計 AI にどう指示するか
I/O 設計 AI とどんな形式でやり取りするか
セキュリティ設計 AI に何を見せて、何を出させないか

領域1 コンテキスト設計:AI にどう指示するか

第4章のコンテキストエンジニアリングが「AI に渡す情報をどう考えるか」の原則論だったのに対し、ここでは「システムプロンプトに何を書くか」という具体的な手法に踏み込みます。

システムプロンプトは、AI の役割・前提・制約を定める最上位の指示です。「あなたは賃貸物件の修繕依頼の一次受付担当です。入居者の依頼文と写真から、設備の種類・症状・入居者が確認済みの事項を抽出し、緊急度を即日・3日以内・通常の3段階で判定してください。判定の根拠を項目別に明記してください。入居者の国籍・年齢・契約形態は判定に使ってはいけません」のように書きます。「根拠を項目別に」はペルソナ A の要求を、「属性を使わない」は制約条件を、プロンプトで実現しています。

出力の質を上げる代表的な技法が2つあります。

Few-shot は、入力例と出力例の組を数件プロンプトに含めて、期待する形式や判断の傾向を示す手法です。効果は高いのですが、どの例を選ぶかで結果が大きく変わります。「即日」が明らかな例だけを並べると、即日か3日以内かが微妙な依頼の判定が不安定になります。明確な緊急例、明確な通常例、判断が分かれる境界例をバランスよく入れることが重要です。

この弱点を補う実務的な方法が 「例からルールを抽出する」 やり方です。例をそのまま並べるのではなく、まず AI にベテラン担当者が判定した依頼を十数件分析させて「どういう基準で判断しているか」を言葉にさせます。それを人(ベテラン担当者)が確認し、「冬場の給湯器停止は高齢者世帯でなくても即日にする」「水漏れは階下への影響があれば症状が軽くても即日」といった修正を加え、整理されたルールをシステムプロンプトに組み込みます。個別の例に依存しなくなるので、未知のパターンに強くなります。Few-shot の例は補助として3件程度(緊急・通常・境界)を添える形です。

Chain-of-Thought は、AI に考える手順を段階的に踏ませる手法です。「まず設備の種類を特定し、次に症状を抽出し、入居者が確認済みの事項を除外し、生活への影響と二次被害の可能性から緊急度を決める」と順序を明示します。人が複雑な問題を暗算より紙に書いて解く方が正確なのと同じ原理です。ただし段階が増えるほどトークンが増えるので、複数の判断を組み合わせる処理に限って使い、コストと精度のバランスを取ります。

領域2 I/O 設計:出力を機械が読める形にする

AI が「給湯器の故障の可能性が高く、お湯が使えないので早めの対応がよいと思います。業者は A 社か B 社が…」と文章で返してきたらどうなるでしょう。人が読むには十分ですが、業者の手配システムに緊急度を自動登録しようとすると、文章から「即日」にあたる言葉を探す処理が要ります。次の依頼で「できれば早め」と返されたら、どの段階に入れるかでシステムが止まります。

だから出力は あらかじめ決めた形式 で返させます。代表が JSON で、「urgency: 即日」「equipment: 給湯器」のように項目名と値の対応で書くデータ形式です。

スキーマは JSON の設計図です。どの項目を含めるか、各項目は文字列か数値か真偽値か、どれが必須か、値の範囲はどこまで許すか(緊急度は3つの値のいずれか、など)を事前に決めます。スキーマがあれば、出力が期待どおりの形かを自動で確認できます。この確認を バリデーションと呼び、必須項目が欠けている、決めた3つ以外の値が入っている、といった不整合が見つかったら、AI に再生成を求めるか人に引き継ぐ、という対応まで設計しておきます。

修繕依頼の出力例では、症状ごとの読み取り結果を配列にして根拠を項目別に示し、AI の確信度(confidence)のフィールドを設けて低いときは自動で担当者の確認に回し、公平性チェックの合否フラグを持たせて後続の処理で参照できるようにします。

領域3 セキュリティ設計:入口と出口の二重の制御

セキュリティ設計は、「AI に何を見せるか」と「AI に何を出させるか」の両方を管理します。

公平性の確保は、入口と出口の両方で対策します。試験では「プロンプトの指示のみ」「JSON に属性のフィールドを追加」「属性に基づく判定の『正しい例』を Few-shot に入れる」が誤答として並びます。設計時に入れて終わりではなく、運用後も同じ症状で属性だけ変えた模擬依頼を定期的に入力し、判定が変わらないかを監視し続けます。

ストラテジストは Design で何をするか

3領域の技術的な実装はアーキテクトの仕事です。ストラテジストの役割は、Definition で決めた業務要件が設計に正しく反映されているかを確認することです。「ペルソナ B の『症状の詳細を添えてほしい』は I/O 設計の JSON スキーマに入っているか」「制約条件の属性の不使用はアクセス制御に落とされているか」をレビューします。

試験で問われる観点

この節の練習問題(4問)

答えを見る前に選んでから開いてください。同じ問題は章別演習でランダム出題されます。

  1. 問1
    採用書類のスクリーニングAIについて、AIに送信する前に応募者の氏名・性別・年齢をマスキングする前処理を設計した。この設計はDesignの3領域のどれに該当するか、最も適切なものはどれか。
    1. 1セキュリティ設計。AIエージェントに何を見せるかを制限するアクセス制御にあたる
    2. 2コンテキスト設計。システムプロンプトに渡す情報の構成を決める作業にあたる
    3. 3I/O設計。AIエージェントとやり取りするデータの形式と構造を定める作業にあたる
    4. 43領域すべてに該当し、どの領域の設計書にも同じ内容を記載する必要がある
    答えと解説

    正解: 1

    Designにはコンテキスト設計(システムプロンプト、Few-shot、Chain-of-Thoughtなどの指示の設計)、I/O設計(入力と出力の形式、JSONスキーマ、バリデーション)、セキュリティ設計(何を見せて何を出させるか)の3領域があります。入力データのマスキングはAIが参照できる範囲を制限するアクセス制御で、セキュリティ設計に属します。出力側の制限はガードレールと呼び、両面で制御する二重の考え方が重要です。

  2. 問2
    採用スクリーニングAIの出力に「応募者は男性なので、リーダーシップがあると推定される」という評価コメントが含まれていた。この問題を防ぐDesign上の対策として最も適切な組み合わせはどれか。
    1. 1Few-shotの例に性別を考慮した評価の正しい書き方を追加し、AIが適切に性別を扱えるように学習させる
    2. 2入力側で性別情報をマスキングするアクセス制御と、出力側で性別に基づく表現を自動検出して遮断・再生成させるガードレールの両方を設ける
    3. 3システムプロンプトに「性別に基づく評価を禁止する」と明記する指示だけで対処し、入力と出力の制御は設けない
    4. 4I/O設計でJSONスキーマに性別のフィールドを追加し、評価に用いた属性を記録できるようにして透明性を高める
    答えと解説

    正解: 2

    バイアス防止には入口と出口の両方の対策が必要です。入口側のアクセス制御として性別などの属性をそもそもAIに見せず、出口側のガードレールとして属性に基づく表現を自動検出して再生成を求めます。プロンプトの指示だけでは完全には排除できず、性別フィールドの追加はバイアスを助長し、性別に基づく評価に「正しい例」は存在しません。運用後も属性だけを変えた模擬書類で偏りを継続的に監視します。

  3. 問3
    コンテキスト設計におけるFew-shotプロンプトの注意点と、その弱点を補う方法の説明として最も適切なものはどれか。
    1. 1Few-shotは例をそのまま載せる手法なので、例から判断ルールを抽出して言語化する作業は不要であり、ルール化はかえって未知のケースへの対応力を下げる
    2. 2Few-shotとChain-of-Thoughtは同じ手法の別名であり、どちらか一方を使えば推論の段階指定と出力例の提示の両方が同時に実現される
    3. 3与える例に偏りがあると出力パターンも偏るため、明確な合格例・不合格例・境界事例をバランスよく含め、さらに例から判断ルールを抽出して人間が確認したうえでシステムプロンプトに組み込む
    4. 4例は多いほど精度が上がるため、合格例だけを可能な限り多く並べて出力パターンを強く固定し、境界事例は判断がぶれる原因になるので含めない
    答えと解説

    正解: 3

    Few-shotは入力例と出力例の組み合わせで期待する出力の形式や判断傾向を示す手法ですが、偏った例だけを並べると似たケースにしか対応できなくなります。合格・不合格・境界事例をバランスよく含め、さらに複数の例をAIに分析させて判断基準を言語化させ、人間が確認・修正したルールをシステムプロンプトに組み込むと、個別の例に依存せず幅広いケースに適用できます。Chain-of-Thoughtは思考過程を段階的に出力させる別の手法です。

  4. 問4
    AIエージェントの出力を後続のシステムに渡す際のI/O設計として、最も適切なものはどれか。
    1. 1出力は人間が読みやすい自然言語の文章のままにし、後続のシステムが文章の中から必要な数値や判定を探し出して登録するようにすることで、AIの表現力を損なわない
    2. 2出力の形式はAIに任せて毎回自由に生成させ、形式が変わった場合は後続のシステム側を都度改修して対応することで、AIの出力を制約しない設計にする
    3. 3出力の形式はJSONに定めるが、バリデーションは処理速度を下げるため設けず、項目の欠落や値の不整合があっても後続の処理にそのまま流して後で人が修正する
    4. 4出力をJSONなどの決まった形式に統一し、含める項目・型・必須項目・値の範囲をスキーマとして定め、形式に合わない出力はバリデーションで検出して再生成や人間への引き継ぎを行う
    答えと解説

    正解: 4

    自然言語のままの出力は、後続の処理で数値や判定を取り出す際に「85点くらい」のような曖昧な表現でシステムが止まる原因になります。JSONのように項目名と値を対応させた形式で返させ、その構造をスキーマとして事前に定めます。スキーマがあれば出力が期待どおりかを自動で確認するバリデーションができ、不整合があれば再生成を求めるか人間へ引き継ぐ対応をあらかじめ設計しておきます。