Prompt設計 — AI口コミ生成
| 項目 | 内容 |
|---|---|
| ステータス | 🟡 検討中 |
| 関連 | AI口コミ生成 |
1. Prompt概要
1.1 Prompt一覧
| # | 名前 | 目的 | Model | Temperature | 呼び出し元 |
|---|---|---|---|---|---|
| 1 | generate_review | 最も星が高い項目からフル口コミを生成(1回呼び出し) | Sonnet 4 | 0.8 | 送信後の口コミ画面 |
| 2 | quality_check | 品質チェック(LLM部分) | Haiku 4.5 | 0.1 | 生成後 |
| 3 | regenerate_with_feedback | NG時の再生成 | Sonnet 4 | 0.9 | 品質チェックNG |
| 4 | regenerate_with_tone | tone変更時の再生成 | Sonnet 4 | 0.8 | ユーザーがtone変更 |
1.2 Prompt呼び出しフロー
2. 各Promptの詳細
2.1 Prompt #1 — generate_review
目的: 最も星が高い1つの評価項目のみから200-400文字のフル口コミを生成。1回だけ呼び出し、プレビュー段階なし。
Sonnetを使用する理由: 高品質で自然な日本語文章が必要。選択された項目の焦点を正しく反映する能力が求められる。
項目選択ロジック(LLM呼び出し前、バックエンドで処理):
- 星評価の質問の中から最も星が高い項目を取得
- 複数の項目が同じ最高星数の場合 → 元の質問順を優先(例:接客 → 清潔感 → 満足度、3項目とも★5なら接客を選択)
- 項目名 + 星数のみをプロンプトに送信。他のアンケート回答(残りの星評価項目、テキスト回答、Y/N回答)は送信しない → プロンプトが簡潔になり、AIが1つのトピックに集中、input tokenが約80%削減
入力変数
| 変数 | 型 | 例 |
|---|---|---|
top_item | object | { name: "接客", rating: 5 } |
tone | string | デフォルト 丁寧 |
shop_name | string | 銀座ヘアサロンA |
store_keywords | string | 丁寧な接客, 駅近, 清潔感 |
System Prompt
あなたは実際の顧客として口コミを書くアシスタントです。
指定された1つの高評価項目を中心に、完全な口コミ文を生成してください。
【トーン】{tone}
【トーン別の文体ガイド】
- 丁寧: 敬語を使用。「〜していただきました」「大変満足しております」。30〜50代の落ち着いた印象。
- カジュアル: 友人に話すような口調。「〜だった!」「めっちゃ良かった」。20〜30代の明るい印象。
- ビジネス: 客観的で簡潔。「サービスの質が高い」「費用対効果が良い」。ビジネスパーソンの印象。
【生成ルール】
1. 文字数: 200〜400文字
2. 焦点: 指定された1つの項目を中心に書く。他の話題に広げすぎない
3. 構成: 来店のきっかけ → 指定項目の体験詳細 → 感想・まとめ
4. キーワード: 指定キーワードを文脈に合わせて自然に1〜3個含める。無理に全て入れる必要はない
5. 自然さ: 以下を避ける
- 箇条書き形式
- 「まず」「次に」「最後に」のような明確な段落構成語
- 過度な褒め言葉の連続
- 全てのキーワードを機械的に詰め込む
- 「〜がおすすめです」のような宣伝口調
6. 人間らしさ: 小さな感想や個人的なエピソードを含めて、実体験感を出すHuman Prompt
以下の情報を元に、200〜400文字の完全な口コミ文を生成してください。
【店舗名】{shop_name}
【中心にする項目】{top_item.name}(★{top_item.rating})
【店舗キーワード】{store_keywords}
【トーン】{tone}最小限の入力: プロンプトには項目名 + 星数 + キーワード + トーンのみを含める。アンケート回答、他の星評価項目、テキスト/Y-N回答は送信しない。
LLMパラメータ
| パラメータ | 値 | 理由 |
|---|---|---|
| model | claude-sonnet-4-20250514 | 日本語品質が高い |
| temperature | 0.8 | 多様な文体を生成、繰り返し回避 |
| max_tokens | 800 | 400文字 (~600トークン) + 余裕 |
出力例
選択された項目: 接客 (★5)
初めて銀座ヘアサロンAを利用いたしました。スタッフの方がとても親切で、カウンセリングも丁寧に対応してくださり、初めてでも安心して任せられる雰囲気でした。髪の悩みをしっかり聞いた上で、似合うスタイルを提案してくださり、仕上がりも想像以上でした。駅から近く通いやすい立地も魅力で、次回もぜひお願いしたいと思います。
※ アンケートに他の項目があっても、口コミは「接客」1項目に焦点を絞っている
2.2 Prompt #2 — quality_check
目的: 生成された口コミの品質を評価。意味的な3つの基準のみチェック(残り2つはルールベースでチェック済み)。
Haikuを使用する理由: JSONスコアを返すだけで文章は不要。
System Prompt
あなたは口コミ文の品質を評価する審査員です。
厳密にJSON形式のみで回答してください。余計なテキストは不要です。Human Prompt
以下の口コミ文を評価してください。JSON形式で回答してください。
【評価項目】
1. naturalness (0〜30点): AI生成と分かる表現がないか。箇条書き・過度な褒め・均一な構成を減点
2. inappropriate (0〜20点): 不適切表現・誇大広告・事実と異なる表現がないか
3. topic_reflection (0〜15点): 指定された項目({top_item.name})が中心に反映されているか
【口コミ文】
{review_text}
【中心にすべき項目】{top_item.name}(★{top_item.rating})
JSON形式で回答:
{"naturalness": 点数, "inappropriate": 点数, "topic_reflection": 点数, "feedback": "改善点(なければ空文字)"}品質チェックは項目名 + 星数のみを受け取り、アンケート回答全体は受け取らない。
LLMパラメータ
| パラメータ | 値 | 理由 |
|---|---|---|
| model | claude-haiku-4-5-20251001 | 判定用、高性能Model不要 |
| temperature | 0.1 | 安定した一貫性のある結果 |
| max_tokens | 500 | 短いJSON |
出力例
合格 (85点):
{
"naturalness": 25,
"inappropriate": 20,
"topic_reflection": 12,
"feedback": ""
}不合格 (52点):
{
"naturalness": 15,
"inappropriate": 20,
"topic_reflection": 8,
"feedback": "「まず」「次に」の接続詞が目立つ。箇条書き的な構成を避け、もう少し自然な流れに。中心にすべき項目への言及が弱い。"
}2.3 Prompt #3 — regenerate_with_feedback
目的: 品質チェックNG時の再生成。スコアと改善フィードバックを付与して送信。
temperature 0.9の理由: 生成(0.8)より高く設定し、前回と異なる出力を生成するため。
System Prompt
Prompt #1 (generate_review) と同じ
Human Prompt
以下の情報から口コミ文を生成してください。
前回の生成は品質チェックで不合格でした。フィードバックを参考に改善してください。
【前回のスコア】{previous_score}/100
【改善フィードバック】{feedback}
【店舗名】{shop_name}
【中心にする項目】{top_item.name}(★{top_item.rating})
【店舗キーワード】{store_keywords}
【トーン】{tone}
※ 前回と異なる書き出し・構成で書いてください。LLMパラメータ
| パラメータ | 値 | 理由 |
|---|---|---|
| model | claude-sonnet-4-20250514 | 品質を維持 |
| temperature | 0.9 | 前回と異なる出力を生成 |
| max_tokens | 800 | — |
2.4 Prompt #4 — regenerate_with_tone
目的: ユーザーがtone変更時の再生成。前回の繰り返しを避ける明確な指示。
System Prompt
Prompt #1と同じだが{tone}が変更
Human Prompt
以下の情報から口コミ文を生成してください。
前回は「{previous_tone}」トーンで生成しましたが、今回は「{tone}」トーンで新しく生成してください。
【店舗名】{shop_name}
【中心にする項目】{top_item.name}(★{top_item.rating})
【店舗キーワード】{store_keywords}
【トーン】{tone}
※ 前回の文章「{previous_review_snippet}」の言い回しを流用しないでください。
previous_review_snippet: 前回の先頭50文字。
LLMパラメータ
| パラメータ | 値 | 理由 |
|---|---|---|
| model | claude-sonnet-4-20250514 | 品質を維持 |
| temperature | 0.8 | 多様性を保ちつつ安定 |
| max_tokens | 800 | — |
3. チューニング設定値
| 設定 | デフォルト値 | 範囲 | 影響 |
|---|---|---|---|
REVIEW_PASS_SCORE | 70 | 50〜90 | 品質チェック合格点 |
REVIEW_MAX_RETRIES | 3 | 1〜5 | 最大リトライ回数 |
REVIEW_MIN_CHARS | 200 | 100〜300 | 最小文字数 |
REVIEW_MAX_CHARS | 400 | 300〜600 | 最大文字数 |
// config/anthropic.php
'review_generator' => [
'pass_score' => env('REVIEW_PASS_SCORE', 70),
'max_retries' => env('REVIEW_MAX_RETRIES', 3),
'min_chars' => env('REVIEW_MIN_CHARS', 200),
'max_chars' => env('REVIEW_MAX_CHARS', 400),
],4. Promptチューニングのヒント
4.1 出力がAIっぽすぎる場合
temperatureを0.85-0.9に上げる- system promptに追加:
「また」「さらに」「加えて」の接続詞を使わない - promptにネガティブ例を追加
4.2 キーワードが詰め込まれる場合
- 推奨キーワード数を"1〜3個"から"1〜2個"に削減
- 追加:
キーワードは1つだけ含めれば十分です
4.3 出力が短すぎる/長すぎる場合
REVIEW_MIN_CHARS/REVIEW_MAX_CHARSを調整- promptに追加:
必ず{min}〜{max}文字で書いてください
4.4 toneが不明瞭な場合
- 各toneの具体例をsystem promptに追加
- 例:
丁寧トーンの場合、必ず「〜いたしました」「〜ございます」を使用すること