はじめに
AIマルチエージェントシステムの構築練習として、ご飯のメニューを考えてもらおうと思いました。
環境
-
使用PC
ノートPC(Surface Go3 Laptop)
Windows11 -
使用ツール
Docker
Ollama
phi-3 mini(ローカル)
Dify(ローカル)
環境構築
以下のサイトを参考に環境を構築しました。
Difyをローカル環境で動かす方法!ローカルだからこそのメリットや使い方を徹底解説
各システムの構築
5人のシェフを用意して、それぞれメニューを提案させます。
今週食べたメニューを考慮して、シェフ長が提案されたメニューから1つ選ぶというシステムを構築しました。
なお、ローカルLLMの都合上、シェフは3人に減らして動作させました。
(なので他ブロックと繋がっていないLLMが2つあります。)
#AIの役割設定
シェフの役割は以下のとおりです。
- 日本料理AI:日本料理のシェフとしてメニューを提案するAI
- 中華料理AI:中華料理のシェフとしてメニューを提案するAI
- 韓国料理AI:韓国料理のシェフとしてメニューを提案するAI
- イタリア料理AI:イタリア料理のシェフとしてメニューを提案するAI
- フランス料理AI:フランス料理のシェフとしてメニューを提案するAI
- シェフ長AI:5人の提案から1つのメニューを決めるAI
今回は日本料理AI、中華料理AI、イタリア料理AIの3人を使いました。
それぞれに与えた指示を細かく見ていきましょう。
なお、私のローカルLLMでは生成する回答が長いとタイムアウトしてしまうため、回答(token)が短くなるようにシステムプロンプトを少し工夫しました。
日本料理AI
システムプロンプト
あなたは日本料理のシェフです。
インプットを基に、今日の夕食のメニューを1品提案してください。
レシピと説明は不要で、メニューのみ回答してください。
例:肉じゃが
インプット:開始/text
#フォーマット
メニュー:
中華料理AI
システムプロンプト
あなたは中華料理のシェフです。
インプットを基に、今日の夕食のメニューを1品提案してください。
レシピと説明は不要で、メニューのみ回答してください。
例:麻婆豆腐
インプット:開始/text
#フォーマット
メニュー:
イタリア料理AI
システムプロンプト
あなたはイタリア料理のシェフです。
インプットを基に、今日の夕食のメニューを1品提案してください。
レシピと説明は不要で、メニューのみ回答してください。
例:リゾット
インプット:開始/text
#フォーマット
メニュー:
シェフ長
システムプロンプト
あなたはインプット1~3の情報を基に、今日のご飯のメニューを決める人です。次のフォーマットで回答してください。
なお、今週は既に「お好み焼き」、「ラーメン」、「アジの開き」、「タコ飯」、「ビーフシチュー」を食べているのでそれも考慮してください。
#フォーマット
メニュー:
理由:50文字以内
インプット1:LLM JP/{x}text
インプット2:LLM CN/{x}text
インプット3:LLM IT/{x}text
結果
入力
ご飯のメニューを1品決めてください。
日本料理AIの回答
メニュー:海苔団子
中華料理AIの回答
メニュー提案: 「鍋調の炊飯」
イタリア料理AIの回答
inpuit:レモネーズサラダ
シェフ長AI
インプット1:
メニュー:海苔団子
インプット2:
メニュー提案: 「鍋調の炊飯」
インプット3:
inpuit:レモネーズサラダ
メニュー:アボカドとトマトのパリチョコレティー
結論
シェフ長は3人のシェフの意見を無視して、「アボカドとトマトのパリチョコレティー」という新たなえげつないメニューを提案してきました。
3つの中から選べと指示した方が良かったのかもしれません。
改良の余地ありですね。