{“status”: “concept”, “focus”: “PromptWizard_vs_AgentLightning”, “model”: “Gemini 1.5 Pro”} 本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
自動最適化の極致:PromptWizardとAgent Lightningによる高精度エージェント構築
【ユースケース定義と課題】
複雑な非構造化ビジネス文書から、特定のエンティティと論理関係を抽出し、厳密なJSON形式で出力する。抽出漏れと推論エラーの解消が困難。
入力の型: テキスト(PDF抽出済み文字列、議事録、契約書等)
出力の型: JSON(定義されたSchemaに準拠)
【プロンプト設計のループ】
graph TD A["設計: 命令とFew-shotの構成"] --> B["実行: 大規模モデルによる推論"] B --> C["評価: スキーマ検証と事実確認"] C -->|改善: 誤差逆伝播的な指示修正| A
設計:
PromptWizard的手法を用い、指示文の「変異(Mutation)」と「交差」を試行。実行:
Agent Lightning的な高速推論ループでトークン効率と精度を両立。評価: LLM-as-a-Judgeにより、期待されるJSON構造との乖離を数値化。
【プロンプトの実装案】
PromptWizardの「反復改善」の結果、最も抽出精度が高かった「思考プロセス明示型(CoT)」の構成例です。
# Role
あなたは高度なビジネス文書アナリストです。与えられた文書から重要な「合意事項」と「期限」を抽出してください。
# Constraints
- 出力は必ず以下のJSON形式に準拠すること。
- 不明な情報は null とし、推測で埋めないこと。
- 思考プロセス(Thought)をJSONの外に出さないこと。
# Output Format
{
"analysis": "思考プロセスをここに記述",
"entities": [
{"name": "組織名", "role": "役割"},
],
"agreements": [
{"item": "合意内容", "deadline": "YYYY-MM-DD"}
]
}
# Input
{{document_text}}
# Execution Process
Step 1: 文書全体をスキャンし、日付と組織名にマーキングする。
Step 2: 各組織間の権利義務関係を特定する。
Step 3: 指定されたJSON形式に変換し、構文エラーがないかセルフチェックする。
【評価指標と誤り分析】
抽出タスクにおいて発生しやすい「失敗パターン」を分析し、評価基準を設定します。
| 評価項目 | 失敗パターン(分析) | 採点基準 (1-5) |
|---|---|---|
| スキーマ整合性 | カンマ欠落、エスケープ漏れによるJSON破損。 | 5: 完全、1: パース不可 |
| 事実忠実性 | 日付の取り違え、存在しない条項の捏造(幻覚)。 | 5: 誤りなし、1: 重大な捏造 |
| 網羅性 | 複数の合意事項がある場合に、最初の1つしか抽出しない。 | 5: 全抽出、1: 漏れ多数 |
【改良後の最適プロンプト】
Agent Lightningの思想(低遅延・高精度)を取り入れ、指示を構造化した「最強プロンプト」です。
<system_instruction>
## Task
Extract specific data points from business text into valid JSON.
## Extraction Rules
- IGNORE: Informal greetings, boilerplate legal disclaimers.
- CAPTURE: Dates, Party Names, Monetary values, Obligations.
- FORMAT: Strict JSON. No preamble, no markdown code blocks unless requested.
## Reasoning Protocol (Internal)
Before generating JSON, internally verify:
1. Are all date formats ISO-8601?
2. Did I capture multiple entities if present?
3. Is every key in the schema addressed?
</system_instruction>
<few_shot_examples>
Input: "2023年10月5日、A社はB社に100万円支払うことで合意した。"
Output: {"date": "2023-10-05", "payer": "A社", "receiver": "B社", "amount": 1000000}
</few_shot_examples>
<input_data>
{{target_text}}
</input_data>
【まとめ】
実務でプロンプトを運用するための3つの鉄則:
「命令」と「データ」の分離:
<system_instruction>や<input_data>等のタグを使用し、LLMが指示の範囲を誤認しないようにする。ネガティブ・プロンプトの活用: 「~しないでください(IGNORE)」を具体的に記述することで、不要なトークン消費とノイズを削減する。
自動評価ループの構築: PromptWizardのように、一度作って終わりにせず、評価スコアが下がった際に「どの指示が弱かったか」をLLMに自己分析させ、プロンプトを動的に更新し続ける。

