Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Building SazónBot: A Journey from Family Recipes to AI Chatbot

2025年10月04日に「Dev.to」が公開したITニュース「Building SazónBot: A Journey from Family Recipes to AI Chatbot」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

義母のレシピをAIチャットボット「SazónBot」として構築した。Python, FastAPIでデータを処理し、FAISSとLangChainで検索、分量調整、多言語対応、安全機能を実装。Next.jsでフロントを開発し、Vercelにデプロイ。伝統的な家庭料理を最新技術で世界に届けるプロジェクトだ。

ITニュース解説

SazónBotの開発は、筆者が義母のメキシコ料理レシピをWord文書で参照する際の不便さに端を発している。スマートフォンでレシピを見る際、ファイルは扱いにくく、書式も不統一で、肝心な調理のヒントや応用方法が書かれていなかった。例えば、分量を変更したり、材料を代替したりする方法を尋ねることができないことに不満を感じた。この経験が、保存されたレシピデータと対話できるAIチャットボットを構築するというアイデアへとつながった。それは、筆者のメキシコ系義家族から受け継がれた豊かな料理の知恵を、現代の技術を使って世界中の人々と共有したいという強い思いが原動力となった。

このアイデアは、「SazónBot」という名のバイリンガルAIチャットボットとして実現された。これは、筆者が結婚によって縁を得たガルシア家の食文化を尊重しつつ、最新のテクノロジーを積極的に取り入れたプロジェクトである。SazónBotは、記憶された料理の知識と機械学習の能力を組み合わせることで、ユーザーが直接話しかけられる「話せるシェフ」のような体験を提供する。筆者はメキシコ系ではないが、この家族が分かち合う料理の知恵に触れる幸運を得て、その貴重な経験をテクノロジーの力で広めたいと考えた。

SazónBotの構築は、まず「古くて扱いにくいデジタルファイルを、その本質を損なうことなく、生きた有用なデータにどう変換するか」という問いから始まった。その答えは、伝統的なレシピと現代技術の融合にあった。まず、レシピが記載されたWord文書から必要な情報を抽出し、それを解析してWebアプリケーションのバックエンドとして提供するため、Python言語とFastAPIフレームワークが利用された。FastAPIは、Webサービスでデータのやり取りを行うためのAPI(Application Programming Interface)を高速に構築するためのツールである。これにより、構造化されていないレシピの情報を、コンピュータが扱いやすい形式に変換し、保存できるようになった。

次に、ユーザーがレシピについて自然な言葉で質問できるようにするため、「ベクトルストア」というデータ構造が導入された。ベクトルストアは、テキストなどの情報を数値の並び(ベクトル)として保存し、意味的に似た情報を効率的に探し出すことを可能にするデータベースである。SazónBotでは、このベクトルストアの構築にFAISS(Facebook AI Similarity Search)というライブラリが使用された。これにより、例えば「¿Cómo hago enchiladas?(どうやってエンチラーダを作るの?)」といった質問に対して、単にキーワードが一致するだけでなく、質問の意図を汲み取ったきめ細やかな回答ができる「セマンティック検索」(意味検索)が実現した。

しかし、単にレシピデータをボットに読み込ませるだけでは不十分で、ボットが安全で信頼性の高い情報を提供することが重要だった。そこで、LangChainという大規模言語モデル(LLM)を活用したアプリケーション開発フレームワークを用いて、カスタムツールが作成された。これらのツールは、レシピの分量を変更したり、特定の材料を代替したり、さらには料理のテクニックをWebで検索したりといった、具体的な機能をSazónBotに付加する役割を担った。また、ユーザーからの不適切な質問を検出し、処理しないようにするための安全モジュールや、会話の流れを記憶してよりパーソナルなやり取りを可能にするセッションメモリも追加された。これにより、ボットは単なる情報検索ツールではなく、賢く、かつ安全に、ユーザーのニーズに応える対話相手へと進化した。

