多くの専門的なコンテンツは文書ファイルに保存されており、学術報告書や法的契約などが含まれます。LLMは入力源としてテキストや画像に限定されており、ファイル内の豊富なコンテキスト情報を取得することが難しいため、多くのユーザーは大量の情報を手動でコピー&ペーストしてLLMと対話しなければならず、適用範囲は制限されます。
ファイルアップロード機能を利用することで、ファイルをFile変数の形式でワークフローアプリにアップロード、解析、参照、ダウンロードすることができます。これにより、開発者は画像、音声、映像を理解し処理する複雑なタスクを簡単に構築できるようになります。
ファイルのアップロードとナレッジベースは、言語モデル(LLM)に追加のコンテキスト情報を提供する手段ですが、それぞれの使用シーンや機能には明確な違いがあります。
Difyは、チャットフロー と ワークフロー タイプのアプリでファイルをアップロードし、LLMに処理させる変数をサポートしています。アプリ開発者は、以下の2つの方法でアプリにファイルアップロード機能を追加できます:
これらの方法は、さまざまなシーンの要件を満たすために、アプリケーションに柔軟なファイルアップロードオプションを提供します。
以下のファイルタイプとフォーマットがサポートされています:
ファイルタイプ | サポートされるフォーマット |
文書 | 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. |
その他 | カスタム拡張子がサポートされます。 |
チャットフローアプリの右上隅にある 「機能」 ボタンをクリックして、アプリにさらに機能を追加できます。
この機能を有効にすると、アプリユーザーは対話中にいつでもファイルをアップロードおよび更新できます。最大10個のファイルを同時にアップロードでき、各ファイルのサイズ上限は15MBです。
ファイルアップロード機能
機能を有効にしても、LLM(大規模言語モデル)がファイルを直接読み取ることはできません。ファイルをLLMが理解できるテキスト形式に変換するには、が必要です。
gpt-4o-audio-preview
などのマルチモーダル入力に対応したモデルを使用することで、音声を直接処理できます。この場合、追加のエクストラクタは必要ありません。sys.files
変数を選択します。ファイルアップロードののワークフロー
有効にすると、ユーザーは対話ボックスでファイルをアップロードして対話できます。ただし、この方法では、LLMアプリはファイルの内容を記憶する能力を持ちません。各対話ごとにファイルをアップロードする必要があります。
会話ボックスでのファイルのアップロード
LLMが対話中にファイル内容を記憶する機能を追加したい場合は、方法2を参照してください。
アプリの「開始」ノードに、**「単一ファイル」**または 「ファイルリスト」 といったフィールドタイプの変数を追加します。
単一ファイル
ユーザーが1つのファイルだけをアップロードできるようにします。
ファイルリスト
ユーザーが複数のファイルを一度にアップロードできるようにします。
操作を簡単にするため、ここでは「単一ファイル」変数の例を用います。
ファイル変数の使用方法には主に2つのアプローチがあります:
どちらの方法を選ぶかは、ファイルの種類と具体的な要件によります。以下で、これら2つの方法の具体的な手順について詳しく説明します。
ファイルをアップロードすると、そのファイルは「単一ファイル」変数に保存されます。しかし、LLMは変数内のファイルを直接読み込むことができないため、まず「テキスト抽出ツール」ノードを追加する必要があります。
「開始」ノード内のファイル変数を 「テキスト抽出ツール」 ノードの入力変数として使用します。
入力変数を追加する
「テキスト抽出ツール」ノードの出力変数をLLMノードのシステムプロンプトに貼り付けます。
システムプロンプトの単語を貼り付けます
これらの設定が完了すると、ユーザーはWebApp内でファイルのURLを貼り付けるか、ローカルファイルをアップロードでき、その後、ドキュメントの内容に基づいてLLMとの対話が可能になります。ユーザーは対話の過程でいつでもファイルを置き換えることができ、LLMは常に最新のファイル内容を取得します。
URL を貼り付けて会話を開始します
LLMノードでファイル変数を参照する方法
特定の種類のファイル(例: 画像)の場合、LLMノード内でファイル変数を直接使用できます。この方法は、視覚的解析が必要な場面に特に適しています。具体的な手順は以下の通りです:
以下は設定の例です:
LLM ノードでファイル変数を直接使用する
LLMノード内でファイル変数を直接使用する際は、そのファイル変数が画像ファイルのみを含むようにする必要があります。それ以外の場合、エラーが発生する可能性があります。ユーザーが異なる種類のファイルをアップロードする可能性がある場合は、フィルタリングを行うためにリスト操作を使用することが重要です。
ファイル変数をanswerノードまたはendノードに配置すると、アプリケーションがそのノードに到達した際に、セッションボックスにファイルダウンロードカードが表示されます。このカードをクリックすることで、ファイルをダウンロードできます。
ファイルダンロード
アプリが複数のファイル形式に対応できるようにしたい場合、例えば、ユーザーがドキュメントファイル、画像、音声、動画ファイルを同時にアップロードできるようにするには、「開始」ノードに「ファイルリスト」変数を追加し、「リスト操作」ノードを使用して異なるファイルタイプを処理する必要があります。詳細については、リスト操作ノードを参照してください。
複数のファイルタイプの処理