こんにちは、バックエンドエンジニアの前田です。
先日、以前自分が書いたコードのコメントが何を伝えたいのかがわからず、いかにわかりやすいコメントを書くことが大事かを身に染みて痛感しました。
さて、今回はDifyのアップデートで新規追加された機能「パラレル処理(並列処理)」を触っていきます。
1. 概要
1.1. Difyとは
Difyは、大規模言語モデル(LLM)を用いたオープンソースのアプリ開発プラットフォームです。
詳しくは、以下の記事で紹介されているので、参考にしてみてください。
acro-engineer.hatenablog.com
1.2. Dify v0.8.0の新機能について
Difyは9/10にアップデートがあり、v0.8.0がリリースされました。
v0.8.0で新規追加された機能は「パラレル処理(並列処理)」。
今までも、分岐や順次実行はできていましたが、今回のアップデートにより、同時に処理を走らせることができるようになり、より効率的なフローを組むことができるようになりました。
詳しくは以下の公式ページに4つの並列処理の例が載っています。
docs.dify.ai
2. アプリ作成
2.1. この記事で実現すること
この記事では、並列処理を活用して、複数LLMの回答を比較し、差分をとるアプリを作っていきます。
比較するLLMは以下の3つです。
- GPT4o
- GPT4o-mini
- Claude3.5-sonnet
2.2. パラレル処理(並列処理)を用いてLLMを呼び出す
まずは、ユーザーからの質問に対して複数のLLMが並列に回答を生成する処理を作っていきます。
作り方はとても簡単で、「開始」ブロックの「+」ボタンをクリックして、「LLM」ブロックを追加するだけ。


モデルを選択し、プロンプトには、ユーザーからの質問をそのまま記載しておきます。

同じようにGPT4o-miniとClaude3.5-sonnetも追加して、完了です。

2.3. 各LLMからの回答を比較する
次に、各LLMから得られた回答を一つにまとめて、回答を比較する処理を作っていきます。
こちらの作り方も簡単で、「LLM」ブロックをもう一つ追加して、各LLMから線をつなぐだけ。

あとは「回答」ブロックと繋いでアプリ完成です。
総作成時間は5分ほどで、簡単に並列処理を実装することができました。

3. 実際にアプリを動かしてみる
では、実際に動かしてみます。
明日の晩御飯でも考えてもらいましょう。
Q:明日の晩御飯を考えて
A:※各LLMの回答は長いので割愛
差分比較
比較結果
「詳細なレシピ vs 簡易的なメニュー提案」
差分:
GPT4oは詳細なレシピを提供しています。
メインディッシュ: 照り焼きチキン
材料リストと具体的な作り方を記載。
サイドディッシュ1: ほうれん草のお浸し
材料リストと具体的な作り方を記載。
サイドディッシュ2: 味噌汁
材料リストと具体的な作り方を記載。
デザート: フルーツサラダ
材料リストと具体的な作り方を記載。
GPT4o-miniは簡易的なメニュー提案を行っています。
メインディッシュ:鶏肉の照り焼き
鶏もも肉を照り焼きソースで焼くと簡単に説明。
サイドディッシュ:ほうれん草のおひたし
ほうれん草を軽く茹でて、だし醤油やごまをかけると簡単に説明。
スープ:味噌汁
豆腐とわかめ、ネギを入れた味噌汁を簡単に説明。
ご飯:白ご飯
ふっくら炊きたての白ご飯を添えると簡単に説明。
デザート:季節のフルーツ
季節のフルーツを提案。
Claude3.5-sonnetは複数のメニューアイデアを提案しています。
和食
鮭の塩焼き、ほうれん草のお浸し、味噌汁、白米。
洋食
チキンソテー with レモンバターソース、ローストベジタブル、サラダ、パン or ライス。
中華
麻婆豆腐、青梗菜の炒めもの、中華スープ、白米。
イタリアン
パスタ カルボナーラ、ルッコラとトマトのサラダ、ガーリックブレッド。
ヘルシーオプション
グリルチキン、キヌアサラダ、蒸し野菜、ヨーグルトディップ。
全てのLLMが並列で動いていることも確認できました。

従来のフローと比べてどれくらい効率的になったのかも気になるところ。
そこで、以下のような直列処理(従来のフロー)を作って、実行時間を比較してみました。

結果は以下のようになりました。
| 直列処理 | 並列処理 | |
| 実行時間(s) | 33.4 | 9.7 |
▼直列処理

▼並列処理

直列処理の実行時間は並列処理の実行時間の3倍以上でした。
複数LLMの回答を比較するだけの簡単な処理でもこれだけの差が生まれるので、複雑な処理になればなるほど、
並列処理の威力は凄まじいものになりそうです。
4. まとめ
Difyの新機能の「パラレル処理(並列処理)」を用いてアプリを作ってみました。
並列処理により効率的にフローが組めるようになったので、うれしいですね。
他にもまだ試せていない並列処理があるので、色々触ってみたいです。
気になる人はぜひ試してみてください。
Acroquest Technologyでは、キャリア採用を行っています。
- Azure OpenAI/Amazon Bedrock等を使った生成AIソリューションの開発
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- マイクロサービス、DevOps、最新のOSSやクラウドサービスを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
www.wantedly.com