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

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

適用シーン

  1. 文書分析: 学術研究報告書をアップロードすると、LLMは迅速にポイントを要約し、ファイルの内容に基づいて関連する質問に回答します。
  2. コードレビュー: 開発者がコードファイルをアップロードし、最適化の提案やバグの検出を受けることができます。
  3. 学習サポート: 学生が課題や学習資料をアップロードし、個別の説明やガイダンスを得ることができます。
  4. 法的支援: 完全な契約書のテキストをアップロードし、LLMが条項をレビューし、潜在的なリスクを指摘します。

ファイルのアップロードとナレッジベースの違い

ファイルのアップロードとナレッジベースは、言語モデル(LLM)に追加のコンテキスト情報を提供する手段ですが、それぞれの使用シーンや機能には明確な違いがあります。

  1. 情報のソース
  • ファイルのアップロード:エンドユーザーは対話中に動的にファイルをアップロードし、即座に個別化されたコンテキストを提供します。
  • ナレッジベース:アプリケーション開発者が事前に設定・管理した、比較的固定された情報セットを含みます。
  1. 柔軟性
  • ファイルのアップロード:柔軟性が高く、ユーザーは特定のニーズに応じて様々なタイプのファイルをアップロードできます。
  • ナレッジベース:内容は比較的固定されていますが、複数のセッションで再利用が可能です。
  1. 情報処理
  • ファイルのアップロード:ファイルの内容をLLMが理解できるテキストに変換するためには、ドキュメントエクストラクターなどのツールが必要です。このツールは、ファイルから必要な情報を抽出し、モデルが処理できる形式に整えます。
  • ナレッジベース:通常、前処理とインデックス作業が完了しているため、直接検索して情報を取得できます。
  1. アプリケーションシーン
  • ファイルのアップロード:ユーザー固有の文書を処理する必要があるシーンで非常に有効です。例えば、文書分析やパーソナライズされた学習支援などが挙げられます。
  • ナレッジベース:大量の事前設定情報にアクセスする必要がある場合に適しています。たとえば、カスタマーサービスや製品相談などです。
  1. データの永続性
  • ファイルのアップロード:通常は一時的な使用であり、システムに長期間保存されることはありません。
  • ナレッジベース:アプリケーションの一部として長期間存在し、継続的に更新・メンテナンスされることが可能です。

はじめに

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.
その他カスタム拡張子がサポートされます。

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

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

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

ファイルアップロード機能

機能を有効にしても、LLM(大規模言語モデル)がファイルを直接読み取ることはできません。ファイルをLLMが理解できるテキスト形式に変換するには、が必要です。

  • 音声ファイルについては、gpt-4o-audio-previewなどのマルチモーダル入力に対応したモデルを使用することで、音声を直接処理できます。この場合、追加のエクストラクタは必要ありません。
  • 映像やその他のファイルタイプについては、対応するエクストラクタがまだ用意されておらず、外部ツールを統合するためには開発者が外部ツールにアクセスする必要があります。外部ツールを接続して処理する必要があります。
  1. テキスト抽出ツールノードを追加し、入力変数で sys.files 変数を選択します。
  2. LLMノードを追加し、システムプロンプトでテキスト抽出ツールノードの出力変数を選択します。
  3. 最後に「直接応答」ノードを追加し、LLMノードの出力変数を入力します。

ファイルアップロードののワークフロー

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

会話ボックスでのファイルのアップロード

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

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

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

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

  • 単一ファイル

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

  • ファイルリスト

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

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

ファイルの解析方法

ファイル変数の使用方法には主に2つのアプローチがあります:

  1. ツールノードを利用してファイルの内容を変換する:
    • ドキュメント形式のファイルの場合、「ドキュメントエクストラクタ」ノードを使ってファイルの内容をテキスト形式に変換できます。
    • この方法は、ファイルの内容をモデルが理解できる形式(例: string、array[string]など)に変換する必要がある場合に適しています。
  2. LLMノード内でファイル変数を直接使用する:
    • 特定の種類のファイル(例: 画像)の場合、LLMノード内でファイル変数を直接使用することができます。
    • たとえば、画像形式のファイル変数を使用する場合、LLMノードで視覚機能を有効にし、変数セレクターで該当するファイル変数を直接参照できます。

どちらの方法を選ぶかは、ファイルの種類と具体的な要件によります。以下で、これら2つの方法の具体的な手順について詳しく説明します。

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

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

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

入力変数を追加する

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

システムプロンプトの単語を貼り付けます

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

URL を貼り付けて会話を開始します

LLMノードでファイル変数を参照する方法

特定の種類のファイル(例: 画像)の場合、LLMノード内でファイル変数を直接使用できます。この方法は、視覚的解析が必要な場面に特に適しています。具体的な手順は以下の通りです:

  1. LLMノードで視覚機能を有効にします。これにより、モデルが画像入力を処理できるようになります(モデルが視覚機能をサポートしている必要があります)。
  2. LLMノードの変数セレクターで、以前に作成したファイル変数を直接参照します。ファイルのアップロードによって作成されたファイル変数を選択する場合は、sys.files変数を選択します。
  3. システムプロンプトで、モデルに画像入力の処理方法を指示します。たとえば、モデルに画像の内容を説明させたり、画像に関する質問に答えさせたりできます。

以下は設定の例です:

LLM ノードでファイル変数を直接使用する

LLMノード内でファイル変数を直接使用する際は、そのファイル変数が画像ファイルのみを含むようにする必要があります。それ以外の場合、エラーが発生する可能性があります。ユーザーが異なる種類のファイルをアップロードする可能性がある場合は、フィルタリングを行うためにリスト操作を使用することが重要です。

ファイルのダウンロード方法

ファイル変数をanswerノードまたはendノードに配置すると、アプリケーションがそのノードに到達した際に、セッションボックスにファイルダウンロードカードが表示されます。このカードをクリックすることで、ファイルをダウンロードできます。

ファイルダンロード

上級者向けの使用方法

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

複数のファイルタイプの処理

このページは役に立ちましたか?