LLM診断精度を上げるためにプロンプトを「コード化」した話
はじめに
LLMを使った「診断系プロダクト」を作っていると、こんな問題に必ず当たります。
- 出力がそれっぽいけど浅い
- 毎回言うことが微妙に違う
- ユーザーの行動につながらない
本記事では、AIユーザー診断SaaSを個人開発する中で、診断精度を上げるために行った「プロンプト設計の実装パターン」を紹介します。
ポイントはプロンプトを文章ではなく「コードとして扱う」ことです。
初期実装の問題点
最初のプロンプト(失敗例)
plain text
このLPの内容を分析し、想定ユーザーと改善点を教えてください。
起きたこと
- 毎回違う観点で評価される
- 抽象的なアドバイスが多い
- 「で、何すればいいの?」状態
👉 AIが何を基準に診断すればいいのか分からない
改善方針
診断精度を上げるために、次の3点を固定しました。
- 評価軸を明示する
- 出力フォーマットを固定する
- AIの役割(ロール)を定義する
① 評価軸を固定する
曖昧な「診断」ではなく、以下の軸で必ず評価させます。
typescript
const evaluationAxes = [
"想定ユーザータイプ",
"ユーザーの主な課題",
"訴求のズレ",
"改善すべきポイント"
];
これにより
- 毎回同じ観点で診断される
- 結果の比較ができる
② 出力フォーマットを固定する
JSONスキーマを強制
typescript
const outputFormat = `
以下のJSON形式で必ず出力してください。
{
"userType": "",
"reason": "",
"problems": [],
"improvements": []
}
`;
効果
- フロントでそのまま扱える
- 「文章が長すぎる」問題が消える
- 出力のブレが激減
③ ロール(人格)を明示する
plain text
あなたはSaaSレビュー経験が豊富なプロダクトコンサルタントです。
感情ではなく、構造と根拠を重視して診断してください。
これだけで👇
- お気持ち表明が減る
- 指摘が具体的になる
実際のプロンプト構成(完成形)
typescript
const prompt = `
あなたはSaaSプロダクト診断の専門家です。
【評価軸】
- 想定ユーザータイプ
- ユーザーの課題
- 訴求のズレ
- 改善提案
【入力テキスト】
${inputText}
【出力形式】
${outputFormat}
`;
👉 プロンプト = ロジック + 定数
改善結果
- 診断の一貫性が向上
- 改善提案が具体化
- ユーザーの納得感が上がった
特に**「なぜその診断になったか」を説明できるようになった**のが大きいです。
まとめ
- プロンプトは文章ではなく「設計」
- 評価軸・出力形式・ロールを固定する
- LLMの精度はモデルより設計で決まる
LLM診断系を作っている人の参考になれば幸いです。