Dify
日本語
日本語
  • 入門
    • Difyへようこそ
      • 特性と技術仕様
      • モデルプロバイダーリスト
    • クラウドサービス
    • コミュニティ版
      • Docker Compose デプロイ
      • ローカルソースコードで起動
      • aaPanelでのデプロイ方法
      • フロントエンドDockerコンテナを単独起動
      • 環境変数の説明
      • よくある質問
    • Dify Premium
    • Dify 教育版
  • マニュアル
    • モデル
      • 新しいプロバイダーの追加
      • 事前定義されたモデルの追加
      • カスタムモデルの追加
      • インタフェース
      • 配置ルール
      • 負荷分散
    • アプリ・オーケストレーション
      • アプリの作成
      • チャットボット
        • 複数モデルのデバッグ
      • エージェント
      • ツールキット
        • コンテンツモデレーション
    • ワークフロー
      • キーコンセプト
      • 変数
      • ノードの説明
        • 開始
        • 終了
        • 回答
        • LLM
        • 知識検索
        • 質問分類
        • 条件分岐
        • コード実行
        • テンプレート
        • テキスト抽出ツール
        • リスト処理
        • 変数集約
        • 変数代入
        • 反復処理(イテレーション)
        • パラメータ抽出
        • HTTPリクエスト
        • エージェント
        • ツール
        • 繰り返し処理(ループ)
      • ショートカットキー
      • オーケストレートノード
      • ファイルアップロード
      • エラー処理
        • 事前定義されたエラー処理ロジック
        • エラータイプの概要
      • 追加機能
      • プレビューとデバッグ
        • プレビューと実行
        • ステップ実行
        • 対話/実行ログ
        • チェックリスト
        • 実行履歴
      • アプリケーション公開
      • JSON形式での出力
      • 変更通知:画像アップロード機能がファイルアップロード機能に統合されました
    • ナレッジベース
      • ナレッジベース作成
        • 1. オンラインデータソースの活用
          • 1.1 Notion からデータをインポート
          • 1.2 Webサイトからデータをインポート
        • 2. チャンクモードの指定
        • 3. インデックス方式と検索オプションの設定
      • ナレッジベースの管理
        • ナレッジベース内ドキュメントの管理
        • APIを活用したナレッジベースのメンテナンス
      • メタデータ
      • アプリ内でのナレッジベース統合
      • リコールテスト/引用帰属
      • ナレッジベースの要求頻度制限
      • 外部ナレッジベースとの接続
      • 外部ナレッジベースAPI
    • ツール
      • クイック統合ツール
      • 高度統合ツール
      • ツールの設定
        • Google
        • Bing
        • SearchApi
        • StableDiffusion
        • Perplexity Search
        • AlphaVantage 株式分析
        • Dall-e
        • Youtube
        • Serper
        • SearXNG
        • SiliconFlow(Flux AI サポート)
        • ComfyUI
    • アプリ公開
      • シングルページWebアプリとして公開
        • Web アプリの設定
        • テキスト生成アプリ
        • 対話型アプリ
      • Webサイトへの埋め込み
      • API基づく開発
      • フロントエンドテンプレートに基づいた再開発
    • アノテーション
      • ログとアノテーション
      • アノテーション返信
    • モニタリング
      • データ分析
      • 外部Opsツール統合
        • LangSmithを統合
        • LangFuseを統合
        • Opikを統合
    • 拡張
      • API 拡張
        • Cloudflare Workers を使用した API ツールのデプロイ
        • コンテンツモデレーション
      • コード拡張
        • 外部データツール
        • コンテンツモデレーション
    • コラボレーション
      • 発見
      • メンバーの招待と管理
    • 管理
      • アプリの管理
      • チームメンバーの管理
      • 個人アカウントの管理
      • サブスクリプション管理
      • バージョン管理
  • ハンドオン工房
    • 初級編
      • ゼロからAI画像生成アプリの構築方法
      • AIエージェントの実践:個人のオンライン旅行アシスタントの構築方法
    • 中級編
      • チャットストリームエージェントを使用した Twitter アカウントの分析方法
      • ファイルアップロードを使用した記事理解アシスタントの構築方法
  • コミュニティ
    • サポートの求め
    • 貢献者ガイド
    • ドキュメントへの貢献
  • プラグイン
    • 機能紹介
    • クイックスタート
      • プラグインのインストールと活用
      • プラグイン開発の入門
        • 開発環境のセットアップ
        • ツール型プラグイン
        • モデル型プラグイン
          • モデルプロバイダーの構築
          • 定義済みモデルの組み込み
          • カスタムモデルの組み込み
        • エージェント戦略プラグイン
        • 拡張機能型プラグイン
        • バンドル
      • プラグインのデバッグ方法
    • プラグイン管理方法
    • スキーマ仕様
      • Manifest(マニフェスト)
      • Endpoint(エンドポイント)
      • Tool(ツール)
      • Agent(エージェント)
      • Model(モデル)
        • モデル設計規則
        • モデルスキーマ
      • 一般的な標準仕様
      • 永続化されたストレージ
      • Difyサービスの逆呼び出し
        • アプリ
        • モデル
        • ツール
        • ノード
    • ベストプラクティス
      • Slack Bot プラグインの開発
      • Dify MCP プラグインガイド:ワンクリックで Zapier に接続してメールを自動送信
    • プラグインの公開
      • プラグインの自動公開
      • Difyマーケットプレイスへの公開
        • プラグイン開発者ガイドライン
        • プラグインのプライバシー保護に関するガイドライン
      • 個人GitHubリポジトリへの公開
      • ローカルでの公開と共有
      • 第三者署名検証のためにプラグインに署名する
    • よくある質問
  • 開発
    • バックエンド
      • DifySandbox
        • 貢献ガイド
    • モデルの統合
      • Hugging Faceのオープンソースモデルを統合
      • Replicateのオープンソースモデルを統合
      • Xinferenceでデプロイしたローカルモデルを統合
      • OpenLLMでデプロイしたローカルモデルを統合
      • LocalAIでデプロイしたローカルモデルを統合
      • Ollamaでデプロイしたローカルモデルを統合
      • LiteLLM Proxyを使用してモデルを統合する
      • GPUStackとの統合によるローカルモデルのデプロイ
      • AWS Bedrock上のモデル(DeepSeek)の接続
    • 移行
      • コミュニティ版を v1.0.0 に移行する
  • もっと読む
    • 活用事例
      • DeepSeek & Dify連携ガイド:多段階推論を活用したAIアプリケーション構築
      • Ollama + DeepSeek + Dify のプライベートデプロイ:あなた自身のAIアシスタントの構築方法
      • あなた専用のQAチャットボットのトレーニング方法
      • コードなしでMidjourney プロンプトボットを作成する方法
      • Notion AI アシスタントを構築する
      • 数分で業務データを持つ公式サイトのAIチャットボットを作成する方法
      • DifyチャットボットをWixサイトに統合する方法
      • AWS Bedrockのナレッジベースに統合する方法
      • Difyで大規模言語モデルの「競技場」を体験する方法:DeepSeek R1 VS o1 を例に
      • Difyスケジューラーの構築
      • DifyクラウドでAI Thesis Slack Botを構築
    • さらに読む
      • LLMOpsとは何ですか?
      • 配列変数とは何ですか?
      • 検索拡張生成(RAG)
        • ハイブリッド検索
        • Rerank
        • リトリーバルモード
      • プロンプトエンジニアリング
      • DifyでJSONスキーマ出力を使用する方法
    • FAQ
      • ローカルデプロイに関するFAQ
      • LLM設定と使用に関するFAQ
      • プラグイン
  • ポリシー
    • オープンソースライセンス
    • ユーザ規約
      • 利用規約
      • プライバシーポリシー
      • 合規性レポートの入手方法
