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