生成 AI を活用し、気分に合わせて食事を提案してくれる「フードコーチ」

5月 16, 2023
Avneet Singh Product Manager Google Partner Innovation

Google のパートナー イノベーション チームは一連の生成 AI テンプレートを開発していますが、そうしたテンプレートは、大規模言語モデル(LLM)を既存の Google API やテクノロジーと組み合わせて、特定の業界のユースケースに解決策をもたらしたときに開かれる可能性を具体的に示すものです。

generativeAIRecipe1

概要

インターネットを使ってレシピを検索したり、生活の中で直面する難題を乗り越えるためのヒントをインターネットに求めたりした経験は誰にでもあるでしょう。ではそこで、生成 AI を活用し、インターネットのこうした優れた機能を融合した、一風変わったパーソナル シェフが登場したとしたらどうでしょうか?その日あったこと、そのときの気分、考えていることを伝えると、その雰囲気に合わせて、ユニークな食材を使った、独創的で斬新な料理を考案してくれるパーソナル シェフです。

generativeAIRecipe2

MoodFood は、従来のレシピ検索サービスに遊び心あふれるひねりを加えたものです。ユーザーに今の気分やこれからなりたい気分を尋ねる「フード セラピスト」となって、「失恋を癒すスープ」や「月曜日の憂鬱を吹き飛ばすラザニア」などのよくあるお悩みに効くユーモアたっぷりの料理から、結婚を控えた相手の母親にふるまう手料理など、まさに人生のアドバイスと言える「レシピ」まで幅広いレシピを生成します。

上の例では、ユーザーは彼氏の母親にふるまう料理を作らなくてはならなくなったため大きなプレッシャーを感じている、と入力します。すると MoodFood は、「将来のお義母さんのチキン スープ」を提案します。これはユーザーが入力した情報だけをもとに MoodFood が生成した、まったく新しいレシピであり、料理名です。続いて、グラフィック レシピ「カード」を生成し、材料とレシピの情報も生成して所定の形式に整えます。この情報をパートナー サイトに渡して、そこで料理のレシピが完成します。

このように、これまでにない新しいプロダクトの見つけ方を基盤とした、さまざまなユースケースが考えられます。たとえばユーザーの気分を尋ねることによって、音楽アプリならおすすめの曲、観光事業者ならおすすめの旅行先、フード デリバリー アプリなら実際に注文できるおすすめのレシピを表示することです。さらにこのテンプレートは、e コマースや小売のユースケースでは、ディスカバリ メカニズムとしても使用できます。LLM は、データ探索とそれがもたらす可能性によって新天地を開拓しつつあります。従来の素材を使い、それをユーザーの気分などのこれまでにないコンテキストに沿って組み換えることで、新しいものを生み出してユーザーに提案できる LLM の機能をぜひ体験していただきたいと思います。

実装

エクスペリエンスのさまざまな場面で PaLM API をどのように使用できるのかを検討したいと考え、API を複数回にわたってそれぞれ異なる目的で使用しました。たとえば、ユーモアのある応答の生成、レシピの生成、構造化されたフォーマットの作成、保護などです。

generativeAIRecipe3

現在のデモでは、LLM を 4 回使用しています。1 つ目の LLM には、ユーザー入力とコンテキストに基づいてユーザーのためのレシピを考案する創造性が求められます。2 つ目のプロンプトは、応答を JSON 形式にフォーマットします。3 つ目のプロンプトは、保護の一環として命名が適切であることを確認します。最後のプロンプトは、構造化されていないレシピを JSON 形式のレシピに変換します。

LLM を使って、デベロッパーの仕事の 1 つであるデータのフォーマットをサポートできます。指定された任意のテキストソースに対して、PaLM API を使用することで、テキストデータを希望する形式(JSON、Markdown など)にフォーマットできます。

必要な形式を維持しながら、ユーモアもある応答を生成するために、PaLM API を複数回呼び出しました。入力をよりランダムにするために、入力時のモデルは「temperature(創造性レベル)」を高めにし、応答をフォーマットする際のモデルでは下げました。