Powered by GitBook
On this page
  • アプリのシナリオ
  • ファイルアップロードとナレッジベースの基本的な違い
  • はじめに: ファイルアップロード機能を持つチャットフロー/ワークフローアプリの簡単な作り方
  • 上級者向けの使用方法
  1. マニュアル
  2. ワークフロー

ファイルアップロード

チャットのテキストとは異なり、ドキュメントには学術的な報告や法的な契約など、より複雑で多量の情報が含まれることがよくあります。しかし、大規模言語モデル(LLM)は、テキストや画像の処理に限られているため、これらの文書に含まれる豊富なコンテキストを理解するのが難しいです。結果として、ユーザーはよく、多くの情報を手動でコピー&ペーストしてLLMに入力し、それによって運用上の負担が増えてしまいます。

ファイルアップロード機能はこの問題に対応し、ワークフローアプリ内でファイルをアップロードし、解析し、参照し、ダウンロードすることを可能にします。これにより、開発者は画像、音声、映像など、さまざまなタイプのメディアを理解し、扱えるより複雑なワークフローを容易に構築できるようになります。

アプリのシナリオ

  1. 文書分析: 学術的な研究報告をアップロードし、LLMがその内容から重要なポイントを迅速にまとめて、関連する質問に回答できます。

  2. コードレビュー: 開発者がコードファイルをアップロードし、最適化の提案やバグの発見を受け取れます。

  3. 学習のサポート: 学生が課題や学習資料をアップロードし、パーソナライズされた説明や指導を受けられます。

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

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

