DifyのAPI機能を使用して質問・回答のやり取りを行うPythonプログラムです。
MIS40の口頭発表「Difyで自作したレファレンスチャットボットを用いた文章生成AIの性能比較」 で使用しました。
対話機能のほか、質問をtxtファイルから読み込み回答をCSV形式で保存する機能を提供します。
発表内容の補足の意味に加えて、一般的なDifyの利用時にも役に立つ(と思う)プログラムのため公開しました。
- インタラクティブチャット: リアルタイムでDify APIと対話
- バッチ処理: 複数の質問を一括処理してCSV出力 ← MIS40の実験ではこれを使用
- ログ機能: 全ての質問・回答を自動的にJSONファイルに記録
- エラーハンドリング: 権限エラー時の代替保存先対応
dify-api-client/
├── .env # API設定ファイル(APIキー、ベースURL)
├── dify_client.py # メインのAPIクライアントクラス
├── question_batch.py # 質問バッチ処理スクリプト
├── questions.txt # 質問リスト(1行に1つずつ記載)
├── requirements.txt # Python依存関係
├── dify_chat_log.json # チャットログ(自動生成)
└── *_dify_answers_only.csv # 回答のみのCSV(自動生成)
- 必要に応じてDifyやDocker等のセットアップは別途行っておいて下さい
- localhostしたDifyはバージョン1.5.1で動作を確認しました
git clone https://github.com/hellboy84/dify-api-client.git
cd dify-api-clientpip install -r requirements.txt.envファイルを編集して、実際のAPIキーを設定してください:
# APIキー(実際の値に変更してください)
DIFY_API_KEY=your-actual-dify-api-key-here
# ローカル開発環境のBASE_URL
DIFY_BASE_URL=http://localhost/v1
# 本番環境のBASE_URL(必要に応じてコメントアウトを解除)
# DIFY_BASE_URL=https://api.dify.ai/v1リアルタイムでDify APIと対話できます:
python dify_client.py利用可能なコマンド:
/logs- チャットログを表示/quit- 終了/help- ヘルプを表示
questions.txtに記載された質問を一括処理し、結果をCSVファイルに保存します。
各行ごとに新しい質問として処理されます:
python question_batch.py処理結果はYYYYMMDDHHMMSS_dify_answers_only.csvという形式でタイムスタンプ付きファイルに保存されます。
questions.txtに質問を1行ずつ記載してください:
大橋病院に勤務しています。研究費で資料を買いましたがどうすればいいですか?
科研費で12万円の専門書を購入しました。どのような手続きが必要でしょうか?
...DIFY_API_KEY: DifyのAPIキー(必須)DIFY_BASE_URL: APIのベースURL(デフォルト:http://localhost/v1)
- 通常: スクリプトと同じディレクトリに保存
- 権限エラー時: 自動的にデスクトップに保存を試行
| question_number | timestamp | question | answer |
|---|---|---|---|
| 1 | 2025-07-22T15:30:00.123456 | 研究費で資料を... | 研究費で購入された... |
[
{
"timestamp": "2025-07-22T15:30:00.123456",
"question": "研究費で資料を買いましたがどうすればいいですか?",
"response": {
"answer": "研究費で購入された資料については...",
"conversation_id": "...",
"...": "..."
}
}
]- APIキーエラー:
.envファイルでDIFY_API_KEYが正しく設定されているか確認 - 接続エラー: DIFY_BASE_URLが正しく設定されているか確認
- ファイル保存エラー: ディレクトリの書き込み権限を確認
このプロジェクトはMITライセンスの下で公開されています。
このプログラムはLLMの支援を受けながら作成しました
作成日: 2025年7月22日