このデモでは、PaLM API が JSON 形式でレシピを返すようにするため、フォーマット済みの応答の例をリクエストに添付します。これは、LLM に正しい形式での回答方法を示す簡単なガイダンスです。ただし、レシピを JSON にフォーマットするにはかなり時間がかかるため、ユーザー エクスペリエンスの観点から問題になる可能性があります。これに対処すべく、JSON 形式のレシピ生成と並行して、ユーモアあふれる応答を使ってリアクション メッセージのみを生成します(JSON 形式のレシピより短い時間で生成できます)。JSON レシピの応答を待っている間、まず受信したリアクション応答を 1 文字ずつ表示します。そうすることで、応答待ちの時間を長く感じさせないようにします。

generativeAIRecipe4

応答をあらかじめ定義された形式に保ちつつも、もう少し創造性を働かせたいタスクについては、このメインタスクを 2 つのサブタスクに分けることをおすすめします。1 つは創造性レベルを高めに設定したクリエイティブな応答を生成するもの、もう 1 つは希望の形式を定義するもので、こちらは創造性レベルの設定を低くして出力のバランスをとります。

プロンプト

プロンプトは、大規模言語モデル(LLM)に特定のタスクの実行を指示するために使用する手法です。タスクを説明する短いテキストと、他にもタスクを完了するために必要な関連情報があれば合わせて LLM に提供します。PaLM API のプロンプトでは、context、messages、temperature、candidate_count の 4 つのフィールドをパラメータとして使用します。

  • context は会話のコンテキストです。LLM が会話をより明確に理解できるようにするために使用されます。
  • messages は、過去から現在までのユーザー(author=0)と LLM (author=1)間のチャット メッセージが交互に配列されたものです。最初のメッセージは常にユーザーからのメッセージとなります。
  • temperature は 0 から 1 までの浮動小数点数です。この値が高ければ高いほど、応答の創造性が高くなります。逆に値が低いほど、応答の正確性が高くなります。
  • candidate_count は、LLM が返す応答数です。

Mood Food では、PaLM API への指示にプロンプトを使用しました。クリエイティブで面白いシェフとして振る舞い、ユーザーのメッセージをもとに普段は想像もしないようなレシピを返すように指示しました。また、応答の形式はリアクション、名前、材料、調理方法と説明の 4 つの部分で構成するよう指示しました。

  • リアクションは、ユーザーのメッセージに対するユーモアにあふれた直接の応答であり、丁寧かつユーザーを楽しませる内容です。
  • 名前: レシピ名。上品でしゃれが効いていて、人の気分を害することのないレシピ名を生成するよう、PaLM API に指示します。
  • 材料: 分量を示した材料リスト。
  • 説明: PaLM API によって生成された料理の説明。

generativeAIRecipe5

サードパーティとの統合

PaLM API は、PaLM API と顧客データのシームレスな統合を容易にする埋め込みサービスを提供しています。統合を始める場合は、PaLM API 埋め込みサービスを使用して、パートナーのデータの埋め込みデータベースを設定するだけで済みます。

generativeAIRecipe6

統合後は、ユーザーが食品またはレシピ関連の情報を検索すると、PaLM API が埋め込みスペースを検索して、ユーザーのクエリに最適な結果を見つけます。さらに、パートナーが提供するショッピング API と統合すれば、そのままチャット インターフェースからパートナーのウェブサイトの食材を購入することもできます。

パートナーシップ

インドの食品のオンライン注文・デリバリー プラットフォーム Swiggy は、MoodFood をはじめとするエクスペリエンスが可能にするユースケースの検討にあたり、大きな期待を寄せています。

「当社のプラットフォームにおけるお客様や販売業者とのやり取りを変革する、生成 AI の可能性に大いに期待しています。MoodFood を通じて、楽しく魅力的な方法で、当社が提供する製品やサービスをもっとよく知ってもらえるようになる可能性があります」 - Swiggy 社 CTO Madhusudhan Rao 氏

MoodFood はオープンソース化されるため、デベロッパーやスタートアップ企業は、私たちが作成したエクスペリエンスをベースにして構築することができます。また、Google のパートナー イノベーション チームは、地域の市場と連携して機能やツールの開発を続け、すでに進行中の研究開発(R&D)を展開していきます。こちらの GitHub でプロジェクトをご覧ください。

謝辞

このプロジェクトに貴重な貢献をしてくださった次の皆さんに感謝いたします。KC Chung、Edwina Priest、Joe Fry、Bryan Tanaka、Sisi Jin、Agata Dondzik、Sachin Kamaladharan、Boon Panichprecha、Miguel de Andres-Clavera