SazónBotの開発における大きな挑戦の一つは、ボットに二つの言語を話させることだった。筆者が暮らすコミュニティでは、英語とスペイン語が頻繁に切り替えて使われるため、SazónBotも同様のバイリンガル対応が必須だった。この課題を解決するため、OpenAIが提供する比較的小規模で高速な大規模言語モデルであるGPT-4o-miniがシステムに統合された。さらに、多言語に対応したベクトルストアを構築することで、ユーザーはスペイン語で「¿Cómo preparo tacos al pastor?(どうやってタコス・アル・パストールを作るの?)」と質問を始め、その後はスムーズに英語に切り替えて会話を続けることができるようになった。これは単なる機能追加に留まらず、言語の壁に関わらず、誰もがSazónBotの提供する料理の世界で快適に感じられるようにするという、開発者の強いコミットメントを表していた。

バックエンドシステムが安定して機能するようになった後、次に取り組んだのは、ユーザーが快適に操作できる美しいインターフェースの構築だった。ここでは、モダンなWebアプリケーション開発で広く使われているNext.jsというJavaScriptフレームワークと、デザインを効率的に作成するためのTailwind CSSというCSSフレームワークが採用された。これにより、まるで本物のレシピ本をめくるかのような感覚で操作できる、デバイスの種類を問わず表示が最適化される「レスポンシブ」なインターフェースが実現した。さらに、レシピに関連するYouTube動画や画像を埋め込むことで、料理のイメージを視覚的に伝え、ユーザー体験を豊かにした。SazónBotの裏側では、インテリジェントなエージェントが動作しており、レシピのスケーリングや料理動画の検索など、合計11種類ものツールを状況に応じて適切に連携させ、ユーザーの要求に応えている。

完成したWebサイトのデプロイ(公開)には、Vercelというプラットフォームが利用された。Vercelの無料プランを利用したため、ユーザーがSazónBotに初めてアクセスする際には、システムの起動に数秒かかるというトレードオフがあった。しかし、一度ボットが「ウォームアップ」すれば、その後の利用は非常にスムーズになる。さらに、SazónBotはユーザーとの会話履歴を記憶する機能も持っている。「¿Te gustó el mole? Would you like to scale it for six people?(このモーレは気に入りましたか? 6人分に増量しますか?)」といった形で、前回の会話内容に基づいて次の提案ができるため、より人間らしい対話が可能となっている。

どんなに情熱を傾けたプロジェクトでも、開発の道のりには困難がつきものだ。SazónBotの開発においても、いくつかのハードルがあった。開発環境のセットアップがその一つで、フロントエンドにはNode.js、バックエンドにはPythonという異なる技術スタックが使われたため、これらを連携させる必要があった。また、APIキーのような機密情報を安全に管理するための環境変数の設定も慎重に行われた。さらに、レシピの分量調整機能や材料の代替機能といった、一見単純に見える個々の機能の実装も、それぞれが独立した小さな課題として立ちはだかった。これらの課題一つ一つを、まるで以前のプロジェクトでカレンダーにイベントを追加するボタンの実装に苦労したように、根気強く解決していく必要があった。

しかし、そうした困難にもめげず、粘り強く開発を続けることで、筆者はついに「生きている」バイリンガルの料理本とも言えるSazónBotを完成させ、公開することができた。その結果、AIの力を活用しながらも、まるで義母と直接話しているかのような温かい感覚で利用できるチャットボットが生まれたのである。このプロジェクトを通して、筆者が結婚によって縁を得たメキシコ文化の豊かな遺産と、現代のテクノロジーとを結びつけ、本格的なメキシコ料理のレシピをインターネットがあれば誰でも利用できるようにするという当初の目的を達成できた。

したがって、次にチキン・チリ・ナチョス(チラキレス)が食べたくなった時や、メキシコ料理によく使われるハーブの一種であるエパソーテの代替品が必要になった時には、ぜひSazónBotを開いてみてほしい。そこには単なるレシピ以上のものが存在する。それは、筆者の拡張家族の物語の一片が息づく、温かい料理の世界なのである。

関連コンテンツ

関連IT用語

関連ITニュース