ファイルアップロード

著者:Steven and Allen. Difyのテクニカルライター

多くの専門的なコンテンツは文書ファイルに保存されており、学術報告書や法的契約などが含まれます。LLMは入力源としてテキストや画像に限定されており、ファイル内の豊富なコンテキスト情報を取得することが難しいため、多くのユーザーは大量の情報を手動でコピー&ペーストしてLLMと対話しなければならず、適用範囲は制限されます。

ファイルアップロード機能を利用することで、ファイルをFile変数の形式でワークフローアプリにアップロード、解析、参照、ダウンロードすることができます。これにより、開発者は画像、音声、ビデオを理解し処理する複雑なタスクを簡単に構築できるようになります。

適用シーン

  1. 文書分析: 学術研究報告書をアップロードすると、LLMは迅速にポイントを要約し、ファイルの内容に基づいて関連する質問に回答します。

  2. コードレビュー: 開発者がコードファイルをアップロードし、最適化の提案やバグの検出を受けることができます。

  3. 学習サポート: 学生が課題や学習資料をアップロードし、個別の説明やガイダンスを得ることができます。

  4. 法的支援: 完全な契約書のテキストをアップロードし、LLMが条項をレビューし、潜在的なリスクを指摘します。

はじめに

Difyは、チャットフローワークフロー タイプのアプリでファイルをアップロードし、LLMに処理させる変数をサポートしています。アプリ開発者は、以下の2つの方法でアプリにファイルアップロード機能を追加できます:

  • 追加機能でファイルアップロードを有効にする(チャットフローのみ対応)

  • 開始ノードにファイル変数を追加する

追加機能を有効にすると、チャットフローのノードでsys.fileを使用してチャットウィンドウからアップロードされたファイルを利用できます。sys.fileのファイル変数は一時的なもので、複数の対話で最新のアップロードファイルに上書きされ、開始ノードのファイル変数は常に開始ノード内のファイルを指します。

ファイルタイプ

以下のファイルタイプとフォーマットがサポートされています:

ファイルタイプ

サポートされるフォーマット

文書

TXT, MARKDOWN, PDF, HTML, XLSX, XLS, DOCX, CSV, EML, MSG, PPTX, PPT, XML, EPUB.

画像

JPG, JPEG, PNG, GIF, WEBP, SVG.

音声

MP3, M4A, WAV, WEBM, AMR.

映像

MP4, MOV, MPEG, MPGA.

その他

カスタム拡張子がサポートされます。

方法1:チャットボックスでファイルアップロードを有効にする(ChatFlowのみ対応)

  1. ChatFlowアプリの右上隅にある 「機能」 ボタンをクリックして、アプリにさらに機能を追加できます。

    この機能を有効にすると、アプリユーザーは対話中にいつでもファイルをアップロードおよび更新できます。最大10個のファイルを同時にアップロードでき、各ファイルのサイズ上限は15MBです。

この機能を有効にしても、LLMにファイルを直接読み取る権限は与えられません。ファイルをLLMが理解できるテキストに解析するためにはが必要です。音声、ビデオ、およびその他のファイルタイプには対応するエクストラクターが存在せず、アプリ開発者が外部ツールを接続して処理する必要があります。

  1. テキスト抽出ツールノードを追加し、入力変数で sys.files 変数を選択します。

  2. LLMノードを追加し、システムプロンプトでテキスト抽出ツールノードの出力変数を選択します。

  3. 最後に「直接応答」ノードを追加し、LLMノードの出力変数を入力します。

有効にすると、ユーザーは対話ボックスでファイルをアップロードして対話できます。ただし、この方法では、LLMアプリはファイルの内容を記憶する能力を持ちません。各対話ごとにファイルをアップロードする必要があります。

LLMが対話中にファイル内容を記憶する機能を追加したい場合は、方法2を参照してください。

方法2:ファイル変数を追加してファイルアップロード機能を有効にする

1. 「開始」ノードにファイル変数を追加する

アプリの「開始」ノードに、**「単一ファイル」または「ファイルリスト」**といったフィールドタイプの変数を追加します。

  • 単一ファイル

    ユーザーが1つのファイルだけをアップロードできるようにします。

  • ファイルリスト

    ユーザーが複数のファイルを一度にアップロードできるようにします。

操作を簡単にするため、ここでは「単一ファイル」変数の例を用います。

2. テキスト抽出ツールノードの追加

ファイルをアップロードすると、そのファイルは「単一ファイル」変数に保存されます。しかし、LLMは変数内のファイルを直接読み込むことができないため、まず「テキスト抽出ツール」ノードを追加する必要があります。

このノードは、アップロードしたドキュメントファイルから内容を抽出し、LLMノードに送信して情報処理を行います。

「開始」ノード内のファイル変数を**「テキスト抽出ツール」**ノードの入力変数として使用します。

「テキスト抽出ツール」ノードの出力変数をLLMノードのシステムプロンプトに貼り付けます。

これらの設定が完了すると、ユーザーはWebApp内でファイルのURLを貼り付けるか、ローカルファイルをアップロードでき、その後、ドキュメントの内容に基づいてLLMとの対話が可能になります。ユーザーは対話の過程でいつでもファイルを置き換えることができ、LLMは常に最新のファイル内容を取得します。

上級者向けの使用方法

アプリが複数のファイル形式に対応できるようにしたい場合、例えば、ユーザーがドキュメントファイル、画像、音声、動画ファイルを同時にアップロードできるようにするには、「開始」ノードに「ファイルリスト」変数を追加し、「リスト操作」ノードを使用して異なるファイルタイプを処理する必要があります。詳細については、リスト操作ノードを参照してください。

さらに使用例を見るには、以下のコンテンツをご参照ください:

実験室 - ファイルアップロードを使用して記事理解アシスタントを構築する(リンクは公開後に置き換え)

Last updated