🔧

difyのdropboxツールのファイルダウンロードを試す

に公開

Difyを開発しているLangGeniusが下記のツールをリリースしていたので、APIに親しんでいない方でも使えるなと思い、試してみました。
https://marketplace.dify.ai/plugins/langgenius/dropbox

ファイルダウンロードとは

ファイルの概要(ファイル名、サイズなど)だけでなく、「内容を含める」ことができ、ファイルの内容を取得できます。

「内容を含める」を使いたいケース

Difyでは入力フィールドとしてファイルを指定できます。これを使ってファイルをアップロードし、LLMにファイルの情報を取り込ませることで、様々な加工ができます。
ただ、ファイルが一箇所に集約されている場合、「ファイルをアップロードする」事が手間です。
こんな場合です。

  • 生徒が書いたレポートをある場所にアップロードしてもらい、内容を分析する
  • 製品への問い合わせ時に、画像ファイルをアップロードしてもらい、その画像を解析する
  • 複数人で書いた議事録をアップロードしてもらい、LLMを使って文体の統一された議事録に仕上げる

「内容を含める」は使えるか

内容が64KBまでのファイルしか読み取れない

大きいファイルを読み取ろうとしたときに「failed to read response body: bufio.Scanner: token too long」というエラーが発生しました。

64BKBに収まるファイルを読み取るだけであれば対応できる or 64KBを超えたらAPIで処理すれば対応できそうです。
...「APIを使う」辺りで、当初の「APIに親しんでいない方でも」という目論見は破綻してしまいました。

今回組んだワークフロー

ワークフロー図

実装時の注意点

1. Dropboxツールノードのファイル一覧の設定

フォルダの名前は / (スラッシュ)から始める必要があります。
フローの最初にフォルダ名を入力させる場合、スラッシュから入力する人は稀なので、prefixとして/を入れておくとよいです。

2. Dropboxツールノードのファイルダウンロードの「内容を含める」設定

「内容を含める」のところに true と入力していますが、booleanで判断しているようなので、trueと判断される文字列であれば何でもいいです。
Dropbox設定画面

3. コード実行ノードの出力変数の設定

dictで出力して変数と紐づけるところがわかりにくいので記載します。
コード実行設定画面

DELTAテックブログ

Discussion