🙆

makeでDify APIを活用したワークフロー構築 - Request Contentエラーの解決と設定方法

2024/05/21に公開

Difyは、強力なAIを搭載したプラットフォームであり、そのAPIを利用することで、テキスト生成、翻訳、要約など、様々なタスクを自動化することができます。makeは、様々なWebサービスを連携させて自動化ワークフローを構築できるツールであり、Dify APIと組み合わせることで、さらに高度な自動化を実現できます。

例えば、makeでYoutubeの新規動画投稿をトリガーに、Dify APIでその内容を要約、日本語に翻訳、そして結果を別のサービスに送信する、といったワークフローを構築することができます。
他にも、毎日定時に、Difyのワークフローを実行することができます。

しかし、makeでDify APIを叩く際、「bad_request」に遭遇することがあります。これは、APIリクエストで送信するJSONデータの形式が正しくないことが原因です。

code bad_request
message The browser (or proxy) sent a request that this server could not understand.
status 400

本稿では、makeでDify APIを利用する際に遭遇する「bad_request」の解決策と、HTTPモジュールの具体的な設定方法について解説します。

Request Contentエラーの解決:AIによるJSON整形

「bad_request」の原因は、多くの場合、JSONデータの文法ミスやフォーマットエラーです。手作業で修正することも可能ですが、複雑なデータ構造の場合、時間と労力を要します。そこで、AIによるJSON整形を指示することで、効率的にエラーを解決することができます。

以下は、AIによる整形前後のJSONデータの例です。

整形前

{
inputs"{
"url":"https://www.youtube.com/watch?v= {videoid}",
"response_mode":"Blocking",
"user": "abc-123"}
}

整形後

{
  "inputs": {
    "url": "https://www.youtube.com/watch?v={{11.videoid}}"
  },
  "response_mode": "blocking",
  "user": "abc-123"
}

整形前は、inputsキーの値が誤った形式でしたが、AIツールによって修正され、正しいJSON形式となっています。

makeでのDify APIリクエスト設定

Request Contentエラーを解決したら、makeのHTTPモジュールでDify APIを叩く設定を行います。具体的な設定項目は以下の通りです。

  1. Credentials: KeyにBearer app-hogehogeとしたら、通りました。
  2. URL: Dify APIのエンドポイントを指定します。これはDifyのドキュメントを参照してください。私のワークフローでは、このURLは入力変数 url として定義されています。

https://qiita.com/tregu148/items/da0ab139f358b2c66e68

  1. Method: APIリクエストのメソッドを指定します。Dify API /workflows/runでは、POSTメソッドを使用します。

  2. Headers: APIリクエストのヘッダー情報を指定します。Dify APIでは、APIキーによる認証が必要となるため、"Authorization"ヘッダーにAPIキーを含める必要があります。makeでは、APIキーは別途設定できるため、HTTPモジュールでHeadersを追加する必要はありません。

  3. Body Type: APIリクエストのボディのデータ形式を指定します。Dify APIでは、JSON形式を使用します。

  4. Content: APIリクエストのボディに含めるJSONデータを入力します。ここでは、先述のAIツールで整形したJSONデータを使用します。
    inputsの中身はあなたのworkflowの入力変数に合わせてください


まとめ

makeとDify APIを組み合わせることで、AIを活用した高度な自動化ワークフローを構築できます。Request Contentエラーに遭遇した場合でも、AIによるJSON整形ツールを活用することで効率的に解決できます。makeのHTTPモジュールを適切に設定することで、Dify APIをスムーズに利用し、業務効率化や新たなサービス開発につなげることが可能となります。

Discussion