🦁

DifyでLLMのバックエンドAPIを作成してみる

2024/09/27に公開

話題のDifyを軽く触ってみます。
https://dify.ai/jp

前提

  • 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
  }
}

はい、完璧。

その他

あとは、ワークフローでいろんなことができるので自由にカスタマイズすると面白いですね。

以上

参考になりそうな技術記事も書いているので興味あればぜひ。
https://delt.co.jp/article

Discussion