【Dify】AIマルチエージェントに今日のご飯のメニューを決めさせてみたTake2(英語プロンプト版)

# はじめに

AIマルチエージェントシステムの構築練習として、ご飯のメニューを考えてもらうチャレンジをしています。

前回はなぜか各AIエージェントがせっかく考えてくれたメニューが最終判断で全く考慮されず、得体のしれないメニューを提案されるという失敗に終わりました。

所望の結果を得るにはいろいろな工夫が必要と思われますが、今回は使用したphi-3 miniという日本語があまり得意ではないLLMであるという点を考慮して、英語でのプロンプトに変更して試してみようと思います。



# 事前準備等
前回の投稿はこちらです。

[【Dify】AIマルチエージェントに今日のご飯のメニューを決めさせてみた](https://qiita.com/ebi3kani3/items/de3ad978f615680cd4a8 "【Dify】AIマルチエージェントに今日のご飯のメニューを決めさせてみた")


## 環境
- 使用PC
ノートPC(Surface Go3 Laptop)
Windows11


- 使用ツール
Docker
Ollama
phi-3 mini(ローカル)
Dify(ローカル)


## 各システムの構築
前回と同様、5人のシェフを用意して、それぞれメニューを提案させます。
今週食べたメニューを考慮して、シェフ長が提案されたメニューから1つ選ぶというシステムを構築しました。

なお、今回はプロンプトに英語を使用します。

![CookersEN.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838427/0c5779be-f5f8-020d-946e-4a8895224333.jpeg)



#AIの役割設定

シェフの役割は以下のとおりです。

- 日本料理AI：日本料理のシェフとしてメニューを提案するAI
- 中華料理AI：中華料理のシェフとしてメニューを提案するAI
- 韓国料理AI：韓国料理のシェフとしてメニューを提案するAI
- イタリア料理AI：イタリア料理のシェフとしてメニューを提案するAI
- フランス料理AI：フランス料理のシェフとしてメニューを提案するAI
- シェフ長AI：5人の提案から1つのメニューを決めるAI



次からそれぞれに与えた指示を細かく見ていきましょう。

なお、日本語プロンプトの時は回答に時間を要してタイムアウトしてしまうという事象が多発しましたが、英語プロンプトに変更したところタイムアウトする事象が格段に減りました。

どうやら日本語を生成するのに時間を要していたようですね。
とはいえ、ローカル環境で動かすので少しでもPCへの負荷が小さくなるよう、回答のフォーマットを指定してtokenが少なくなるような工夫をしました。


### 日本料理シェフAI
システムプロンプト
~~~
You are a Japanese cuisine chef.
Based on the input, suggest one dish for tonight's dinner.
No recipe or explanation is needed, just the name of the dish.
Example: Nikujaga

インプット：開始/text
~~~

### 中華料理シェフAI
システムプロンプト
~~~
You are a Chinese cuisine chef.
Based on the input, suggest one dish for tonight's dinner.
No recipe or explanation is needed, just the name of the dish.
Example: Peking Duck

インプット：開始/text
~~~

### イタリア料理シェフAI
システムプロンプト
~~~
You are a Itarian cuisine chef.
Based on the input, suggest one dish for tonight's dinner.
No recipe or explanation is needed, just the name of the dish.
Example: Risotto

インプット：開始/text
~~~

### 韓国料理シェフAI
システムプロンプト
~~~
You are a Corean cuisine chef.
Based on the input, suggest one dish for tonight's dinner.
No recipe or explanation is needed, just the name of the dish.
Example: Bibimbap

インプット：開始/text
~~~

### シェフ長
システムプロンプト
~~~
You are the head chef.
You have to deciding today's meal based on input 1 to 2.
Please respond in the following format. 
Note that this week, dishes like "Okonomiyaki", "Ramen", "Grilled Horse Mackerel",
"Octopus Rice", and "Beef Stew" have already been eaten, so consider that.

Menu:
Reason: (In 30 words)

input1：LLM JP/{x}text
input2：LLM CN/{x}text
input3：LLM IT/{x}text
input4：LLM IT/{x}text
~~~



## 結果

### 入力
~~~
Please decide on one dish for the meal.
(訳：ご飯を1品決めてください。)
~~~

### 日本料理シェフAIの回答
~~~
Tonkatsu
(訳：トンカツ)
~~~

### 中華料理シェフAIの回答
~~~
Szechuan Broiled Fish
(訳：水煮魚)
~~~

### イタリア料理シェフAIの回答
~~~
Tonight we will be enjoying a delicious Arroz con Pollo (Chicken with Rice).
(訳：アロス・コン・ポッロ(チキンとライス))
~~~

### 韓国料理シェフAIの回答
~~~
Galbi
(訳：カルビ)
~~~

### シェフ長AIの回答
~~~
Menu: Tonkatsu and Szechuan Broiled Fish.
Reason: Combining tonkatsu's crispy pork cutlet texture with the spicy kick of Szechuan fish complements our guests' diverse palates while adhering to dietary preferences, ensuring a memorable dining experience without repeating last week's specialties.
(訳
メニュー：トンカツと水煮魚
理由：とんかつのサクサクとしたトンカツの食感と四川魚のスパイシーな刺激を組み合わせることで、お客様の多様な味覚を引き立てながら、食事の好みを守り、先週の名物料理を繰り返すことなく思い出に残る食事体験をお約束します。)
~~~

## 結論
　英語のプロンプトにすることで、それらしいメニューを提案してもらうことができました。
まぁ、1品といったのにトンカツと水煮魚という主食2品を提案されましたが、及第点としましょう。

また、副次的効果としてローカルLLM(phi-3 mini)におけるタイムアウトの軽減、回答速度の向上という結果が得られました。

LLMの性能が向上すれば、このメソッドでもう少し良い回答が得られそうです。