はじめに
RAGなどLLMを活用したアプリケーションを作成する際には、どのモデルを利用するのが良いか比較するケースがあると考えられる
Difyでは比較的簡単に複数のモデルの回答を比較できそうなので、その実装方法を検討した
今回はRAG構築する中で複数のモデルの回答を得られるアプリを実装した
チャット実行時にモデルを選択するタイプ
モデル選択式ワークフローの作成
Knowledge Retrieval + Chatbot
のこのテンプレートを使用する
をクリックする
ポイントは以下
-
Start
に使用するモデルを選択するパラメータを追加 -
LLM
ブロックを複数作成してそれぞれ使用するモデルを設定 -
IF/ELSE
ブロックにて選択したモデルを選択するパラメータに応じたLLM
ブロックを紐づける - 複数の
LLM
ブロックが出力した結果を変数集約器
でまとめる -
ANSWER
ブロックで回答結果が分かりやすいように編集
モデル選択パラメータの追加
フィールドタイプ
は選択
を選んだうえで、変数名
,ラベル名
では任意の値を設定し、オプションを追加
ボタンを押して選択可能なモデル名のリストを追加して保存
ボタンをクリックする
複数LLMの追加
テンプレートとして追加されているLLM
の名前を任意に修正し、モデル
で使用したいモデルを選択する
コンテキスト
はKNOWLEDGE RETRIEVAL_result
を選択する
SYSTEM
にはプロンプトを入力しておく
LLM
ブロックの右上の...
をクリックし、コピー
を選択すると同じ設定のLLMブロックがコピーされる
スタジオパネル内で右クリックしここに貼り付け
を選択するとコピーされたLLMブロックが貼り付けられる
貼り付けたLLM
ブロックを選択したうえで、モデル
を他に使用したいモデルへ変更して複数のLLM
ブロックを作成できる
IF/ELSEロジックの追加
Start
にて追加したselectmodel
パラメータに応じて使用するLLM
ブロックを紐づける
Dify v0.6.14からIF/ELSEブロックにELIFが追加されたので複数モデルを選択できる
変数集約器の追加
変数集約器
ブロックの変数を代入する
の右側の+
をクリックして、各LLM
からの出力を追加する
Answerの編集
Answer
ブロックを選択して回答
フィールドを編集する
どのモデルからの回答かをわかりやすくするために``START_selectmodel からの回答
という文章を追加する
回答自体は`変数集約器_output`が出力されるようにする
全ての編集が完了したら公開する
-> 更新
ボタンをクリックする
アプリケーションの実行
selectmodel
フィールドで利用したいモデルを選択する
回答結果のところのワークフロー処理
を展開するとどのモデルが選択されたかが確認できる
複数モデルの回答を列挙するタイプ
複数モデル回答式ワークフローの作成
上記で作成したアプリを複製して作成する
上記で作成したアプリの右下隅の...
ボタン -> 複製
をクリックする
ポイントは以下
-
Start
に追加した使用するモデルを選択するパラメータは不要のため削除 -
LLM
ブロックとANSWER
ブロックを直結して、数珠つなぎにしていく -
ANSWER
ブロックで回答結果が分かりやすいように編集
複数LLMの追加
テンプレートとして追加されているLLM
の名前を任意に修正し、モデル
で使用したいモデルを選択する
コンテキスト
はKNOWLEDGE RETRIEVAL_result
を選択する
SYSTEM
にはプロンプトを入力しておく
LLM
ブロックの右上の...
をクリックし、コピー
を選択すると同じ設定のLLMブロックがコピーされる
スタジオパネル内で右クリックしここに貼り付け
を選択するとコピーされたLLMブロックが貼り付けられる
貼り付けたLLM
ブロックを選択したうえで、モデル
を他に使用したいモデルへ変更して複数のLLM
ブロックを作成できる
Answerの編集
Answer
ブロックを選択して回答
フィールドを編集する
どのモデルからの回答かをわかりやすくするためにgpt-3.5-turbo からの回答
という文章を追加する
回答自体はLLM_text
が出力されるようにする
複数LLM-ANSWERを数珠つなぎにする
同様にLLM
とANSWER
の紐づけを作成し、複数のLLM
-ANSWER
を数珠つなぎにしていく
全ての編集が完了したら公開する
-> 更新
ボタンをクリックする
アプリケーションの実行
おわりに
生成AIアプリ開発においてはどのモデルを利用するのが良いか比較するケースがあり得る
Difyであれば今回紹介した方法で比較的容易にモデル間の比較ができると考えている