ポンコツシェフAIの奮闘 ~複数のAIでご飯のメニューを決めさせたら、とんでもないメニューを提案された話~
最近流行ってきましたよね。マルチエージェントAI。
今までは1つのAIの性能を上げていろんなタスクをさせようという方針が主流でした。
しかし、最近は学習データの枯渇などによりAIの性能に限界が見えてきたので、複数のAIを強調させたマルチエージェントAIを用いて様々なタスクに特化させようという潮流になってきています。
私もマルチエージェントAIを使ってみたい!
ということで、今回は「ご飯のメニューを決めるAI」をマルチエージェントAIにより実現させてみようという試みになります。
技術的な話はQiitaの方で記事を公開しているので、技術的に気になる人はそちらをご覧ください。
目次
簡単な概要説明
どのように複数のAIに役割を与え、ご飯のメニューを決めたのかを簡単に説明します。
3人の部門シェフAI
部門シェフAIを用意し、以下のような役割を与えました。
日本料理シェフAI:日本料理を提案する
中華料理シェフAI:中華料理を提案する
イタリア料理シェフAI:イタリア料理を提案する
本当は韓国料理シェフとフランス料理シェフも用意したかったのですが、使っているパソコンの性能の都合上これが限界でした。
料理長(シェフ)
本来のシェフは料理長のことですね。てっきりコックのことかと思っていました。
料理長は今週既に食べたメニューを考慮した上で、部門シェフから提案されたメニューを選ぶような役割を与えました。
いざ、メニューを提案してもらう
さて、AIの準備ができたのでメニューを決めてもらいましょう。
本当はAIへの指示に今週既に食べたメニューを入れたかったのですが、入力できる文字数の都合上シンプルな指示にしました。
その代わり、料理長AIには事前に今週既に食べたメニューを教えておくことにします。
ではそれぞれのAIの回答を見ていきましょう。
まずは日本料理シェフAIの提案です。
の、海苔団子。。。
聞いたことない料理が出てきました。日本料理であることは間違いなさそうですが、一体どのような食べ物なのでしょうか。というか主食?
「海苔団子」で検索してみたら、お団子に海苔が乗っている画像が出てきました。どうやら言葉そのものの食べ物のようです。
うーん。絶妙なチョイス。日本料理を何だと思っているのでしょうか。
そういえば、海外では黒い食べ物は忌避されるので海苔を食べる日本は異質だと聞いたことがあります。
そこから日本料理=海苔 というイメージになったのでしょうか。
気を取り直して、次は中華料理シェフAIです。
一瞬、炒飯(チャーハン)かと思いましたが違いますね。
なんと読むのでしょう。「なべちょうのすいはん」?
もはや料理ですらなさそうです。
とりあえず、ニュアンス的に炒飯という扱いにしておきましょう。
それでは、イタリア料理シェフAI、お願いします。
ようやくまともな料理名が出てきました。
しかしレモネーズサラダとは。
調べたらレタスとレモンを組み合わせたサラダのようですね。
主食ではなく副菜のようです。
まともなシェフはいないのでしょうか。
いざ、メニューを決めてもらう
せっかく提案してもらいましたが、ちょっとこの3つからご飯のメニューを決めるのは難しそうですね。
とはいえ、メニューを決めるのは料理長です。
ここは腕の見せ所!
現実的なメニューの提案を期待しましょう。
なお、料理長には事前に今週食べたメニューを教えてあります。
今週食べたメニューは
お好み焼き
ラーメン
アジの開き
タコ飯
ビーフシチュー
です。
それではどうぞ!
部門シェフの意見フル無視!!
全然違うメニューが出てきちゃいましたね。
え?部門シェフの提案が料理長に繋がっていない?と思い念のためシステムを再確認しましたが、ちゃんと繋がっていました。
アボカドとトマトの組み合わせは良いですが、せめてそこにかけるのはドレッシングにして欲しいものです。チョコレート(と思われる)は如何なものかと。。。
それとも、料理長自慢の創作料理なのでしょうか。
どうしてそのメニューになったのかを考察してみる
一体どういうことなのでしょうか。料理長AIの気持ちを考えてみましょう。
料理長シェフは部門シェフの提案を吟味し、今週食べたメニューを考慮した上でメニューを決めないといけません。
部門シェフの提案は「海苔団子」、「鍋調の炊飯」、「レモネーズサラダ」であり、ポンコツと形容しても良いくらい参考にならないものです。
料理長が激怒するのも無理ありませんね。
部門シェフの提案に失望した料理長は新たなメニューを想像します。
それが、「アボカドとトマトのパリチョコレティー」だったのです。
真面目に考察してみる
というのは冗談で、何が失敗だったのかをもう少し真面目に考察してみます。
まずは、「シェフ」という役割をAIに与えてしまったことが考えられます。
最終的に決定されたメニューはイタリアンレストランで出てきそうな名前のメニューでした。(実際に出てくることはないと思いますが。)
AIは「"レストランの"シェフ」というイメージを持っていたので、家庭的なメニューではなくレストランで出てきそうなメニューを提案してきたのかもしれません。
次に、「メニュー」という曖昧な回答を指示したことが考えられます。
どのようなメニューなのかをもう少し具体的に指示すれば、現実的なメニューを提案してもらえたのかもしれません。
加えて、今回使ったAIは料理に関する知識が不足している可能性も考えられます。
料理のメニューを外部知識として与えてやれば、もう少し実用的になるかもしれません。
単純に使ったAIの性能が低かった
と、いろいろと考察してきましたが、一番の大きな問題は今回使ったAIの性能が低かったことだと思います。
私のノートパソコンのローカル環境で生成AIを用意したため、なるべくサイズの小さなSLM(Small Language Model)を選ぶしかありませんでした。
サイズが小さいということはパラメータ数が少ない、すなわち性能が低いということになります。(現在は。将来的にはサイズが小さくても性能が良いものが出てくると思います。)
更に使った生成AIがリリースされた時期も少し古いため、今の生成AIの性能とは比べ物にならないほどの性能差がある可能性があります。
そして、日本語への対応もイマイチっぽいです。
かなり無理をさせてしまったようですね。
将来的に性能の高いSLMが登場したら、今回の料理メニュー提案システムを更新してみたいと思います。
おわり