マルチLLMアプリをDify v0.10以降対応にアップデート+機能追加
Dify v0.10以降から、従来の「画像アップロード」に代わって「ファイルアプロード」機能がサポートされ、画像以外の文書、音声、映像などのファイルをアップロードし、ワークフローの中で参照したり、解析したりすることができるようになりました。
そこで、以前作成したマルチLLMアプリ「しげちゃっと」でも、GPT-4oなどのマルチモーダルLLMと組み合わせ、アップロードした文書や画像、音声データを参照・解析して回答するようにプチ改造することにしました。
ファイルアップロード
Dify v0.10以降では、画面右上の「機能」にある「画像アップロード」が「ファイルアプロード」に代わり、アップロードできるファイルの形式を選択できるようになりました。
同様に、「開始ノード」にある「入力フィールド」のフィールドタイプ「単一ファイル」「ファイルリスト」でも、アップロードできるファイルの形式を選択できるようになっています。
文書ファイルの参照
文書ファイルをアップロードした場合は、「テキスト抽出」ブロックでファイルに含まれるテキストを抽出し、GPT-4oなどのマルチモーダルLLMにコンテキスト情報として指定すれば、ナレッジと同様、LLMに外部の情報を参照して回答させることができるようになります。
音声ファイルの要約
音声ファイルをアップロードした場合は、LLMを音声音声入力・生成に対応した「gpt-4o-audio-preview」に設定し、ビジョン変数として「sys.files」を指定すれば、音声データからの文字起こしや要約、感情分析などが行えるようになります。
なお、単に音声認識によって文字起こししたいだけなら、「gpt-4o-audio-preview」ではなく、以前から提供されている Whisper API を使うほうがコストを低く抑えることできるようです。
Difyでアップロード可能な音声ファイル形式は「MP3」「M4A」「WAV」「WEBM」「AMR」なのに対し、「gpt-4o-audio-preview」がサポートする音声ファイルの形式は「WAV」「MP3」「FLAC」「OPUS」「PCM16」なので、実際に使用できるのは「WAV」「MP3」となります。
ところが、「MP3」ファイルをアップロードしようとすると、Dify側で「ファイル拡張子はサポートされていません」というエラーが表示され、アップロード自体ができません。
Difyの不具合(?)のようですが、現時点での最新バージョンである v0.11.0 でもエラーが発生しているので、修正されるまで待つしかないようです…
DeepL翻訳機能の修正
DeepL APIによる翻訳機能は前回実装しましたが、Dify 0.10にアップデートしてからエラーが発生して動作しなくなったので、DeepL APIのリクエストボディをFORM形式からJSON形式に変更してPOSTするよう設定し直しました。
前回はどうしてDeepL APIをFORM形式でPOSTしていたのか覚えていないw のですが、DeepL APIに限らず、リクエストボディをFORM形式でPOSTするタイプのAPI(Stable Diffusion 3 API、Whisper APIなど)は、Dify 0.10にアップデートしてからエラーが発生して動作しなくなってしまいました。
Difyの不具合(?)のようですが、現時点での最新バージョンである v0.11.0 でもエラーが発生しているので、こちらも修正されるまで待つしかないようです…
システムプロンプト
「しげちゃっと」は汎用的なチャットボットとしているので、デフォルトでは特定の役割や前提条件などを指定していません。そのため、「開始」ブロックに入力フィールドを追加し、オプションでLLMのシステムプロンプトを指定できるようにしました。
以下のように、システムプロンプトで「あなたは頭の良い10歳の女の子です。聡明な少女らしい口調で、わかりやすく話してください」などと指定すると…
少々難しいことを質問しても、NHKの子供番組のニュースコーナーのように、わかりやすく、聡明な少女のような口調で回答してくれますw
ワークフローの全体像
欲張って一つのWebアプリにいろいろな機能を詰め込んでいるので、「IF/ELSE」ブロックによる条件分岐だらけになってしまいましたが、今回、プチ改造した「しげちゃっと」のワークフロー全体像です。
スマホでの動作画面
複数のLLMを切り替えたり、マルチモーダルLLMや日本語・英語の翻訳など、さまざまな機能が一つのWebアプリに集約できたので、スマートフォンから使用する場合でも、とても便利です♪
この記事が気に入ったらサポートをしてみませんか?