本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
コンテキストエンジニアリング:複雑な業務要件を段階的コンテキストで解きほぐすプロンプト最適化手法
【ユースケース定義と課題】
長大な業務規約から特定の法的リスクを抽出し、構造化した監査レポート(Markdown形式)を生成する。一括処理では文脈の混同や重要な制約の無視(幻覚)が発生しやすいため、段階的なコンテキスト注入が必要となる。
【プロンプト設計のループ】
graph TD A["要件の分解と設計"] --> B["コンテキストの段階的実行"] B --> C["出力のメタ評価"] C -->|コンテキスト漏れ・ルール違反| A
設計:複雑な要件を「前提」「分析」「出力」のフェーズに分解。
実行:各フェーズの出力を次のコンテキストとして連鎖的に入力。
評価:最終出力が元の規約と整合しているかをルールベースおよびLLMで検証。
【プロンプトの実装案】
# 前提 あなたの一流の法務監査AIアシスタントです。 以下のステップに従い、提示された業務規約から「コンテキストエンジニアリング(段階的理解)」を用いてリスク分析を行ってください。 # 思考プロセス(Chain-of-Thought)の指示 1. まず、提供された規約から「最も罰則規定が厳しい項目」を3つ挙げて思考プロセスを整理してください。 2. 次に、それらの項目が実務に与える影響を分析してください。 3. 最後に、以下の出力フォーマットに従ってレポートを作成してください。 # 記述例(Few-shot) - 規約例:「業務データの外部持ち出しは原則禁止。違反時は懲戒処分。」 - 思考プロセス:外部持ち出しに強力な罰則(懲戒)がある。実務上、リモートワーク時のデータ扱いに高リスク。 - レポート: ### 検出されたリスク - **対象**:データ外部持ち出し - **重要度**:高 - **対策**:VPN利用の義務化とログ監視 # 監査対象の規約 [ここに分析したい規約テキストを挿入] # 出力フォーマット ### 監査レポート (ここに思考プロセスを踏まえたMarkdown形式のレポートを出力)
【評価指標と誤り分析】
コンテキストが複雑化すると、LLMが「前提ルールを忘却する(Lost in the Middle)」、「フォーマットを無視して長文で回答する」といった失敗パターンが生じます。これらを防ぐための評価基準を以下に定義します。
| 評価項目 | 評価基準 (LLM-as-a-Judge 用) | 判定方法 / 対策 |
|---|---|---|
| フォーマット遵守率 | Markdown構造(H3見出し等)が完全に維持されているか | 正規表現による構文チェック / XMLタグによる明示 |
| コンテキスト一貫性 | 前段階で抽出したリスクと最終レポートの内容に齟齬がないか | LLMによる論理矛盾検出プロンプトの適用 |
| ハルシネーション率 | 入力テキストに存在しない架空の規約や罰則を捏造していないか | ソーステキストへの完全一致アンカーの埋め込み |
【改良後の最適プロンプト】
# システム指示
あなたは法務リスク監査の専門家です。
複雑な文脈(コンテキスト)の混乱を防ぐため、以下の[段階的タスク]を厳密に順守して実行してください。
各ステップの出力は、次のステップのコンテキストとして厳密に参照されます。
---
# 段階的タスク
## Step 1: リスク要素の構造化抽出
入力された規約から、以下の「型」に従ってリスク要素を抽出してください。
(出力形式:JSON [ {"item": "項目名", "severity": "高/中/低", "reason": "理由"} ])
## Step 2: 対策案の作成
Step 1 で抽出した各項目に対し、具体的な業務対策案を策定してください。
(出力形式:Markdownリスト)
## Step 3: 最終統合レポートの出力
Step 1 と Step 2 の情報を統合し、以下のMarkdownテンプレートのみを用いて出力してください。これ以外のテキスト(挨拶や補足)は一切出力しないでください。
---
# 最終レポートテンプレート
# 業務規約監査レポート
## 1. 検出された重要リスク
- **リスク項目**: [Step 1のitem]
- **重要度**: [Step 1のseverity]
- **理由**: [Step 1のreason]
## 2. 推奨される業務対策
- [Step 2の対策案]
---
# 入力データ(業務規約)
[ここに業務規約テキストを挿入]
【まとめ】
最新LLM(Gemini 1.5 Pro等)の広いコンテキスト窓を活かしつつ、コンテキストエンジニアリングを実務に組み込むための3つの鉄則:
タスクを構造の「型(JSON/Markdown)」で縛る:自由入力を防ぎ、コンテキストの漏洩を防止する。
段階的な命令(Step-by-Step)をプロンプト内で明示的にカプセル化する:一度にすべてを処理させず、LLMの思考メモリを段階的に消費させる。
不要な対話トークンを排除する:システムプロンプトで「挨拶や前置きの出力を禁止」し、純粋なデータ処理にコンテキスト資源を集中させる。


コメント