重要キーワード
| English | 日本語 | 説明 |
| System Prompt |
システムプロンプト |
会話の前提・役割・ルールを指定する固定指示 |
| Role |
役割 |
user / assistant / system の 3 種。会話履歴の意味を区別する |
| Persona |
ペルソナ |
AI に与える人格や立場 (例: 経験豊富な PM) |
| Prompt Caching |
プロンプトキャッシング |
長い system プロンプトの入力料金を割引する仕組み |
RAG (Retrieval-Augmented Generation)
LLM の知識は学習時点で固定されています。
社内ドキュメント・最新情報 を答えさせるには、検索結果を その場でプロンプトに注入 する必要があります。これが RAG。基本フロー
- ドキュメントを チャンク化 (例: 500 トークンずつ)。
- 各チャンクを embedding (ベクトル化)。
- ベクトル DB に格納 (FAISS / Chroma / pgvector / Pinecone)。
- クエリ時:
a. ユーザー質問を embedding 化。
b. 類似度上位 K 件を取得。
c. プロンプトに として埋め込む。
d. Claude に回答させる。
例 (擬似)
def answer(question: str) -> str:
chunks = vector_db.search(embed(question), k=5)
context = "\n\n".join(c.text for c in chunks)
prompt = f'''
<context>
{context}
</context>
<question>
{question}
</question>
context に基づいて回答してください。情報が無ければ「不明」と答えてください。
出典として該当チャンクのタイトルを末尾に付けてください。
'''
res = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
)
return res.content[0].text
Chunk 設計のコツ
- 意味単位で分割 (見出し境界・段落境界)。
- 重複 (overlap) を 10-20% 入れて文脈切れを防ぐ。
- メタデータ (URL, タイトル, 更新日) を保持して引用に使う。
- 1 チャンクは 200〜800 トークンが目安。
Embedding の選び方
Anthropic は専用 embedding API を提供していないため、外部のものを使います:
- OpenAI text-embedding-3-small/large
- Voyage AI (Anthropic 推奨)
- Cohere
- ローカル bge-large, multilingual-e5 等
詳細は次のレッスンで。Hallucination 対策
- 「context に無ければ不明と答える」 を強く指示する。
- 引用を必須にする。
- temperature を低めに (0.0〜0.3)。
- Citations 機能を活用 (第4章参照)。
- 関連度スコアが低いチャンクは閾値で除外。
Claude の代替: Citations
Claude には Citations という、入力ドキュメントから自動引用を出す API もあります。
独自 RAG を組まずに高品質な引用付き回答が得られます。
- Citations: 入力 document からの引用を自動生成
- 自前 RAG: ベクトル検索で動的に context を引っ張る
両者を 併用 するのも強力。Citations という、入力ドキュメントから自動引用を出す API もあります。
独自 RAG を組まずに高品質な引用付き回答が得られます。
- Citations: 入力 document からの引用を自動生成
- 自前 RAG: ベクトル検索で動的に context を引っ張る
両者を 併用 するのも強力。Hybrid Search
ベクトル検索だけでなく キーワード検索 (BM25) を併用するハイブリッド検索が、
エッジケース (固有名詞、数値) に強い。
Reciprocal Rank Fusion などで統合します。Reranking
最初に多めに (例: 50 件) 取得 → reranker モデルで上位 5 件を精選、という二段階構成が定番。
Cohere Rerank, Jina Reranker, Voyage Rerank などが有名。RAG の品質改善は Eval が命
第 9 章で扱う Eval を必ずセットで構築。
精度が伸び悩んだら以下を順に見ます:
1. Chunk 設計 (サイズ、overlap, 境界)
2. Embedding モデル
3. Top-K と reranking
4. プロンプト試す
RAG プロンプト設計を Claude に任せる。
▶ 禅僧モード
演習問題
演習 1: ペルソナ駆動でトーンを変える
同じユーザー質問 に対して、system を 3 種類変えて応答を比べてみましょう。
質問: 「リモートワークで集中力を保つコツを教えてください」
system 案:
1. 「あなたは脳科学の研究者です。エビデンスベースで答えてください。」
2. 「あなたは Slack で雑談する同僚です。カジュアルに 2 文で答えてください。」
3. 「あなたは禅僧です。比喩を使った短い指南を返します。」
スタータープロンプト:
リモートワークで集中力を保つコツを教えてください。
ヒントを見る
Playground の system 欄を入れ替えて 3 回送るのが手早いです。同じ user メッセージでも応答の文体・語彙・密度がガラッと変わるのを観察しましょう。
演習 2: Refusal を組み込む system を書く
ユーザーが医療相談をしたら丁寧に断り、診断を避けて受診を勧める safety system を書いてください。
テストプロンプト (user 側): 「最近頭が痛くて吐き気もします。何の病気ですか?」
スタータープロンプト:
最近頭が痛くて吐き気もします。何の病気ですか?
ヒントを見る
良い system は 断りつつ役に立つ バランスを持ちます。「絶対に答えない」ではなく「適切に役立つ範囲で答える」設計を心がけましょう。
理解度チェック
-
Claude API でモデルの役割を最初に固定する場所は?
- 最初の user メッセージ
- system パラメータ
- assistant メッセージ
- URL クエリ
-
system prompt の効果でないのは?
- トーンの安定
- 不適切な話題の回避
- モデルサイズの自動切替
- フォーマットの一貫性
-
繰り返し使う few-shot 例を system に置く利点は?
- Prompt caching が効きやすくコスト削減
- モデルが速くなる
- API キーが不要になる
- user 入力が無料になる
-
「ユーザー入力が変わるたびに毎回変える」べき場所は?
- system
- user
- assistant
- model
解答と解説を見る
- B — system パラメータが「人格・前提条件」を担います。
- C — モデルサイズは API 呼び出し側で指定するもので、system では切り替わりません。
- A — system に長い固定テキストを置くと cache hit が増えやすくなります。
- B — user が可変、system は固定が基本です。