ファイルアップロードとナレッジベースは、いずれもLLMに追加情報を提供する方法ですが、それらを活用するシチュエーションと各々が持つ特性が大きく異なります:

  1. 情報の出所:

    • ファイルアップロード:利用者が会話の流れの中でリアルタイムにファイルをアップロードすることができ、その場に応じたカスタマイズされた情報を提供します。

    • ナレッジベース:開発者によってあらかじめ準備され、一定の情報が含まれています。

  2. 柔軟性の面での違い:

    • ファイルアップロード:よりフレキシブルに対応可能で、利用者は自身のニーズに応じて様々な種類のファイルをアップロードできます。

    • ナレッジベース:内容は基本的に固定されていますが、異なるセッションでも再利用が可能です。

  3. 情報の取り扱い:

    • ファイルアップロード:アップロードされたファイルの内容をLLMが理解できる形式のテキストに変換するため、文書の抽出ツールなどが必要になります。

    • ナレッジベース:通常、事前に整理され、インデックスが作成されており、直接的にアクセス可能です。

  4. 適用シナリオ:

    • ファイルアップロード:利用者特有のドキュメントを扱う必要がある状況に適しており、例えば文書の分析やパーソナライズされた学習支援などがあります。

    • ナレッジベース:大量の既定情報へアクセスが必要な場合に適しており、顧客サポートや製品に関する問い合わせなどが該当します。

  5. データの持続性:

    • ファイルアップロード:基本的には一時的な使用を目的としており、システム内での長期保持はされません。

    • ナレッジベース:アプリに長期間組み込まれ、定期的に更新され、管理されることが期待されます。

はじめに: ファイルアップロード機能を持つチャットフロー/ワークフローアプリの簡単な作り方

  • ワークフローアプリの場合:

  • チャットフローアプリの場合:

    • 注意点:この2つの設定は独立しており、両方同時に行うことができます。追加機能でのファイルアップロード設定(アップロードの方式や制限数を含む)は、開始ノードで設定したファイル変数には影響を与えません。例えば、開始ノードでのみファイル変数を作成したい場合は、追加機能でファイルアップロードを有効にする必要はありません。

これにより、アプリはさまざまな使用シナリオに対応するための柔軟なファイルアップロードオプションを提供します。

ファイルタイプ

