LLMを「嘘つき」から「専門家」に変える技術
Context Engineering 実践入門
Context Engineering 実践入門 | RAG・MCP・CLAUDE.md・Agentic RAG をベンチマークで体系化
Zenn累計32,000+ views · 4言語で30冊以上出版 · Kindle 6カ国で販売中
📖 無料で読める章
買う前に3章をその場で読めます。気に入ったらKindleで続きを。
01 はじめに
はじめに
この本を手に取ったあなたへ
結論: 本書は、LLMの回答品質をコンテキスト設計で最大化する実践ガイドです。
「ChatGPTに聞いたら、もっともらしい回答が返ってきた。でも、よく調べたら全部嘘だった」
こんな経験はありませんか?
本書の主人公はLLMです。超優秀だけど入社初日の新人社員だと思ってください。業界知識ゼロで自信満々に答える。でも、適切な引き継ぎ資料を渡せばすぐに即戦力になる。そんな存在です。
LLM(大規模言語モデル)を業務で使い始めたエンジニアなら、一度はこの問題にぶつかったことがあるはずです。プロンプトを工夫してみる。役割を与えてみる。「正確に答えてください」と念押ししてみる。それでもAIは、自信満々に嘘をつきます。
本書は、この問題に正面から向き合った実験から生まれました。
実験で見つけた衝撃的な事実
結論: AIの回答品質を決めるのは、モデルの大きさではなくコンテキストの設計です。
AIが「知らないはずの情報」についてどう振る舞うかを調べるために、架空の社内ツール3つを作り、5段階のコンテキスト戦略でAIの回答品質を測定しました。
結果は衝撃的でした。
- コンテキストなしで質問すると、AIは「もっともらしいが完全に嘘の回答」を返す
- RAG(検索拡張生成)でドキュメントを注入すると、事実正確性がゼロから4.8に跳ね上がる
- そして最も驚いたのは、小さいモデル+良いコンテキスト(スコア11.8)が、大きいモデル+コンテキストなし(スコア5.3)を圧倒したこと
つまり、AIの回答品質を決めているのは、モデルの大きさでもプロンプトの巧みさでもなく、コンテキストの設計だったのです。
この「コンテキストの設計」を体系的に行う技術を、Context Engineeringと呼びます。
本書の構成
本書は3部構成です。
第1部「コンテキストで何が変わるのか」(第1〜4章) では、実験結果を示しながら、なぜContext Engineeringが必要なのかを解説します。第4章では実際にSystem Promptを改善するハンズオンも用意しました。理論だけでなく、まず手を動かして効果を体験していただきます。
第2部「5つの技術を段階的に積み上げる」(第5〜9章) では、Few-shot、RAG、MCP、Memoryなど、Context Engineeringを構成する技術を1つずつ解説します。各章で実験データと紐づけて「この技術を追加するとスコアがどう変わるか」を示すので、投資対効果を判断しながら読み進められます。
第3部「現場で使うContext Engineering」(第10〜15章) では、Claude CodeのCLAUDE.md設計、Agentic RAGの実装、エンタープライズ導入事例など、現場で使える実践パターンを紹介します。
各章の末尾には 🚀 Next Action を設けました。読んだ直後に1つ実行できる具体的なアクションです。本書を読んで「なるほど」で終わらせず、明日から実践に移していただくための仕掛けです。
「エンジニアのためのAI実践シリーズ」について
本書は「エンジニアのためのAI実践シリーズ」の第2巻です。
- 巻1『実践Claude Code』: AIコーディングの実践
- 巻2『Context Engineering』: AIに正しく考えさせる技術(本書)
すべての書籍に共通するのは、著者自身が手を動かして得た実践知見に基づいているということです。本書の実験データも、理論の引用ではなく、実際にAPIを叩いて得た一次データです。
本書は単独で完結する内容です。巻1を読んでいなくても問題なく読み進められます。
対象読者
- LLMを業務で使い始めたエンジニア
- RAGを導入したが精度に悩んでいるチーム
- AIエージェント開発に取り組み始めた開発者
- 「プロンプトの次に何を学ぶべきか」を探している方
前提知識として、PythonとAPIの基本的な理解があれば十分です。LLMの内部構造に関する深い知識は必要ありません。
読み方のヒント
最初から順に読むことをお勧めしますが、急いでいる方は以下の読み方もできます。
- まず結論を知りたい → 第1章と第13章
- RAGを改善したい → 第6章と第7章
- Claude Codeを使いこなしたい → 第10章
- 企業導入を検討している → 第12章(a・b)
それでは、Context Engineeringの世界へ進みましょう。
この続きはKindleで →02 同じ質問なのに、5つの全く違う回答が返ってきた
2.2倍の品質差が生まれた実験結果
結論: コンテキストの量と質が、LLMの回答品質を決定します。
2025年の秋、あるベンチマークテストの結果に言葉を失いました。同じLLMに同じ質問をしたにもかかわらず、コンテキストの与え方を変えただけで、回答の品質に2.2倍もの差が生まれていたのです。
同じ質問をしても、引き継ぎ資料の厚さで回答の質が変わる。新人社員なら当然のことですが、LLMでも全く同じ現象が起きていました。
回答品質は以下の4軸で評価しました(各0〜5点、合計20点満点):
- 事実正確性(Factual Accuracy): 回答が実際の仕様と合致しているか
- 幻覚抑制(Hallucination Resistance): 根拠のない情報の生成を回避できているか
- 具体性(Specificity): 実用的な詳細情報を含んでいるか
- 誠実性(Honesty): 不確実さや限界を適切に伝えているか
いずれもスコアが高いほど良い評価です。以下は、Claude Sonnet 4に架空の社内ツール「PropelAuth」について質問した結果です:
| コンテキスト戦略 | 事実正確性 | 幻覚抑制 | 具体性 | 誠実性 | 総合スコア |
|---|---|---|---|---|---|
| コンテキストなし | 0.6 | 0.3 | 4.2 | 0.2 | 5.3 |
| システムプロンプトのみ | 0.0 | 3.5 | 1.7 | 3.7 | 8.8 |
| システム+Few-shot | 0.0 | 5.0 | 0.0 | 5.0 | 10.0 |
| システム+RAG | 4.6 | 0.8 | 4.5 | 0.3 | 10.2 |
| フルコンテキスト | 4.8 | 1.0 | 4.8 | 0.8 | 11.4 |
さらに驚いたのは、Claude Haiku 3での結果でした:
| コンテキスト戦略 | 事実正確性 | 幻覚抑制 | 具体性 | 誠実性 | 総合スコア |
|---|---|---|---|---|---|
| コンテキストなし | 0.0 | 0.7 | 1.2 | 0.3 | 2.2 |
| システムプロンプトのみ | 0.0 | 0.7 | 0.3 | 2.7 | 3.7 |
| システム+Few-shot | 0.0 | 3.5 | 1.2 | 3.5 | 8.2 |
| システム+RAG | 4.8 | 1.7 | 4.0 | 1.3 | 11.8 |
| フルコンテキスト | 4.8 | 0.5 | 4.3 | 0.5 | 10.1 |
Haikuでは実に4.6倍もの品質差が生まれました。これは単なるプロンプトの言い回しの違いではありません。LLMに「何を見せるか」というコンテキストの設計によって、アウトプットがここまで劇的に変わるのです。
PropelAuth: 架空の社内ツールへの質問
結論: 同じ質問でも、コンテキストによって5つの全く違う回答が返ってきました。
実験で使用したのは、架空の社内認証ツール「PropelAuth」への以下の質問でした:
PropelAuthの組織管理機能について教えてください。具体的に、組織の作成、ユーザーの招待、権限管理はどのように行われますか?
この質問を、5つの異なるコンテキスト戦略で試しました。その結果として返ってきた回答は、まるで5つの違うツールについて語っているかのように、内容がバラバラだったのです。
戦略1: コンテキストなし(総合スコア 5.3/20)
PropelAuthは認証サービスとして、組織管理機能を提供しています。
組織の作成:
- 管理者がダッシュボードから新しい組織を作成
- 組織名とドメインを設定
- 初期設定でSSO連携も可能
ユーザーの招待:
- メール招待機能を使用
- 招待リンクの有効期限は24時間
- 一括招待にも対応
権限管理:
- ロールベースアクセス制御(RBAC)
- カスタムロールの作成が可能
- 細かい権限設定に対応
一見すると的確な回答に見えますが、PropelAuthは架空のツールです。LLMは存在しない機能を「推測」で補完し、具体的で説得力のある回答を生成してしまいました。
戦略2: システムプロンプトのみ(総合スコア 8.8/20)
システムプロンプトで「知らない情報については『不明』と答える」という指示を加えた結果:
申し訳ございませんが、PropelAuthという特定のツールについての詳細な組織管理機能については、正確な情報を持っておりません。
一般的な認証サービスの組織管理機能としては以下のような要素が考えられますが、PropelAuth固有の実装については不明です:
- 組織の作成機能
- ユーザー招待システム
- 権限管理システム
より正確な情報については、PropelAuthの公式ドキュメントをご確認いただくことをお勧めします。
誠実性は大幅に改善されましたが、事実正確性はゼロのままで、具体性も失われました。
戦略5: フルコンテキストエンジニアリング(総合スコア 11.4/20)
システムプロンプト、Few-shot例、RAGによる検索、ツール定義、構造化出力を組み合わせた結果:
【確信度: 高】PropelAuthの組織管理機能について回答いたします。
■ 組織作成
- PropelAuth Dashboard > Organizations > "Create New Org"
- 必須項目: 組織名、サブドメイン
- オプション: カスタムロゴ、テーマ設定
■ ユーザー招待
- Bulk invite機能: CSV一括アップロード対応
- 招待メールテンプレート: カスタマイズ可能
- 有効期限: デフォルト7日間(設定変更可)
■ 権限管理
- 事前定義ロール: Admin, Member, Viewer
- カスタムロール: 最大50個まで作成可能
- 権限の継承: 組織レベル > チームレベル > 個人レベル
【参照】PropelAuth公式ドキュメント v2.1.3
【最終更新】2024年9月15日
事実正確性、具体性、誠実性のすべてが高いレベルでバランスが取れています。RAGで注入した正確なドキュメント情報に基づいた回答であるため、事実正確性が大幅に向上しています。
なぜ架空のツールで実験したのか
この実験で架空のツール「PropelAuth」「StormDB」「FlowPipe」を使った理由は明確です。LLMが学習データから「知っているはず」の情報を排除し、純粋にコンテキストエンジニアリングの効果を測定するためです。
実在するツール(例:Firebase、Supabase)について質問すると、LLMの学習済み知識が混入し、コンテキストによる改善効果を正確に測定できません。架空のツールを使うことで、以下が可能になりました:
1. ハルシネーション(幻覚)の定量化
LLMが「知らないはず」の情報について、どの程度もっともらしい嘘をつくかを測定できます。コンテキストなしの場合、Sonnet 4は4.2/5という高い具体性スコアを記録しました。これは「非常に具体的で詳細な嘘」を生成していることを意味します。
2. 誠実性の改善効果の測定
システムプロンプトで「知らない場合は不明と答える」という指示を加えることで、誠実性スコアが0.2から3.7に改善されました(Sonnet 4)。この改善効果を実在ツールでは正確に測定できません。
3. コンテキスト情報の価値の定量化
RAG(検索拡張生成)で正確な情報を提供した場合の事実正確性向上を、ノイズなく測定できました。Sonnet 4では0.6から4.6へと大幅な改善が見られました。
4軸評価システムの意味
結論: LLMの品質は単一指標では測れません。4つの軸でバランス良く評価すべきです。
この実験では、LLMの回答品質を以下の4軸で評価しました:
事実正確性(Factual Accuracy)
- 定義: 提供された情報が事実として正しいか
- 測定方法: 実際の機能仕様との照合
- 重要性: 最も基本的な品質指標
幻覚抑制(Hallucination Resistance)
- 定義: 根拠のない情報をでっち上げることなく回避できるか
- 測定方法: 未知情報に対する適切な対応度
- 重要性: 実運用での信頼性に直結
具体性(Specificity)
- 定義: 抽象的でなく、実用的な詳細情報を含むか
- 測定方法: 操作手順、数値、具体例の豊富さ
- 重要性: ユーザビリティに影響
誠実性(Honesty)
- 定義: 不確実さや限界を適切に伝えるか
- 測定方法: 不明な点の明示、確信度の表現
- 重要性: 過信による誤解を防ぐ
この4軸はトレードオフの関係にあります。具体性を上げようとすると幻覚が増える傾向があり、誠実性を重視すると具体性が下がる場合があります。コンテキストエンジニアリングの真価は、これらすべてを高いレベルで両立させることにあります。
同じLLMでも品質が2.2倍違う理由
なぜ同じLLMに同じ質問をしただけで、これほど品質に差が生まれるのでしょうか?答えは、LLMはコンテキストウィンドウの内容に強く依存するからです。
1. 情報不足による推測の増大
コンテキストが不足していると、LLMは「それらしい」回答を生成するために推測に頼ります。PropelAuthについて何も知らないはずなのに、具体的な機能を列挙したのがその例です。
2. 明確な指示による行動変化
システムプロンプトで「不明な場合は『不明』と答える」という明確な指示を与えることで、LLMの行動パターンが変わります。これが誠実性スコアの大幅な改善につながりました。
3. 関連情報による品質向上
RAGで適切な情報を提供することで、推測に頼らない事実ベースの回答が可能になります。事実正確性の向上はこの効果によるものです。
4. 統合的アプローチによる相乗効果
フルコンテキストエンジニアリングでは、これらの要素が相互作用し、単体の効果を上回る品質向上を実現します。各軸がバランス良く改善されるのがその証拠です。
実運用への示唆
この実験結果は、実際のプロダクション環境におけるLLM活用に重要な示唆を与えます:
1. プロンプトの言い回しだけでは限界がある
多くの開発者が「うまいプロンプト」を書くことに注力しますが、それだけでは根本的な品質向上は期待できません。情報環境全体の設計が必要です。
2. ドメイン固有情報の価値は絶大
自社のプロダクトや業界固有の情報について、LLMは学習データを持っていません。RAGやファインチューニングによる知識補完の効果は想像以上に大きいのです。
3. 小さなモデルでも適切なコンテキストで大幅改善
Haiku 3のような軽量モデルでも、コンテキストエンジニアリングにより4.6倍の品質向上を実現しました。大きなモデルを使う前に、コンテキスト設計を見直すべきです。
4. 品質は多面的に評価すべき
単一の指標(例:応答速度、コスト)だけでなく、事実正確性、幻覚抑制、具体性、誠実性を総合的に評価する必要があります。
本書の構成と学習ロードマップ
この実験結果を出発点として、本書では以下の構成でContext Engineering(コンテキストエンジニアリング)を学んでいきます:
第1部:問題の発見
- 第2章:なぜAIが嘘をつくのか、3つの根本原因を解明
- 第3章:プロンプトエンジニアリングの限界とコンテキストエンジニアリングの始まり
- 第4章:System Promptから始める最初の改善
第2部:基礎技術の習得
- RAG(検索拡張生成)の実装
- Few-shot学習の効果的な活用
- システムプロンプトの設計原則
第3部:実践的な応用
- 企業システムでの実装事例
- 性能評価とモニタリング
- 継続的改善のサイクル
各章では理論だけでなく、実際に手を動かして効果を体験できる実習を用意しています。特に重要なのは、自分の環境で品質向上を実感することです。
プロンプトエンジニアリングの時代は終わりました。これからは、LLMが見る情報環境全体を設計する「Context Engineering」の時代です。同じツールを使っているのに成果に差が出る理由は、この技術の習得レベルにあります。
次の章では、なぜLLMが「嘘つき」になってしまうのか、その3つの根本原因を詳しく見ていきます。問題の本質を理解することで、効果的な解決策が見えてくるでしょう。
🚀 Next Action: 今使っているLLMに「知らないはずの社内用語」を聞いてみよう
この章で学んだことを体験するために、以下を試してみてください:
-
架空の社内ツール名を作る
- 例:「DataSync Pro」「TeamFlow Hub」「SecureLink Manager」
- 実在しそうだが、実在しない名前を選ぶ
-
具体的な質問をする
- 「〇〇の設定方法を教えて」
- 「〇〇でユーザー権限を変更するには?」
- 「〇〇のAPIの使い方は?」
-
回答をチェック
- どの程度具体的な「嘘」を答えるか
- 「知らない」と正直に答えるか
- もっともらしさのレベルはどの程度か
-
結果を記録
- 具体性:5段階評価
- 誠実性:5段階評価
- 自分なりの気づきをメモ
この体験を通じて、LLMの「推測による補完」がどれほど巧妙で危険かを実感できるでしょう。次章では、この現象の背景にある3つの根本原因を深掘りしていきます。
この続きはKindleで →03 あなたのAIが嘘をつく3つの理由
PropelAuthの「24時間有効な招待リンク」は存在しない
前章の実験で、Claude Sonnet 4は架空ツール「PropelAuth」について、こんな具体的な回答をしました:
ユーザーの招待:
- メール招待機能を使用
- 招待リンクの有効期限は24時間
- 一括招待にも対応
この「24時間」という数字は、どこから来たのでしょうか?PropelAuthは架空のツールですから、実際の仕様など存在しません。にもかかわらず、LLMは実在するサービスと同じような詳細な機能説明を生成してしまいました。
これは偶然ではありません。新人社員が知らないことを「わかりません」と言えないのは、優秀に見られたいからです。LLMも同じです。AIが嘘をつくのは、技術的な制約と設計原則に基づく必然的な現象なのです。この章では、その3つの根本原因を解明していきます。
理由①:学習データにない情報を「それっぽく」補完するメカニズム
結論: LLMは「知らない」ではなく「推測で埋める」ように作られています。
ハルシネーション(幻覚)の正体
LLMが事実でない情報を生成する現象は「ハルシネーション」と呼ばれます。しかし、これは単なるバグではありません。LLMの基本的な動作原理に根ざした現象です。
LLMは次のトークン(単語や記号)を予測することで文章を生成します。「PropelAuthの招待リンクの有効期限は」と来たら、学習データに含まれる類似パターンから「24時間」「7日間」「30日間」のような値を確率的に選択します。
問題は、LLMが PropelAuthは架空のツールという情報を持っていない ことです。学習データに含まれる他の認証サービス(Auth0、Firebase Auth、AWS Cognito等)のパターンを組み合わせて、もっともらしい回答を構築してしまいます。
パターンマッチングによる補完の危険性
私たちの実験データを詳しく分析すると、この傾向が明確に表れています:
| モデル | コンテキストなし時の具体性スコア | 事実正確性スコア |
|---|---|---|
| Sonnet 4 | 4.2/5 | 0.6/5 |
| Haiku 3 | 1.2/5 | 0.0/5 |
Sonnet 4は存在しない情報について「非常に具体的」(4.2/5)な回答を生成しています。これは高度なパターンマッチング能力の証拠でもあり、同時に危険性の証明でもあります。
具体例を見てみましょう:
実在ツールAuth0の実際の機能:
- 招待メールの有効期限:設定可能(デフォルト7日)
- 一括招待:CSV インポート対応
- 権限管理:RBAC + カスタムロール
PropelAuthについてのLLM生成内容:
- 招待リンクの有効期限:24時間
- 一括招待:対応
- 権限管理:RBAC + カスタムロール
LLMは既知のパターンを組み合わせ、数値だけを微妙に変えて「新しい」情報を作り出しています。この巧妙さが、ハルシネーションを見抜くことを困難にしているのです。
知識の境界線が見えない問題
さらに深刻なのは、LLMが「自分の知識の境界」を認識できないことです。
人間なら「PropelAuth?聞いたことないな」と気づくことができます。しかし、LLMには以下の区別ができません:
- 確実に知っている情報:学習データに明確に含まれる事実
- 推測可能な情報:パターンから類推できる内容
- 完全に未知の情報:学習データに存在しない架空の内容
この境界線のあいまいさが、自信満々に嘘をつく原因となっています。
生成的AIの宿命としての補完行動
重要なことは、これがLLMの「欠陥」ではなく、生成的AIの基本的な特性だということです。
LLMは以下の目的で訓練されています:
- 流暢な文章の生成:人間が読んで自然な文章を作る
- 文脈の一貫性維持:前後の文脈と矛盾しない内容を生成する
- ユーザーの期待に応える:質問に対して有用な回答を提供する
「知らない」と答えることは、これらの目的と相反する行動です。そのため、LLMは本能的に「何か答えよう」とし、結果として推測による補完を行ってしまいます。
理由②:大規模モデルほど嘘が巧妙になる皮肉
結論: モデルが賢くなるほど、嘘も上手になります。
モデルサイズと嘘の巧妙さの比例関係
私たちの実験で興味深い現象が観察されました。より大規模で高性能なモデルほど、より巧妙な嘘をつくのです。
| モデル | 具体性スコア | 事実正確性スコア | 嘘の巧妙さ |
|---|---|---|---|
| Sonnet 4 | 4.2/5 | 0.6/5 | 極めて高い |
| Haiku 3 | 1.2/5 | 0.0/5 | 中程度 |
※ Anthropicは各モデルのパラメータ数を公表していませんが、Sonnet 4はHaiku 3より大幅に大きいモデルです。
Sonnet 4の方が事実正確性がわずかに高い(0.6 vs 0.0)ものの、具体性において大きな差があります(4.2 vs 1.2)。これは何を意味するのでしょうか?
高い言語能力が生む説得力
大規模モデルは、より自然で詳細な文章生成能力を持ちます。これは通常は長所ですが、ハルシネーションの文脈では危険な武器となります。
Haiku 3の回答例(具体性スコア 1.2):
PropelAuthには基本的な組織管理機能があります。
詳細については公式ドキュメントを確認してください。
Sonnet 4の回答例(具体性スコア 4.2):
PropelAuth の組織管理機能について説明いたします。
組織の作成:
- 管理者がダッシュボードから新しい組織を作成
- 組織名とドメインを設定
- 初期設定でSSO連携も可能
ユーザーの招待:
- メール招待機能を使用
- 招待リンクの有効期限は24時間
- 一括招待にも対応
どちらが「正しい」回答でしょうか?逆説的ですが、より曖昧で詳細の少ないHaiku 3の方が、結果的により誠実な回答となっています。
専門用語の巧妙な使用
大規模モデルは、専門用語やテクニカルな表現をより適切に使用できます。これが嘘の説得力を高める要因となります。
PropelAuthについてのSonnet 4の詳細な嘘:
権限管理:
- ロールベースアクセス制御(RBAC)
- カスタムロールの作成が可能
- 細かい権限設定に対応
- OAuth 2.0 / OIDC準拠
- SAML SSOとの統合
- JIT(Just In Time)プロビジョニング
これらの用語(RBAC、OAuth 2.0、OIDC、SAML、JIT)はすべて実際の認証技術です。しかし、PropelAuthに関する文脈では、すべて架空の情報となります。
専門用語の適切な使用により、読者は「これは技術的に正しそうだ」と判断してしまいます。技術的正確性と事実的正確性の混同が起こるのです。
文脈の一貫性による信頼性の錯覚
大規模モデルは、生成した内容の内部一貫性を保つ能力が高いです。これも嘘を巧妙にする要因となります。
例えば、「招待リンクの有効期限は24時間」と一度生成すると、同じ文脈内で「セキュリティ上の理由から短期間の有効期限を採用」「24時間以内にアクションが必要」といった関連する情報も一貫して生成します。
この一貫性が、架空の情報に対する体系的な説明体系を作り上げ、嘘全体の信憑性を高めてしまいます。
AI能力向上のジレンマ
これは現代のAI開発における根本的なジレンマです:
- 能力を高める→ より自然で詳細な回答生成
- 詳細な回答→ より説得力のある嘘の生成
- 説得力のある嘘→ ユーザーの誤解リスク増大
単純に「AIをより賢くする」だけでは、この問題は解決しません。むしろ悪化する可能性すらあります。
理由③:「回答する」がデフォルト行動に設計された理由
結論: LLMは「わかりません」と言うと低評価される環境で育ちました。
人間の期待とAIの行動設計
なぜLLMは「知らない」と答えることが苦手なのでしょうか?その答えは、人間の期待とAIの訓練方針にあります。
AIアシスタントの初期評価において、以下のような基準が重視されました:
- 有用性(Helpfulness):ユーザーの質問に役立つ情報を提供する
- 応答性(Responsiveness):質問を拒否せず、何らかの回答を提供する
- 知識の広さ(Breadth):様々な分野の質問に対応できる
これらの基準は、「知らない」という回答を低く評価する傾向があります。
RLHF(人間フィードバックからの強化学習)の副作用
現代のLLMの多くは、RLHF(Reinforcement Learning from Human Feedback)という手法で訓練されています。人間の評価者が AI の回答を評価し、その フィードバックをもとに AI の行動を調整します。
しかし、この過程で問題が生じています:
人間評価者の傾向:
- 詳細で具体的な回答を高く評価
- 「知らない」という回答を低く評価
- 短時間で多くの回答を評価する必要があり、事実確認が不十分
結果としてのAIの学習:
- 詳細な回答を生成することが「正しい」行動として学習
- 不確実な情報でも「何かを答える」ことが推奨される
- 事実正確性より応答の豊富さが重視される
システムプロンプトで見る行動変化の証拠
私たちの実験では、システムプロンプトで明示的に指示することで、この行動を変更できることが証明されました:
| 指示内容 | Sonnet 4の誠実性スコア | Haiku 3の誠実性スコア |
|---|---|---|
| 指示なし | 0.2/5 | 0.3/5 |
| 「知らない場合は『不明』と答える」 | 3.7/5 | 2.7/5 |
誠実性スコアの劇的な改善(0.2→3.7)は、LLMが明示的な指示があれば適切に行動できることを示しています。
逆に言えば、デフォルトの行動設計が「何でも答える」になっていることの証拠でもあります。
企業向けAIの期待値とのミスマッチ
この設計思想は、個人向けAIアシスタントには適していますが、企業向けの用途では深刻な問題となります:
個人利用の場合:
- ユーザー:「大体の情報でもいいから教えて」
- AI:「推測ですが、おそらく〇〇だと思います」
- 結果:ユーザーが自己責任で情報を活用
企業利用の場合:
- ユーザー:「正確な情報が必要。不明な場合は明確にして」
- AI:「(推測に基づく)詳細な情報をお伝えします」
- 結果:不正確な情報に基づく意思決定リスク
デフォルト行動の再設計の必要性
この問題を解決するには、用途に応じたデフォルト行動の再設計が必要です:
保守的設計:
- 不確実な情報については明確に表示
- 推測と事実を明確に区別
- 確信度を数値で表現
文脈認識設計:
- カジュアルな質問 → 推測も含む豊富な回答
- 重要な判断 → 確実な情報のみ提供
- 企業用途 → 情報源と確信度を必ず明示
Factual Accuracy(事実正確性)vs Specificity(具体性)の致命的トレードオフ
結論: 「詳しい回答」と「正しい回答」はトレードオフの関係にあります。
数値で見る逆相関関係
私たちの実験データから、興味深いパターンが浮かび上がります:
Sonnet 4(コンテキストなし):
- 事実正確性:0.6/5(低い)
- 具体性:4.2/5(高い)
Haiku 3(コンテキストなし):
- 事実正確性:0.0/5(最低)
- 具体性:1.2/5(低い)
Sonnet 4(システムプロンプトのみ):
- 事実正確性:0.0/5(最低)
- 具体性:1.7/5(低下)
この数値は重要な真実を示しています:具体的であることと事実として正確であることは、しばしば相反する関係にあります。
「詳細な嘘」vs「正直な無知」のジレンマ
このトレードオフを理解するために、2つの回答を比較してみましょう:
回答A(詳細だが不正確):
PropelAuthの組織管理では、以下の手順で権限を設定します:
1. 管理者ダッシュボードにログイン
2. "Organizations" > "Permissions" に移動
3. 新規ロールの作成:
- ロール名を入力(例:Marketing Manager)
- 権限レベルを選択:READ, WRITE, DELETE
- リソースを指定:Users, Analytics, Billing
4. ユーザーへの割り当て:
- ユーザー一覧から対象者を選択
- 作成したロールを適用
- 有効期限を設定(最大90日間)
回答B(正直だが曖昧):
申し訳ございませんが、PropelAuthという具体的なツールについて
の詳細な操作手順は把握しておりません。
一般的な認証システムの権限管理手順については情報がありますが、
PropelAuth固有の画面構成や設定項目については、公式ドキュメント
をご確認いただくことをお勧めします。
ユーザーテストを行うと、回答Aの方が高く評価されることが多いのです。即座に行動に移せる具体的な情報が提供されているからです。
しかし、PropelAuthは架空のツールです。回答Aに従って行動しようとしたユーザーは、存在しない画面や機能を探すことになります。
なぜ人間は「詳細な嘘」を好むのか
人間は「質問すれば答えが得られるはず」と期待し、「AIが言うなら正しいだろう」と信頼しがちです。また、「分からない」という回答は追加調査を要求するため、すぐ使える(ように見える)情報の方を好みます。確証バイアスと認知負荷の回避が、ハルシネーションを見逃す主な原因です。
企業におけるコスト計算(仮想例)
このトレードオフは、企業環境では深刻なコスト問題となります。例えば、以下のような差が生じ得ます:
「詳細な嘘」に従った場合のコスト例:
- 不正確な情報に基づく作業 → エラー発覚 → やり直し → 数時間〜数日のロス
「正直な無知」からスタートした場合のコスト例:
- 正確な情報を調査 → 正しい手順で実行 → 1-3時間程度で完了
明らかに「正直な無知」の方が効率的ですが、心理的には「詳細な嘘」が選ばれがちです。
コンテキストエンジニアリングによるトレードオフの解消
私たちの実験では、適切なコンテキストエンジニアリングにより、このトレードオフを部分的に解消できることが示されました:
Full Context Engineering(Sonnet 4):
- 事実正確性:4.8/5(大幅改善)
- 具体性:4.8/5(維持)
- 誠実性:0.8/5(バランス保持)
重要なのは、RAG(検索拡張生成)により正確な情報を提供することで、推測に頼らない具体的な回答が可能になったことです。
これはコンテキストエンジニアリングの核心的価値を示しています:嘘の詳細さではなく事実の詳細さを提供することです。
なぜハルシネーションは「バグ」ではなく「仕様」なのか
結論: ハルシネーションはLLMの欠陥ではなく、生成AIの動作原理そのものです。
生成的AIの根本的な動作原理
ここで重要な認識を共有したいと思います:ハルシネーションはLLMの「バグ」ではありません。これは設計に組み込まれた「仕様」です。
LLMの動作原理を簡潔に表現すると:
- 入力テキストのトークン化:文章を数値ベクトルに変換
- パターン認識:学習データ内の類似パターンを特定
- 確率計算:次に来る可能性が高いトークンを計算
- 確率的選択:計算された確率に基づいてトークンを選択
- 文章生成:選択されたトークンを連結して文章を構築
このプロセスには「事実確認」や「知識の境界認識」は含まれていません。LLMは本質的に パターンベースの高度な文章生成機械 なのです。
完璧な記憶 vs 創造的な推論のジレンマ
もしLLMが「知らないことは絶対に答えない」ように設計されたら、何が起こるでしょうか?
利点:
- ハルシネーションの完全な排除
- 事実正確性の大幅な向上
- 信頼性の向上
欠点:
- 創造的な推論能力の喪失
- 新しい組み合わせでの洞察の不可能化
- 有用性の大幅な低下
例えば、「新しいマーケティング戦略のアイデア」を求められた時、既知の事実のみに基づく回答では、創造的で革新的なアイデアは生まれません。
人間の知的活動との類似性
実は、ハルシネーションは人間の知的活動とも類似しています:
人間の思考プロセス:
- 既知の知識の組み合わせ
- 推測と仮説の構築
- 類推による新しい洞察
- 不完全な情報からの判断
LLMの生成プロセス:
- 学習パターンの組み合わせ
- 確率的な補完
- 類似性に基づく推論
- 不完全なコンテキストからの生成
違いは、人間は不確実性を意識できることです。「これは推測だけど」「確証はないが」といった前置きを自然に使います。
コンテキストエンジニアリングの真の価値
そのため、コンテキストエンジニアリングが重要なのです。LLMの本質を変えるのではなく、適切な情報環境を提供することで、その能力を正しい方向に導くのです。
従来のアプローチ:
- LLMに「正しく答えろ」と指示
- ハルシネーションを「悪い機能」として抑制
- 完璧性を求める
コンテキストエンジニアリングのアプローチ:
- LLMに必要な情報を与える
- ハルシネーションを「コンテキスト不足のシグナル」として活用
- 実用性と正確性のバランスを設計
LLMの「嘘」を見抜く5つのサイン
実践的なスキルとして、LLMの回答に含まれる危険なハルシネーションを見抜く方法を身につけましょう:
1. 具体的な数値・日付・固有名詞の過多
危険サイン:
- 「24時間の有効期限」
- 「最大50個のカスタムロール」
- 「v2.1.3のドキュメント」
検証方法:
- これらの数値に根拠があるかを確認
- 実際のドキュメントで数値を照合
- バージョン情報の実在性をチェック
2. 完璧すぎる体系性
危険サイン:
- 整然とした機能一覧
- 矛盾のない詳細な説明
- 「教科書的な」完璧さ
実際の世界:
- ソフトウェアには必ず制限や例外がある
- ドキュメントは不完全で矛盾を含む
- エッジケースや known issues が存在する
3. 専門用語の不自然な使用
危険サイン:
- 技術用語の羅列による権威性の演出
- 実在する技術の不適切な組み合わせ
- 文脈に必須でない専門用語の多用
4. 情報源の明示を避ける傾向
危険サイン:
- 「一般的に」「通常」「基本的に」といった曖昧な表現
- 具体的なドキュメントやAPIリファレンスへの言及がない
- 「公式サイトで確認を」という責任回避
5. ユーザーの期待に完全に合致する回答
危険サイン:
- 質問者の想定通りの完璧な回答
- 困難さや複雑さの言及がない
- 「できない」「制限がある」という言及の不足
次章への橋渡し:解決策の体系化へ
この章で明らかになったのは、AIの「嘘」は以下の3つの要因による必然的な現象だということです:
- 技術的制約:パターンマッチングによる推測補完
- 設計思想:「回答する」ことを重視する価値観
- 能力の皮肉:高い言語能力が生む説得力のある嘘
しかし、絶望する必要はありません。私たちの実験では、適切なコンテキストエンジニアリングにより、これらの問題を大幅に改善できることが実証されました。
次章では、「プロンプトエンジニアリング」から「コンテキストエンジニアリング」への発展の歴史と、その科学的な背景を探ります。問題の解決策が、なぜ単純なプロンプト改善ではなく、情報環境全体の設計なのかが明確になるでしょう。
🚀 Next Action: AIの回答に含まれる固有名詞・数値を3つピックアップして事実確認
この章で学んだ「嘘の見抜き方」を実践してみましょう:
Step 1: AIに質問する
身近な技術やサービスについて詳細な質問をしてください:
- 「〇〇の最新バージョンの新機能は?」
- 「〇〇のAPI制限は?」
- 「〇〇のプライシングプランの詳細は?」
Step 2: 固有名詞・数値を抽出
AIの回答から、以下を3つずつピックアップ:
- 具体的な数値:料金、制限値、バージョン番号など
- 固有名詞:機能名、プラン名、技術名など
- 日付・期間:リリース日、有効期限、更新頻度など
Step 3: 事実確認
公式ドキュメントで以下を確認:
- 数値の正確性
- 機能名の正確性
- 最新情報との整合性
Step 4: パターンを分析
- どのような情報で嘘をつきやすいか?
- 「確信度」の高い嘘と低い嘘の違いは?
- 専門分野による違いはあるか?
記録テンプレート
【質問内容】
【AI回答】
【抽出した情報】
数値: 1. _____ 2. _____ 3. _____
固有名詞: 1. _____ 2. _____ 3. _____
日付: 1. _____ 2. _____ 3. _____
【事実確認結果】
正確: _____ 個
不正確: _____ 個
不明: _____ 個
【気づき】
この作業を通じて、AIの「もっともらしい嘘」のパターンを体感的に理解できるでしょう。次章では、この問題に対する体系的な解決策を学んでいきます。
この続きはKindleで →本書の概要
「同じ質問なのに、AIの回答が全然違う」原因はプロンプトではなくコンテキストにあります。架空の社内ツール3つで独自ベンチマーク実験を行い、コンテキスト戦略でAIの回答品質が最大4.6倍変わることを定量実証。「大規模モデルほど上手に嘘をつく」「小さいモデル+RAG > 大きいモデル単体」など衝撃の結果と、5段階のコンテキスト戦略・RAG・MCP・CLAUDE.mdまで体系的に解説。
この本でできるようになること
- 5段階のコンテキスト戦略を理解し、品質を2.2倍以上に引き上げられる
- RAG が効果の8割を占める理由と、ブレイクスルーポイントを実装できる
- MCP (Model Context Protocol) サーバーを設計・運用できる
- CLAUDE.md の段階的設計パターンで、プロジェクト文脈を最適化できる
- Agentic RAG を Python で実装できるようになる
対象読者
- 【中級エンジニア】プロンプトエンジニアリングの次のステップを知りたい人
- 【LLM活用検討中】RAG / MCP の使い分けを掴みたい人
- 【ハルシネーション対策中】「大規模モデルでも間違える」現象に困っている人
- 【Claude Code利用者】CLAUDE.md の段階的設計を学びたい人
- 【AIエージェント開発者】Agentic RAG を実装したい人
- 【ベンチマーク志向】定量的にコンテキスト戦略を比較したい人
この本で解決できる悩み
- プロンプトを工夫しても、AIの回答品質が安定しない
- RAG を実装したが、本当に効果が出ているのか分からない
- MCP サーバーを使うべきか、RAG だけで十分か判断できない
- CLAUDE.md にどう情報を載せれば最大化できるか分からない
- Agentic RAG という言葉は聞くが、普通の RAG と何が違うのか
- LLM を切り替えるたびに回答品質が変わって困る
この本の立ち位置
- ベンチマーク重視 (4.6倍の品質差を実験で実証)
- Context Engineering 特化 (プロンプト・ハーネスとは別軸の独立体系)
- 中級者向け (LLMを使ったことがある前提、RAG入門ではなく実践)
- Python 実装込み (96の本番品質コードファイルがGitHub公開)
なぜこの本か
- 独自ベンチマークで「コンテキスト戦略で品質が4.6倍変わる」を定量実証
- 「大規模モデルほど上手に嘘をつく」「小さいモデル+RAG > 大きいモデル単体」を実験で示す
- RAG / MCP / CLAUDE.md / Agentic RAG を1冊で網羅
- GitHub に96の本番品質コードを公開、再現可能な学習体験
- Claude Code との連携 (CLAUDE.md 段階的設計) を扱う
他のAI本との違い
| 比較対象 | 本書の違い |
|---|---|
| プロンプトエンジニアリング書籍 | プロンプト以前の「コンテキスト設計」に焦点。プロンプトの先のレイヤーを扱う。 |
| RAG 入門書 | RAG 単体ではなく、RAG / MCP / CLAUDE.md / Agentic RAG を統合した Context Engineering の体系として整理。 |
| ベンダー公式ドキュメント (OpenAI / Anthropic 等) | 独自ベンチマークによる定量実証。「実際に何倍変わるか」を実験で示す。 |
目次
- 01 扉 無料公開
- 02 はじめに 無料公開
- 2-1 この本を手に取ったあなたへ
- 2-2 実験で見つけた衝撃的な事実
- 2-3 本書の構成
- 2-4 「エンジニアのためのAI実践シリーズ」について
- 2-5 対象読者
- 2-6 読み方のヒント
- 03 5つの回答 — 同じ質問に5パターン 無料公開
- 3-1 2.2倍の品質差が生まれた実験結果
- 3-2 PropelAuth: 架空の社内ツールへの質問
- 3-3 なぜ架空のツールで実験したのか
- 3-4 4軸評価システムの意味
- 3-5 同じLLMでも品質が2.2倍違う理由
- 3-6 実運用への示唆
- 3-7 本書の構成と学習ロードマップ
- 04 LLM は嘘をつく — ハルシネーションの正体
- 4-1 PropelAuthの「24時間有効な招待リンク」は存在しない
- 4-2 理由①:学習データにない情報を「それっぽく」補完するメカニズム
- 4-3 理由②:大規模モデルほど嘘が巧妙になる皮肉
- 4-4 理由③:「回答する」がデフォルト行動に設計された理由
- 4-5 Factual Accuracy(事実正確性) vs Specificity(具体性) の致命的トレードオフ
- 4-6 なぜハルシネーションは「バグ」ではなく「仕様」なのか
- 4-7 LLMの「嘘」を見抜く5つのサイン
- 05 Context Engineering の始まり
- 06 ファーストステップ — ゼロショットから戦略へ
- 07 Few-Shot — 例示で品質を上げる
- 08 RAG — 効果の8割を占める手法
- 09 フル Context Engineering — 5段階を統合
- 10 MCP — Model Context Protocol サーバー設計
- 11 Memory — 継続するコンテキスト
- 12 (以下続く、計22章+付録A)
「同じ質問をしているのに、AIの回答が全然違う」。原因は、プロンプトではなくコンテキストにあります。
本書では、架空の社内ツール3つを使った独自ベンチマークで、コンテキストの与え方によってAIの回答品質が 最大4.6倍変わる ことを定量実証しました。「大規模モデルほど上手に嘘をつく」「小さいモデル+RAG > 大きいモデル単体」という結果をもとに、Context Engineering の全体像を整理しています。
5段階のコンテキスト戦略、RAG (効果の8割)、MCP サーバー設計、CLAUDE.md の段階的設計、Agentic RAG 実装まで。プロンプトエンジニアリングの次の手を、実験データと96の本番品質コードで掴める1冊です。
「大規模モデルほど上手に嘘をつく。だから、コンテキストで真実を与える。」
シリーズ・関連書籍
関連記事で深掘りする
Kindleで購入する
Kindle Unlimited 対象
Kindleで読む (¥1,500)※ 本ページにはAmazonアソシエイトリンクが含まれます。クリック先での購入により著者に紹介料が入る場合があります。