🦁
DifyでLLMのバックエンドAPIを作成してみる
話題のDifyを軽く触ってみます。
前提
- SaaSの無料枠の範囲で試します
アカウント作成
飛ばします
アプリ作成
今回はAPIとして使用するのでワークフローの作成を選択します
ワークフロー構築
LLMの選択
画像のようなワークフローを構築する画面になるのでとりあえずLLMを選択しておきます。
インプットの定義
で、モデルを定義する前に受け取るインプット変数を定義します。
「開始」->「入力フィールドの+」->「変数名」
セットするとこんな感じ。
モデルの選択
次にLLMの設定に戻って使いたいモデルを選択します。
無料枠なので選択可能なものは軽量なモデルのみですね。
プロンプト
プロンプトをセットします。
systemは適当に、Userに先ほど定義したインプットを入力します。
ワークフローの終了を定義
ワークフローでは開始〜終了までが一つのセットです。
「終了」を接続します。
終了のアウトプットにLLMのTextを定義します。
完成
公開します。
APIの実行
APIキーの作成
APIキーを作ります。
実行
下にスクロールするとDocsがあるのでそれに沿ってcurlで実行してみます。
今回はworkflowを実行するので workflow/run
を使います。
- {api_key}に先ほど作成したAPIキーをセット
- inputsに
インプットの定義
で定義した変数と、適当な値をセットします。
curl -X POST 'https://api.dify.ai/v1/workflows/run' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {
"input": "こんにちは。"
},
"user": "abc-123"
}' | jq
実行結果
$ curl -X POST 'https://api.dify.ai/v1/workflows/run' \
--header 'Authorization: Bearer 秘密' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {
"input": "こんにちは。"
},
"user": "abc-123"
}' | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 643 100 557 100 86 440 67 0:00:01 0:00:01 --:--:-- 508
{
"task_id": "fafb0d93-4f63-4cda-983a-6b4a1856ad20",
"workflow_run_id": "cf58c1b8-57f6-470d-9733-1478d53c1ca7",
"data": {
"id": "cf58c1b8-57f6-470d-9733-1478d53c1ca7",
"workflow_id": "8fd57fe3-c68e-4de9-aa43-89225e64310b",
"status": "succeeded",
"outputs": {
"output": "こんにちは!どういったことをお話ししましょうか?"
},
"error": null,
"elapsed_time": 0.7792856250889599,
"total_tokens": 37,
"total_steps": 3,
"created_at": 1727445056,
"finished_at": 1727445056
}
}
はい、完璧。
その他
あとは、ワークフローでいろんなことができるので自由にカスタマイズすると面白いですね。
以上
参考になりそうな技術記事も書いているので興味あればぜひ。
Discussion