File変数とarray[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:ファイル処理機能を持つ言語モデルの使用

トラブルを避けるため、開発者は言語モデルを使う前にサポートされるファイルタイプを公式サイトで確認することが推奨されます。

  1. チャットフローまたはワークフローアプリの作成をクリックします。

  2. 言語モデルノードを追加し、ファイル処理機能を持つ言語モデルを選択します。

  3. 開始ノードにファイル変数を追加します。

  4. 言語モデルノードのシステムプロンプトにファイル変数を設定します。

  5. 設定を完了します。

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

  1. チャットフローアプリの右上にある「機能」ボタンを押すと、新しい機能を追加できます。この機能を使うことで、ユーザーは会話中にファイルのアップロードや更新が可能になります。最大10ファイルまで一度にアップロードでき、一つのファイルは15MBまでのサイズ制限があります。

ただし、この機能をオンにしても、LLMがファイルを直接読むわけではありません。テキストに変換してLLMが理解できるようにするためにはテキスト抽出ツールが必要です。

  • 音声ファイルはgpt-4o-audio-previewのようなマルチモーダル入力をサポートするモデルによって直接処理可能ですが、追加のエクストラクターは必要ありません。

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

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

  3. 最後に、「回答」ノードを設置し、LLMノードからの出力変数を入力します。

機能を有効にした後は、ユーザーがファイルをアップロードし、ダイアログボックスを通じて会話に参加することが可能になります。ただし、この機能では、LLMアプリケーションがファイル内容を保持することができず、会話のたびにファイルの再アップロードが必要になります。

会話中にLLMがファイル内容を記録しておく機能を希望する場合は、別の方法として方法3を参照してください。

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

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

  • 単一ファイル

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

  • ファイルリスト

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

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

ファイルの解析方法

ファイル変数を扱う際には、主に2つのアプローチがあります:

  1. ツールノードを活用してファイルの内容を変換する方法:

    • 文書ファイルに対しては、「ドキュメントエクストラクター」ノードを使用して内容をテキスト形式に変換可能です。

    • この手法は、モデルが解釈可能な形(例:文字列や文字列の配列)にファイル内容を変換する必要がある場合に適しています。

  2. LLMノードを使ってファイル変数を直接参照する方法:

    • 画像などの特定のファイルについては、LLMノードを通じてファイル変数を直接扱うことができます。

    • 画像ファイルの場合、LLMノード内でビジョン機能を有効にし、該当するファイル変数を変数セレクターから直接選択できます。

どちらの方法を選ぶかは、扱うファイルの種類と具体的なニーズによって異なります。以下では、これらの手法を具体的にどのように実行するかについて解説します。

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

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

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

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

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

LLMノードにおけるファイル変数の参照

特定のファイルタイプ(例えば画像ファイル)を扱う際、LLMノードを利用してファイル変数にアクセスすることが可能です。このアプローチは、視覚データの分析が求められるシナリオに特に適しています。具体的には次のステップに従います:

  1. LLMノードで視覚機能をオンにします。これにより、モデルが画像データの解析を行えるようになります(ただし、モデルが視覚機能をサポートしている必要があります)。

  2. LLMノードの変数セレクターを使用して、事前に設定したファイル変数を選択します。ファイルのアップロード機能が有効になっている場合、sys.files変数を選択することになります。

  3. システムによる指示で、モデルに対して画像データの扱い方を伝えます。例えば、画像の内容を説明させたり、画像に基づいた質問に答えさせたりすることができます。

以下に設定例を示します:

LLMノードを介してファイル変数を利用する際には、開発者がファイル変数に含まれるのが画像ファイルだけであることを確認する必要があります。そうでない場合、エラーが発生する可能性があります。異なるタイプのファイルがアップロードされる可能性がある場合は、ファイルを適切にフィルタリングするためにリストオペレーターノードの使用が必要です。

ファイルのダウンロード

応答ノードや終了ノードにファイル変数を設定すると、そのノードがトリガされた際に会話ウィンドウにファイルダウンロードのカードが表示されます。カードをクリックすることで、ファイルをダウンロードできます。

上級者向けの使用方法

PreviousオーケストレートノードNextエラー処理

Last updated 5 months ago

Difyは、ファイルアップロードをサポートするやタイプのアプリ開発を可能にし、特別な変数を用いてこれらのファイルを処理します。アプリ開発者は次の手順に従って、アップロード機能を組み込むことができます。

にファイル変数を設定する

チャットウインドウで直接ファイルをアップロードできるように、でファイルアップロードを有効にする

にファイル変数を設定する

のような言語モデルは、ファイルの内容を直接処理・分析する機能をサポートしており、言語モデルのプロンプトでファイル変数を利用できます。

映像やその他のファイルタイプには対応するエクストラクターがないため、アプリ開発者は処理のために必要があります。

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

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

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

チャットフロー
ワークフロー
開始ノード
追加機能
開始ノード
Claude 3.5 Sonnet
外部ツールを統合する
「開始」
「テキスト抽出ツール」
リスト操作
ファイルアップロード
入力変数の追加
LLMノードを使用してファイル変数にアクセスする
ファイルのダウンロード