企業内で「FAQチャット」や「ナレッジボット」を作りたいというニーズは多いですが、実際にはこんな課題が付きまといます。
- Difyのナレッジ機能を使うには管理者権限が必要
- ナレッジの更新をエンジニアや管理者が担うと負担が重い
- 各部署ごとにチャット内容をカスタマイズしたい
このブログでは、Excelで作ったQ&Aをそのまま読み込み、各自が独自にチャットを持てる“ユーザー任せ”のナレッジチャットを構築する方法を紹介します。
🛠 環境・前提
- OS:Windows 11
- 言語:Python 3.10
- LLMフロント:Dify1.3.0
- バックエンド:FastAPI
- ナレッジ管理:共有フォルダ内のExcelファイル
📘 コンセプト
この仕組みでは、ナレッジの構成をユーザー自身に任せることで、運用のハードルを大きく下げることができます。
- 各ユーザーがExcelで質問と回答を入力
- 共有フォルダに配置(例:
\\fileserver\faq\部門A.xlsx
) - FastAPIがExcelを読み込んで、チャット用のベクトル検索エンジンに登録
- Dify経由でチャットを開始
これにより、「管理者が全てのナレッジを登録・保守する必要がない」状態を作れます。
💬 Excelのフォーマット(例)
質問 | 回答 |
---|---|
勤怠の打刻忘れはどうすれば? | 勤怠システムから「修正申請」を行ってください。 |
出張精算はいつまでに? | 毎月5日までに申請してください。 |
🔧 FastAPI 側の実装
Excelを読み込み,そのまま返します。
必要なライブラリをインストールします。
pip install fastapi uvicorn
main.pyは以下のようにしました。
from fastapi import FastAPI, HTTPException, Response
from fastapi.responses import FileResponse, StreamingResponse
import os
app = FastAPI()
EXCEL_FILE = r"\\fileserver\faq\部門A.xlsx"
@app.get("/excel_qa")
async def download_excel_file():
filename=os.path.basename(EXCEL_FILE)
# ファイルの存在を確認
if not os.path.exists(EXCEL_FILE):
raise HTTPException(status_code=404, detail="ファイルが見つかりません。")
# ファイルがExcelファイルであることを確認(拡張子で簡易チェック)
if not filename.lower().endswith(('.xlsx', '.xls')):
raise HTTPException(status_code=400, detail="指定されたファイルはExcelファイルではありません。")
try:
# FileResponse を使用すると、ファイルを直接ストリームで返せます
# media_type を適切に設定することで、ブラウザがファイルタイプを正しく認識します
return FileResponse(
path=EXCEL_FILE,
media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", # .xlsx のMIMEタイプ
filename=filename # ダウンロード時のファイル名を指定
)
except Exception as e:
raise HTTPException(status_code=500, detail=f"ファイルの読み込み中にエラーが発生しました: {str(e)}")
FastAPIの起動は以下のコマンドでやりました。
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

Python FastAPI本格入門
Amazonで詳細を見る🤖 Dify 側との連携
Dify側で「チャットフロー」で新規作成
「HTTPリクエスト」ブロックと「テキスト抽出」ブロックを追加しただけのシンプルなフローです。
「HTTPリクエスト」ブロックには
API:GET http://[FastAPI立ち上げたPCのIPアドレス]:8000/excel_qa
「テキスト抽出」ブロックには
入力変数:HTTPリクエスト files Array[file]

コーディング不要で毎日の仕事が5倍速くなる!Difyで作る生成AIアプリ完全入門
Amazonで詳細を見る📚 運用イメージ
- 解答を任せたいテーマごとにExcelファイルを作成・更新
- ファイルを更新するだけでチャットが使える
- 管理者はコードや設定変更をしなくていい
✅ メリットまとめ
項目 | 内容 |
---|---|
管理コスト | 各部署に分散。Excelだけでナレッジ登録が完結。 |
拡張性 | Excelを複製するだけで、複数チャットボットの展開が可能。 |
セキュリティ面 | ファイル共有で権限制御がしやすく、Difyの管理権限を渡さなくてよい。 |
📝 まとめ
Excel + FastAPI + Dify で「ユーザー任せのナレッジチャット」は簡単に構築できます。
管理者が手を出さずとも、現場主体で運用できるチャットボットを目指しましょう。
ソースコードが必要な方はnoteからご購入をお願いいたします。