Difyのアプリ作成後、APIアクセスのページを見ると全て英語表記になっていて、いろいろなURLが用意されているので、それらの用途について簡単に整理することにしました。
2024/9月 Dify v0.7.3時点の情報になります。
結論
外部サービスからDify API通信するにはPOST通信。
事前にDify側で変数作っておいて、inputsで渡せば動作できる。
responseが返ってくるのであとは外部サービス側でうまいこと取得できるようにコード書けばOKです。
ワークフローアプリケーションAPI
ワークフローアプリケーションは、非セッションをサポートし、翻訳、記事作成、要約AIなどに最適です。
認証
Service APIはAPI-Key認証を採用しています。API-Keyの漏えいを防ぐため、クライアント側でAPI-Keyを共有したり保存したりせず、サーバー側でAPI-Keyを保存することを強く推奨します。
POST /workfows/run
ワークフローを実行します。ワークフローが公開されていないと実行できません。
POST通信なのでRequest Body で送る必要があります。
事前にDify側の開始ブロックで変数を設定しておき、inputs (オブジェクト) で渡すことができます。
response_modeは2種類・・streaming(推奨) 生成中も表示、blocking(全て実行後に結果表示)
userはユーザー情報、filesは資料・画像アップロード用ですが、Dify側でまだ画像しかアップロード対応していないので、おって動作確認必要です。
レスポンスはモードによって変わり、blockingならオブジェクト、streamingならChunkCompletionResponse streamで返却
blockingの場合
レスポンスのContent-Typeはapplication/json
statusが返ってくるのでこちらでエラーハンドリング
outputsがアウトプット、errorでエラーの理由
streamの場合
Content-Typeはtext/event-stream
それぞれのチャンクはdata: で始まり、\n\nで分割される。
GET /workflows/run/:workflow_id
ワークフロー実行詳細の取得。
ワークフロー実行 ID に基づき、ワークフロー タスクの現在の実行結果を取得する。
POST /workflows/tasks/:task_id/stop
生成の停止
ストリーミングモードでのみサポートされる。
GET /parameters
アプリケーション情報の取得
機能、入力パラメータ名、タイプ、デフォルト値などの情報を取得するために、 ページへの入力開始時に使用される。
DeepL.com(無料版)で翻訳しました。
この記事へのコメントはありません。