samurai engineer 講師の先生より「AIコースの卒業制作として、LLMを使った機能をアプリに組み込むこと」というお題を頂戴しています。

メイン機能=並列表示&並列操作できるメモ機能 + RDBに各種マスタや履歴を保存できる機能
付随機能 =プロンプティングでまだ見ぬ料理のレシピをWeb検索して、おまけにスクレイピングしてくれる機能

などとハードルを上げてみましたが・・・ぶっちゃけ、何から手を付ければいいものやら。

(付随機能としては、一番メジャーなOpenAIのGPTモデルをベースにしたAIチャットボットをボタンに埋め込んでみたいです)


デザイン案

技術的なことは一旦横に置いといて、まずはアプリのイメージをスケッチしてみます。

Stockのタブ切替方式が気に入っているので、それに近い操作感にしたいと思っています。
後でだいぶ変わりそうな予感・・・。


アプリの構成案

RDBと連携するWebアプリの動作原理を根本的に理解できていなかったので、ディレクトリ構造を調べたり、必要なライブラリを試したり、結構長い時間を費やしてしまいました。

現時点では、

 フロントエンド = Streamlitを採用
         (公式サイトのBlogやQiitaの投稿など、関連情報が多く学びやすそうだった為)

 バックエンド  = DBはSQLiteかMySQLだろうか(師匠のおすすめ)
          ※O/Rマッパーを使うかは不明だが、使うならSQLAlchemyだろうか

で行くことに決めました。

UIのイメージとしては、

・「外部検索機能」はサイドバーに配置
  LangChainを使って「楽に新しい料理を検索できる」機能を搭載。

・「表示編集機能」はメインエリアに配置
  表とメモを並列表示させながらメモ帳を編集できる機能を搭載。
  並列表示はタブで「お気に入りメニュー登録・編集」「今週の献立作成」「買い物リスト作成」
  などの表示パターンを切り替えられるようにしたい。

・「メモ保存機能」はメインエリアのボタンに割り当て
  DBトランザクションテーブルとデータをやり取りする機能を搭載。
  タブを開いた時にテーブルから読み込んだデータを表に表示したり、
  保存ボタンを押下した時にテーブルへの追加や更新を実行させたい。

・DBには「料理マスタ」「レシピマスタ」「食材マスタ」などのマスタテーブルを作成し、
 食材量合計算出やメニュー登録補助に使用したい。


<< Prev Next >>