Claudeで毎回違う回答が出るのはなぜか?一貫した出力を得る方法を解説

結論:Claudeの回答がばらつく原因は「温度パラメータ」と「プロンプトの曖昧さ」
Claudeで同じ質問を複数回すると毎回違う回答が返ってくる——これは不具合ではなく設計上の仕様です。原因は主に2つあります。
| 原因 | 内容 | 対策 |
|---|---|---|
| 温度パラメータ(Temperature) | AIが次の単語を選ぶときに確率的なランダム性が加わる | APIでtemperatureを下げる |
| プロンプトの曖昧さ | 「良い感じに」「適切に」などの指示はClaudeが毎回違う解釈をする | 出力形式・条件を具体的に指定する |
claude.ai(Web版)では温度パラメータをユーザーが直接調整できませんが、プロンプトの書き方を変えるだけで一貫性は大幅に改善できます。APIを使う場合はtemperatureを0に設定することで決定論的な(ほぼ固定の)出力も得られます。



なぜ同じ質問で毎回違う回答が出るのか
温度パラメータの仕組み
大規模言語モデルは文章を生成するとき、「次にどの単語が来るか」を確率分布で計算しています。温度パラメータ(Temperature)はその確率分布のばらつきを制御します。
- Temperature = 0:常に最も確率の高い単語を選ぶ。出力がほぼ固定される(決定論的)
- Temperature = 1:確率分布に従ってランダムに選ぶ。多様な表現が出やすい
- Temperature = 2:確率の低い単語も選ばれやすくなる。創造的だが支離滅裂になりやすい
Claudeのデフォルト設定はTemperature=1(またはそれに近い値)です。そのため、同じ質問でも毎回少しずつ違う単語の選び方をして、結果的に回答の表現・構成・強調点が変わります。
プロンプトの曖昧さが引き起こすばらつき
温度パラメータとは別に、プロンプトが曖昧だと毎回Claudeが違う解釈をするという問題もあります。
例えば「この商品の特徴を教えて」という指示は:
- ある回答では機能面を5点箇条書きにする
- 別の回答では価格・品質・デザインを段落形式で説明する
- また別の回答では競合との比較を中心に述べる
どれも「特徴を教える」という意味では正しいため、Claudeはその都度異なる切り口を選びます。プロンプトを具体的にすることでこのばらつきを大幅に減らせます。

claude.aiで一貫した出力を得るプロンプトの書き方
出力形式を明示する
最も効果が高いのは、出力フォーマットを具体的に指定することです。
曖昧な指示:
この商品の特徴を説明してください。
一貫性の高い指示:
この商品の特徴を以下の形式で3点書いてください。
・[特徴名]:[30字以内の説明]
・[特徴名]:[30字以内の説明]
・[特徴名]:[30字以内の説明]
出力フォーマットが固定されていると、Claudeが選べる表現の幅が狭まり、回答のブレが小さくなります。
条件・制約を数値で指定する
「詳しく」「簡潔に」「わかりやすく」という曖昧な指示は毎回違う解釈が生まれます。数値で制約を与えると安定します。
- 「詳しく」→「500字以上で」
- 「簡潔に」→「100字以内で」「3行以内で」
- 「ポイントをまとめて」→「箇条書き5点で」
- 「わかりやすく」→「小学生でも理解できる言葉で」
出力例(Few-shot)を1〜2個添付する
Claudeに「こういう形式で出してほしい」という例を見せると、回答のパターンが固定されやすくなります。これをFew-shotプロンプティングと呼びます。
以下の形式で商品説明を書いてください。
【例】
商品名:〇〇コーヒー
特徴:深煎りの豆を使用した濃厚な風味。
対象:コーヒー好きな大人向け。
価格帯:1,000〜2,000円。
【本番】
商品名:△△コーヒー
特徴:
対象:
価格帯:
例のフォーマットをClaudeが参照するため、出力の構造が安定します。



APIを使う場合:temperature設定で安定させる
temperatureの設定方法
Anthropic APIを直接使う場合、temperatureパラメータでランダム性を制御できます。
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
temperature=0, # 0で最も安定した出力
messages=[
{"role": "user", "content": "この商品の特徴を3点で教えてください。"}
]
)
print(message.content[0].text)
temperature=0に設定すると、同じプロンプトに対してほぼ同じ出力が返ってきます。ただし「ほぼ」であって「完全に」ではありません。モデルの内部計算の都合上、temperature=0でも微細なばらつきが生じる場合があります。
用途別のtemperature推奨値
| 用途 | 推奨temperature | 理由 |
|---|---|---|
| データ抽出・分類・構造化 | 0〜0.2 | 同じ入力に同じ出力が必要 |
| 要約・翻訳・コード生成 | 0.2〜0.5 | 品質安定が優先 |
| ビジネス文書・説明文 | 0.5〜0.8 | 適度な多様性があっても良い |
| ブレスト・アイデア出し | 0.8〜1.0 | 多様な発想が欲しい |
| 創作・詩・フィクション | 1.0 | 豊かな表現の多様性を重視 |

構造化出力(JSON形式)で安定させる
JSON形式を指定するとばらつきが激減する
JSON形式での出力を指定するのは、一貫性を高める最も強力な方法の一つです。JSONはスキーマ(構造定義)に従って出力されるため、表現の揺らぎが構造レベルで排除されます。
以下のJSON形式で商品情報を返してください。
{
"name": "商品名",
"features": ["特徴1", "特徴2", "特徴3"],
"target": "対象ユーザー",
"price_range": "価格帯"
}
商品:〇〇ウォーターボトル(保温・保冷対応、500ml、ステンレス製)
このようにスキーマを提示すると、Claudeは指定された構造に従って出力します。フィールドが固定されているため、何度実行しても同じキー・同じ構造で返ってきます。

まとめ:一貫した出力を得るための優先順位
- 出力フォーマットを固定する(箇条書きX点・JSON・表など)→ 最も手軽で効果大
- 条件を数値で指定する(字数・項目数など)→ 曖昧な指示をなくす
- 例(Few-shot)を添付する→ 文体・構造を固定したいときに有効
- APIでtemperature=0〜0.3に設定する→ システム的に安定させたいとき
claude.aiを使う場合は①〜③だけでも大きな改善が見込めます。毎回バラバラな回答に悩んでいるなら、まずプロンプトに出力フォーマットを1行追加するところから試してみてください。
プロンプトの書き方全般については「プロンプトエンジニアリング入門」も参考にしてください。
