第3章 出力を安定させる設計

なぜ出力は不安定になるのか

生成AIを使っていて、次のような経験は珍しくない。

  • 昨日は良かったが、今日は結果が違う
  • 同じ入力なのに表現や粒度が揺れる
  • 一部だけ要件を満たしていない
  • 「それっぽいが使えない」回答が混ざる

これらの原因の多くは、モデルの性能ではなく、設計の曖昧さにある。

生成AIは確率的に出力を生成するため、設計が曖昧であればあるほど「揺れ」は表面化しやすくなる。

本章では、この揺れを抑え、実務で使える安定した出力を得るための設計パターンを整理する。

パターン1:出力フォーマットを先に固定する

もっとも効果が高く、かつ見落とされがちな手法が出力形式の固定である。

多くの不安定さは、

  • 文章で返すのか
  • 箇条書きなのか
  • 表なのか
  • 構造化データなのか

が曖昧なまま生成を行うことで発生する。

そのため設計時には、

  • 見出し構成
  • 箇条書きの粒度
  • JSONキーの構造
  • 表の列定義

などを先に提示する。

出力を「自由に書かせる」のではなく、はめる枠を用意することで、揺れは大きく減少する。

❌ こうするよりも

「AI活用について説明してください。」

→ 文章量・構成・粒度が毎回変わる
→ 箇条書きになることもあれば長文になることもある

✅ こうした方が良い

「以下の形式で出力してください。

【見出し】
概要(200字以内)
メリット(箇条書き3点)
注意点(箇条書き2点)」

→ 出力の構造が安定する
→ 比較・再利用・検証が容易になる

パターン2:評価基準を言語化する

AIは「何が良い結果か」を暗黙的には理解できない。

そのため、設計段階で次のような評価基準を明示することが有効である。

  • 正確性を重視するのか
  • 網羅性を重視するのか
  • 簡潔さを重視するのか
  • 実装可能性を重視するのか

これを指定しない場合、AIは文脈ごとに判断基準を変えてしまう。

評価基準は「厳密なルール」である必要はなく、判断の方向性を固定するための軸として機能すればよい。

❌ こうするよりも

「このサービスを評価してください。」

→ ポジティブ寄りになるか批評寄りになるかが不安定
→ 評価軸が曖昧

✅ こうした方が良い

「実装可能性とコスト観点を重視して評価してください。感想ではなく、具体的な実行可否の観点で述べてください。」

→ 評価の方向性が固定される
→ 感想文になりにくい

パターン3:ステップ分割による安定化

複雑なタスクを一度に依頼すると、出力は不安定になりやすい。

そのため、

  1. 情報整理
  2. 方針決定
  3. 出力生成

のように思考プロセスを分割する設計が有効である。

これは「思考を見せる」ことが目的ではなく、判断工程を明示的に分けることでミスを減らすための手法である。

結果として、

  • 抜け漏れが減る
  • 論理の飛躍が減る
  • 出力の一貫性が高まる

といった効果が得られる。

❌ こうするよりも

「新規SaaS事業の企画を考えてください。」

→ アイデアが飛躍しやすい
→ 論理構造が安定しない

✅ こうした方が良い

「以下の順番で出力してください。

Step1:市場課題の整理
Step2:ターゲット定義
Step3:提供価値の整理
Step4:収益モデル」

→ 思考が整理される
→ 抜け漏れが減る

パターン4:入力データと指示文を分離する

設計上の重要なポイントとして、

  • 指示(Instruction)
  • 入力データ(Input)

を明確に分離することが挙げられる。これらが混在すると、

  • どこまでが条件なのか
  • どこからが素材なのか

をAIが誤解しやすくなる。そのため、

  • 指示は固定テンプレート
  • 入力は差し替え可能なデータ

として設計することで、再利用性と安定性の両方が向上する。これはAPI設計やバッチ処理との相性も良い。

といった効果が得られる。

❌ こうするよりも

「この文章を初心者向けにわかりやすくまとめてください。
文章:〇〇〇〇〇(本文)」

→ 指示と素材の境界が曖昧
→ 条件が本文に混ざることがある

✅ こうした方が良い

「【指示】
以下の文章を初心者向けに300字以内で要約してください。

【入力文章】
〇〇〇〇〇」

→ テンプレート化しやすい
→ API実装時にも安定する

パターン5:禁止事項を明示する

AIは「やってはいけないこと」を指定されない限り考慮しない。

そのため、実務では次のような禁止事項の明示が重要になる。

  • 推測しない
  • 架空の情報を作らない
  • 外部リンクを出さない
  • 結論を断定しない

禁止事項はネガティブに見えるが、実際には品質を安定させるための重要な制約である。

として設計することで、再利用性と安定性の両方が向上する。これはAPI設計やバッチ処理との相性も良い。

といった効果が得られる。

❌ こうするよりも

「この歴史事件について解説してください。」

→ 推測・創作・断定が混ざる可能性

✅ こうした方が良い

「事実として確認されている内容のみを解説してください。推測や評価は含めないでください。」

→ ハルシネーションの抑制
→ 実務利用しやすい出力になる

パターン6:テンプレート化による再現性確保

安定した設計は、一度きりで終わらせないことが重要である。

有効だった設計は、

  • テンプレートとして保存
  • チームで共有
  • 文書化・コード化

することで、属人性を排除できる。

テンプレート化の目的は、

  • 楽をすること
  • 手抜きをすること

ではなく、品質を再現することにある。

❌ こうするよりも

毎回その場で指示を書き直す

→ 表現が揺れる
→ チーム内で品質が統一されない

✅ こうした方が良い

「以下のテンプレートを使用する:

【目的】
【役割】
【制約】
【入力】
【出力形式】
【禁止事項】」

→ チーム共有が可能
→ 品質が標準化される
→ 属人性が減る

不安定さを完全に消そうとしない

重要な注意点として、生成AIの出力を完全に固定しようとすることは現実的ではない。

むしろ目指すべきは、

  • 許容できる揺れを定義する
  • 危険な揺れを抑制する
  • チェック工程を前提にする

という設計である。

生成AIは決定論的なプログラムではなく、協調する相手として扱う方が、結果的に安定した運用につながる。


最終更新日:2026年02月16日 07時59分11秒