Skip to content

Commit 3999dbd

Browse files
committed
initial commit
0 parents  commit 3999dbd

File tree

5 files changed

+184
-0
lines changed

5 files changed

+184
-0
lines changed

.gitignore

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Environments
2+
.env
3+
.venv
4+
env/
5+
myenv/
6+
ENV/
7+
env.bak/
8+
venv.bak/
9+
10+
# Python
11+
__pycache__/
12+
*.py[cod]
13+
*$py.class
14+
15+
# IDEs
16+
.vscode/
17+
.idea/
18+
19+
# OS generated files
20+
.DS_Store
21+
Thumbs.db

Dify-workflow.png

394 KB
Loading

README.md

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Dify Workflow Runner
2+
3+
このプロジェクトは、ローカル環境にDockerでインストールしたDifyにリクエストを送信し、その応答を処理するPythonスクリプトです。
4+
この例では、自分のPCにDifyをインストールし、ワークフローを作成しています。
5+
6+
7+
![Difyスクリーンショット](Dify-workflow.png "Dify Workflow Runnerのスクリーンショット")
8+
9+
10+
## 概要
11+
12+
このスクリプトは以下の機能を提供します:
13+
14+
1. Dify APIにワークフロー実行リクエストを送信
15+
2. ストリーミングレスポンスを受信して処理
16+
3. ワークフローの実行情報と生成されたコンテンツ(詩)を整形して表示
17+
18+
## 前提条件
19+
20+
- Python 3.6以上
21+
- Docker
22+
- ローカル環境にインストールされたDify
23+
24+
## セットアップ
25+
26+
1. このリポジトリをクローンします:
27+
28+
```
29+
git clone https://github.com/yourusername/dify-workflow-runner.git
30+
cd dify-workflow-runner
31+
```
32+
33+
2. 必要なPythonパッケージをインストールします:
34+
35+
```
36+
pip install -r requirements.txt
37+
```
38+
39+
これにより、`requests``python-dotenv`を含む必要なすべての依存関係がインストールされます。
40+
41+
3. `.env`ファイルを作成し、必要な環境変数を設定します:
42+
43+
```
44+
API_URL=http://localhost/v1/workflows/run
45+
API_KEY=your_api_key_here
46+
```
47+
48+
注意: `API_KEY`は実際のDify APIキーに置き換えてください。
49+
50+
## 使用方法
51+
52+
スクリプトを実行するには、以下のコマンドを使用します:
53+
54+
```
55+
python dify_workflow_runner.py
56+
```
57+
58+
スクリプトは、Dify APIにリクエストを送信し、レスポンスを処理して結果を表示します。
59+
60+
## 出力
61+
62+
スクリプトは以下の情報を出力します:
63+
64+
1. ワークフローの実行情報
65+
- ワークフロー実行ID
66+
- タスクID
67+
- ステータス
68+
- 合計トークン数
69+
- 合計ステップ数
70+
- 作成者ID
71+
- ユーザー
72+
- 作成時刻
73+
- 終了時刻
74+
- 実行時間
75+
76+
2. 生成されたコンテンツ(詩)
77+
78+
## 注意事項
79+
80+
- このスクリプトは、ローカル環境で動作するDifyを対象としています。他の環境で使用する場合は、`API_URL`を適切に変更してください。
81+
- APIキーは機密情報です。`.env`ファイルをGitリポジトリにコミットしないよう注意してください。
82+
- 依存関係は`requirements.txt`ファイルで管理されています。新しい依存関係を追加する場合は、このファイルを更新してください。
83+
84+
## 依存関係の更新
85+
86+
プロジェクトの依存関係を更新する場合は、以下の手順に従ってください:
87+
88+
1. `requirements.txt`ファイルを編集し、必要な変更を加えます。
89+
2. 以下のコマンドを実行して、依存関係を更新します:
90+
91+
```
92+
pip install -r requirements.txt --upgrade
93+
```
94+
95+
## ライセンス
96+
97+
[MITライセンス](LICENSE)
98+
99+
## 貢献
100+
101+
プルリクエストは歓迎します。大きな変更を加える場合は、まずissueを開いて変更内容を議論してください。
102+
103+
## サポート
104+
105+
問題や質問がある場合は、GitHubのissueを開いてください。

requestDify.py

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import requests
2+
import json
3+
from datetime import datetime
4+
import os
5+
from dotenv import load_dotenv
6+
7+
# .envファイルから環境変数を読み込む
8+
load_dotenv()
9+
10+
11+
def unix_to_datetime(unix_time):
12+
return datetime.fromtimestamp(unix_time).strftime('%Y年%m月%d日 %H:%M:%S')
13+
14+
15+
# 環境変数からURLとAPIキーを取得
16+
url = os.getenv('API_URL')
17+
api_key = os.getenv('API_KEY')
18+
19+
headers = {
20+
'Authorization': f'Bearer {api_key}',
21+
'Content-Type': 'application/json'
22+
}
23+
data = {
24+
"inputs": {
25+
"query": "Hear I go again!!"},
26+
"response_mode": "streaming",
27+
"user": "abc-123"
28+
}
29+
30+
response = requests.post(url, headers=headers, data=json.dumps(data), stream=True)
31+
32+
if response.status_code == 200:
33+
for line in response.iter_lines():
34+
if line:
35+
line = line.decode('utf-8')
36+
if line.startswith('data: '):
37+
event_data = json.loads(line[6:])
38+
if event_data['event'] == 'workflow_finished':
39+
workflow_data = event_data['data']
40+
41+
print("1. ワークフローの実行情報:")
42+
print(f" - ワークフロー実行ID: {workflow_data['id']}")
43+
print(f" - タスクID: {event_data['task_id']}")
44+
print(f" - ステータス: {workflow_data['status']}")
45+
print(f" - 合計トークン数: {workflow_data['total_tokens']}")
46+
print(f" - 合計ステップ数: {workflow_data['total_steps']}")
47+
print(f" - 作成者ID: {workflow_data['created_by']['id']}")
48+
print(f" - ユーザー: {workflow_data['created_by']['user']}")
49+
print(f" - 作成時刻: {unix_to_datetime(workflow_data['created_at'])}")
50+
print(f" - 終了時刻: {unix_to_datetime(workflow_data['finished_at'])}")
51+
print(f" - 実行時間: 約{workflow_data['elapsed_time']:.2f}秒")
52+
print("\n2. 生成されたコンテンツ(詩):")
53+
print(workflow_data['outputs']['response'])
54+
else:
55+
print(f"エラー: ステータスコード {response.status_code}")
56+
print(response.text)

requirements.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
requests==2.26.0
2+
python-dotenv==0.19.1

0 commit comments

Comments
 (0)