PromptWizard型反復改善とAgent Lightning型高速収束による意思決定プロンプトの最適化
【ユースケース定義と課題】
複雑な顧客問い合わせに対し、感情分析・意図抽出・優先度判定を同時に行い、正確なJSON形式で出力する。単一の指示では判定精度のバラツキやJSONの構文エラーが発生しやすい点が課題。
入出力の型定義:
入力:ユーザーからのテキスト(マルチジャンル、感情入り)
出力:
{"intent": string, "sentiment": int, "priority": string, "reasoning": string}形式のJSON
【プロンプト設計のループ】
graph TD
A["設計: 命令定義とCoTの導入"] --> B["実行: Few-shotによる推論"]
B --> C["評価: 精度・形式の自動検証"]
C -->|PromptWizard: 命令文の洗練| A
C -->|Agent Lightning: 実行パスの最適化| B
設計: 役割(Role)と、推論ステップ(Chain-of-Thought)を明文化。
実行: 最新LLM(GPT-4o/Gemini 1.5 Pro)のコンテキスト長を活かし、少数の例示(Few-shot)を提示。
評価: 出力結果をLLM-as-a-Judgeでスコアリング。
改善: 誤字・誤判定パターンをフィードバックし、PromptWizard的アプローチで指示文を自動更新、あるいはAgent Lightning的に無駄な推論ステップを削ぎ落とす。
【プロンプトの実装案】
# Role
あなたは高度なカスタマーサポート解析エージェントです。
# Task
入力されたユーザーのメッセージを分析し、以下のJSON形式で出力してください。
# Constraints
- intent: 問い合わせの主目的(返金、技術サポート、苦情、その他)
- sentiment: 感情スコア(1: 非常に不満 〜 5: 非常に満足)
- priority: 対応優先度(High, Medium, Low)
- reasoning: なぜその判定に至ったかの簡潔な理由
- 出力はJSONブロックのみとし、他のテキストは一切含めないこと。
# Thinking Process (Chain-of-Thought)
1. ユーザーの主訴を特定する。
2. 言葉遣いから感情の強さを推定する。
3. 緊急性と不満度から優先度を決定する。
4. 根拠を言語化する。
# Few-shot Example
Input: "3日前に注文した商品がまだ届きません。明日使う予定だったのに、どうしてくれるんですか!"
Output:
{
"intent": "配送確認",
"sentiment": 1,
"priority": "High",
"reasoning": "配送遅延により具体的な使用予定に支障が出ており、強い不満が示されているため。"
}
# Input
{{USER_INPUT}}
【評価指標と誤り分析】
| 評価項目 | 失敗パターン | 採点基準 (1-5) |
|---|---|---|
| 形式遵守 | JSON以外の説明文が含まれる、カンマ欠落 | 5: 完全なJSON、1: パース不可 |
| 感情一致 | 怒っているユーザーを「3(普通)」と判定する | 5: 人間の感覚と一致、1: 明らかな誤認 |
| 論理一貫性 | reasoningと判定結果(priority等)が矛盾する | 5: 矛盾なし、1: 支離滅裂 |
【改良後の最適プロンプト】
PromptWizardによる命令文の具体化と、Agent Lightning的なトークン節約(推論の最短経路化)を適用。
# Role
System: Senior Support Analyst Agent (Efficiency Mode)
# Instructions
Analyze input and return ONLY a minified JSON.
Steps: [1.Identify Core Intent] -> [2.Score Sentiment 1-5] -> [3.Assign Priority] -> [4.Validate Consistency]
# Output Schema
{"i": string, "s": integer, "p": "High"|"Medium"|"Low", "r": string}
# Critical Rule
- If the user uses expletives, set p="High" and s=1.
- No markdown formatting outside JSON.
# Input
{{USER_INPUT}}
【まとめ】
プロンプトは「育て」てから「削る」: 最初はPromptWizard的に詳細な指示(CoT)を盛り込んで精度を出し、運用フェーズでAgent Lightning的に不要なトークンを削って高速化・低コスト化する。
スキーマの短縮化: 実務での大量処理には、キー名を
intentではなくiのように短縮化し、モデルが構造を理解しやすいようOne-shot(1つの例示)を必ず含める。LLM-as-a-Judgeの導入: 評価を人間に頼らず、上位モデル(GPT-4o等)にスコアリングをさせる自動評価ループを組むことが、最適化のスピードを決定付ける。

