社内稟議書の自動ドラフト生成:Dify による構造化出力とプロンプト設計の実践
はじめに
日本企業において、稟議書は意思決定プロセスの中核をなす文書である。新規ツールの導入、予算の申請、外部ベンダーとの契約締結――あらゆる重要な意思決定は稟議書を通じて承認を得る必要がある。しかし、稟議書の作成には相当な時間がかかる。背景の整理、費用対効果の算出、リスクの洗い出し、関連部署との調整事項の記載など、1 件の稟議書に数時間から丸一日を費やすことも珍しくない。
本稿では、Dify を活用して稟議書のドラフトを構造化された形式で自動生成し、人間による確認・修正を経て承認フローに乗せるシステムの設計を解説する。ポイントは「うまい文章を書くこと」ではなく、組織の承認フォーマットに沿った、欠落のない構造化出力を安定して生成することにある。
背景と課題
稟議書作成の現実的な課題
| 課題 | 詳細 |
|---|---|
| 作成工数の大きさ | 事業部門のマネージャーが本来業務の合間に稟議書を書いている |
| フォーマットの不統一 | 部門ごとにフォーマットが異なり、審査側の負担が増大 |
| 必要項目の欠落 | 予算根拠やリスク評価が抜けたまま提出され、差戻しが頻発 |
| 定量情報の不足 | ROI や投資回収期間が曖昧なまま承認プロセスに入る |
| 稟議渋滞 | 稟議書の作成が遅れ、プロジェクト開始が後ろ倒しに |
なぜ「自動生成」ではなく「自動ドラフト」なのか
稟議書は組織内の公式な意思決定文書であり、最終的な責任は申請者と承認者にある。AI が生成した内容をそのまま提出することは、以下の理由で適切でない。
- 数値の正確性: 予算額・ROI・投資回収期間は AI が推測してはならない
- 組織固有の文脈: 過去の経緯や社内政治的な配慮は AI には判断できない
- 責任の所在: 稟議書の内容に対する責任は申請者が負う
したがって、AI の役割は「構造を整え、草稿を生成し、不足項目を明示する」ことに限定し、最終化は人間が行う設計とする。
全体アーキテクチャ
flowchart TD
A[申請者: 要件を入力] --> B[入力情報の構造化ノード]
B --> C[稟議タイプ判定]
C --> D[テンプレート選択]
D --> E[LLM ドラフト生成]
E --> F[不足項目チェック]
F --> G{不足項目あり?}
G -->|Yes| H[不足項目リスト提示<br>+ 暫定ドラフト出力]
G -->|No| I[完全ドラフト出力]
H --> J[Human-in-the-Loop:<br>申請者が確認・補完]
I --> J
J --> K[最終稟議書出力]
K --> L[承認ワークフロー連携<br>API / メール / Slack]
稟議書の構造化フォーマット設計
標準フィールド定義
稟議書のドラフト生成において最も重要なのは、出力フォーマットの安定性である。自然文の長文ではなく、固定フィールドの構造化出力を基本とする。
{
"ringi_title": "Dify Enterprise 版 導入に関する稟議",
"applicant": {
"name": "",
"department": "",
"position": "",
"date": "2026-04-12"
},
"background": {
"current_situation": "現状の課題を記述",
"trigger": "稟議提出のきっかけ"
},
"purpose": "本稟議の目的を1-2文で記述",
"proposal": {
"overview": "提案の概要",
"scope": "適用範囲・対象部門",
"timeline": "想定スケジュール"
},
"cost": {
"initial_cost": "初期費用(税込)",
"running_cost": "月額/年額ランニングコスト",
"total_budget": "稟議申請金額",
"budget_source": "予算科目",
"payment_terms": "支払条件"
},
"expected_benefits": {
"quantitative": "定量的な効果(工数削減○時間/月 等)",
"qualitative": "定性的な効果"
},
"roi": {
"payback_period": "投資回収期間",
"calculation_basis": "算出根拠"
},
"risks": [
{
"risk": "リスク項目",
"probability": "高/中/低",
"impact": "高/中/低",
"mitigation": "対策"
}
],
"alternatives": [
{
"option": "代替案",
"pros": "メリット",
"cons": "デメリット",
"reason_not_selected": "不採用理由"
}
],
"approval_items": "承認を求める事項を明確に記述",
"attachments": ["見積書", "製品資料", "PoC報告書"],
"compliance_check": {
"personal_data": "個人情報の取扱い有無",
"security_review": "セキュリティ審査の要否",
"legal_review": "法務確認の要否"
},
"missing_fields": ["未入力または情報不足のフィールド一覧"]
}
稟議タイプ別のフィールド調整
| 稟議タイプ | 追加フィールド | 省略可能フィールド |
|---|---|---|
| SaaS / ツール導入 | セキュリティチェックシート、データ保管場所 | - |
| 外注・業務委託 | 委託先情報、契約形態、検収条件 | ROI(算出困難な場合) |
| 人員採用 | 職種、等級、想定年収レンジ | 代替案比較 |
| 設備投資 | 減価償却期間、リース vs 購入比較 | - |
| イベント・出張 | 目的、参加者、期待成果 | 投資回収期間 |
プロンプト設計:バージョン別の比較
Version 1: 自由生成型
System Prompt:
あなたは社内稟議書の作成をサポートするアシスタントです。
ユーザーの入力に基づいて稟議書のドラフトを作成してください。
結果の傾向:
- 文章としては読みやすいが、フィールドが不安定
- 必須項目(予算・リスク等)が抜け落ちやすい
- 承認システムやフォームに直接取り込めない形式になりがち
Version 2: テンプレート拘束型
System Prompt:
あなたは社内稟議書の作成支援アシスタントです。
以下のフィールドに従って、構造化された稟議書ドラフトを JSON 形式で出力してください。
必須フィールド:
- ringi_title: 稟議件名
- background: 背景・現状の課題
- purpose: 目的
- proposal: 提案概要
- cost: コスト(初期費用、ランニングコスト、合計)
- expected_benefits: 期待効果(定量・定性)
- risks: リスクと対策
- approval_items: 承認を求める事項
すべてのフィールドを必ず出力してください。
情報が不足している場合は、そのフィールドに "【要入力】" と記載してください。
結果の傾向:
- フィールドの網羅性が大幅に向上
- ただし「【要入力】」が多すぎると、ドラフトの実用性が低下
- 入力情報が少ないと、推測で埋めてしまうケースがある
Version 3: 構造化 + 不足検出 + 安全制約型(推奨)
System Prompt:
あなたは社内稟議書の整理・構造化アシスタントです。
以下のルールに厳密に従ってください。
【役割の定義】
- あなたは稟議書の「整理者」であり、「意思決定者」ではありません
- 入力情報に基づいてドラフトを構造化する役割のみを担います
【出力ルール】
1. 指定された JSON フォーマットで出力すること
2. 入力情報に含まれない数値(予算額、ROI、期間等)は絶対に推測・捏造しないこと
3. 情報が不足しているフィールドは "【要確認】" と明記すること
4. missing_fields に不足項目を一覧として出力すること
5. 金額には必ず税込/税抜を明記すること
6. 根拠のない効果の誇張は行わないこと
【フォーマット】
{上記の JSON フォーマットを挿入}
【重要な禁止事項】
- 予算額の推測禁止
- ROI の捏造禁止
- 投資回収期間の推測禁止
- 存在しない比較データの生成禁止
結果の傾向:
- フィールドの網羅性と正確性のバランスが最も良い
- 不足項目が明示されるため、申請者が何を補完すべきか明確
- 捏造リスクが大幅に低減
入力情報の設計
なぜ自由テキスト入力だけでは不十分か
「Dify を導入したい。稟議書を作って」という自由テキスト入力だけでは、ドラフトの品質は低くなる。最低限の構造化された入力を求めることで、出力品質は飛躍的に向上する。
推奨する入力フォーム
Dify Workflow の開始ノードで以下の入力変数を定義する。
| 変数名 | 型 | 必須 | 説明 |
|---|---|---|---|
request_summary | text | Yes | 何を申請したいか(自由テキスト) |
department | select | Yes | 申請部門 |
budget_range | select | No | 概算予算レンジ(〜50万/〜200万/〜500万/500万超) |
urgency | select | No | 緊急度(通常/急ぎ/至急) |
target_start_date | date | No | 希望開始時期 |
related_documents | file | No | 見積書・提案書等の添付ファイル |
additional_context | text | No | 補足情報(過去の経緯、関連稟議等) |
添付ファイルからの情報抽出
見積書や提案書が添付された場合、Dify の VLM / パラメータ抽出ノードを使って、金額・ベンダー名・契約条件などを自動抽出し、稟議書ドラフトに反映する。
flowchart LR
A[見積書PDF] --> B[VLM / テキスト抽出]
B --> C[パラメータ抽出ノード]
C --> D["金額: ¥3,600,000<br>ベンダー: ○○株式会社<br>期間: 12ヶ月"]
D --> E[稟議書ドラフトに反映]
Human-in-the-Loop の設計
人間による確認が必要なケース
| トリガー条件 | 理由 |
|---|---|
| 予算フィールドが未入力 | 金額なしの稟議書は承認プロセスに乗せられない |
| リスク評価が空欄 | リスク未検討のまま承認することは組織統制上問題 |
| 個人情報・法務・セキュリティの関与フラグ | 専門部門の事前確認が必要 |
| 高額案件(閾値超過) | 決裁権限に応じたエスカレーションが必要 |
| AI が「根拠不足」と判断した効果記述 | 期待効果の過大評価を防止 |
確認フローの設計
Dify Human-in-the-Loop ノードの表示例:
━━━━━━━━━━━━━━━━━━━━━━
稟議書ドラフト: 確認をお願いします
━━━━━━━━━━━━━━━━━━━━━━
■ 件名: Dify Enterprise 版 導入に関する稟議
■ 不足項目:
⚠ 初期費用が未入力です
⚠ 投資回収期間の算出根拠がありません
⚠ セキュリティ審査の要否が未回答です
■ ドラフト内容:
[JSON / Markdown 形式のドラフトを表示]
■ アクション:
[承認して次へ] [修正して再生成]
━━━━━━━━━━━━━━━━━━━━━━
下流システムとの連携
承認ワークフローへの接続
稟議書ドラフトが確定したら、Dify Workflow の HTTP Request ノード を使って社内の承認システムに連携する。
| 連携先 | 方法 | 備考 |
|---|---|---|
| ワークフロー承認システム(ServiceNow 等) | REST API | JSON をそのまま POST |
| Google Forms | Google Apps Script 経由 | フォームフィールドにマッピング |
| Slack | Webhook | 承認依頼通知を送信 |
| メール | SMTP / SendGrid API | 承認者にドラフト付きメール送信 |
| kintone | REST API | アプリにレコードとして登録 |
API 呼び出し例(kintone 連携)
curl -X POST 'https://{subdomain}.cybozu.com/k/v1/record.json' \
-H 'X-Cybozu-API-Token: {api_token}' \
-H 'Content-Type: application/json' \
-d '{
"app": 123,
"record": {
"稟議件名": {"value": "Dify Enterprise 版 導入"},
"申請部門": {"value": "情報システム部"},
"申請金額": {"value": "3600000"},
"ステータス": {"value": "ドラフト確認済み"}
}
}'
実装上のベストプラクティス
やるべきこと
- 出力フォーマットを先に確定する — プロンプトより先に、どの JSON フィールドが必要かを定義する
- 不足項目を明示的に出力させる —
missing_fieldsを必須フィールドとして定義する - 稟議タイプ別にプロンプトを切り替える — SaaS 導入と人員採用では必要項目が異なる
- 金額フィールドには安全制約を設ける — 推測禁止を明示的にプロンプトに記載する
- Human-in-the-Loop を必ず組み込む — 完全自動提出は許容しない
やってはいけないこと
- 「稟議書を書いて」だけの自由テキスト入力で運用する — 入力の構造化が出力品質を決める
- AI に予算額や ROI を推測させる — 承認者の信頼を損ない、制度全体の信用が崩壊する
- すべての稟議タイプに同一テンプレートを適用する — タイプ別の最適化が必要
- 自然文の長文で出力する — 下流システムに接続できない
導入ステップ
| Phase | 期間 | 内容 |
|---|---|---|
| Phase 1 | 1-2 週間 | SaaS 導入稟議に限定した PoC。固定テンプレートでドラフト生成。 |
| Phase 2 | 2-4 週間 | 稟議タイプの拡充(外注・設備投資)。添付ファイルからの自動抽出を追加。 |
| Phase 3 | 1-2 ヶ月 | 承認システムとの API 連携。Human-in-the-Loop の本格運用。 |
| Phase 4 | 継続 | 利用実績に基づくプロンプト改善。過去の承認済み稟議を Knowledge Base に蓄積し、文面品質を向上。 |
まとめ
社内稟議書の自動ドラフト生成において最も重要なのは、「うまい文章を書くこと」ではなく、組織の承認フォーマットに沿った構造化出力を安定して生成し、不足している情報を明示することである。
Dify の Workflow を活用すれば、入力の構造化 → タイプ判定 → テンプレート選択 → ドラフト生成 → 不足検出 → 人間確認 → システム連携という一連のフローを、ノーコードで構築できる。特に Version 3(構造化 + 不足検出 + 安全制約型)のプロンプト設計を採用することで、AI が数値を捏造するリスクを抑えつつ、申請者の作成工数を大幅に削減することが可能である。
稟議書は日本企業における意思決定の「インターフェース」であり、その品質は組織の意思決定速度に直結する。AI による構造化ドラフト生成は、このインターフェースの標準化と高速化を実現する有効なアプローチである。