
こんにちは、kobayashiです。
DataikuのWebapps機能を使って、ノーコードでチャットボットを作ってみたのでご紹介します!
Snowflake connectionが設定済みという前提でお話しますので、まだできていない!という方は
↓コチラをご覧ください!
・Dataiku体験日記 ~Snowflakeと接続してみよう~
チャットボットの題材
なぜチャットボットを作ることになったかの経緯を簡単にお話しします。
弊社の福利厚生に「OFFICE DE YASAI」という社食販売システムがあります。
ちいさめの冷蔵庫があり、そこでサンドイッチやサラダ、カレーなどを電子決済で購入することができます。
ほとんど100円で安いうえ、コンビニまでお昼を買いに行かなくてもよい手軽さが最高です!!
しかし、OFFICE DE YASAIを運用してくれている Yさんにはこんな悩みがありました。
・何が人気なのか分からず、なんとなくで発注している
・在庫数と決済されている数があっているのか分からない
そこで、dataikuのWebapp機能を使って解決しよう、という流れになりました。
データの準備
OFFICE DE YASAIの管理者ページから納品履歴と購入履歴のデータを取得。
これらをつなぎ合わせ、月ごとの販売数、在庫数、人気度を算出しました。
人気度には在庫回転率を使用しています。
(賞味期限が切れそうな商品は Yさんが買いとってくれていたので、販売数=人気度とはならなかったため)
必要な情報になったテーブルをSnowflakeのSQLテーブルに同期します。
Webappsの設定
Webapps > Visual Webapp > Answers を選択。
LLMと会話履歴を残すデータセット、ユーザープロファイル用データセットを選択します。
今回使用したLLMは「GPT-4o mini」です。
このデータセットのところが一番苦労して、先輩にお力添えをいただきました、、、!!
データセットは「NEW DATASET」でsnowflake接続を選択するだけでもできるそうですが、
うまくいかず、snowflake上で作成しておいたテーブルを読み込ませて使用しました。
CONVERSATION_HISTORYのほうはDATAIKUのROLEに使用しているテーブルのOWNERSHIP権限を付与したり、
データセット、スキーマにMODIFY権限を付与したりで、なんとかエラーを乗り越えました!
Retrieval Methodで「Use dataset retrieval」を選択。
Choose connectionでSnowflakeのコネクションを選び、データを持たせておいたテーブルを選択します。
Configure your LLM in the context of the dataset にプロンプトを入力します。
今回は下記のような内容を英語で入力しました。
「OFFICE DE YASAIという社食販売データに基づいて回答するアシスタントです。
丁寧な日本語で回答してください。
以下のような列がデータセットに含まれています:
– 年月:売上や在庫の年月
– 日付:売上日
– 商品名:商品ごとの名称
– 販売数:各商品の販売実績
– 在庫数:現在の在庫数量
質問には、データに基づいて正確に答えてください。データに含まれていない情報は「その情報は見つかりませんでした」と答えてください。」
Questions and their expected SQL queries に質問と回答例を2~3個入力しておきます。
「2025年5月のミニサラダの販売数は? → 2025年5月のミニサラダの販売数は30個です。」というような感じです。
Hard limit on SQL queries は使用するデータセットの行以上を入力しておけばOKです。
ただし、多いと重くなってしまうので、回避したい場合はデータセットを工夫して行を減らしてください。
End user configurationは実際にチャットボット画面に表示される文言を入力できます。
最後に言語選択をして、「VIEW WEBAPP」をクリック。
チャットボット完成!?
チャットボット画面に先ほど設定した文言が反映され、ちょっと感動!
さっそく質問を投げかけてみます。
良い感じで返してくれました!ノーコードでここまでできるとは・・・!!
しかし、返してくれない質問もあるようです。
まだまだブラッシュアップが必要そうなので、別のブログで書けたらな、と思います!
truestarではDataikuの検討、導入支援や環境構築から導入後の運用まで幅広くサポート可能です。
Dataikuに興味がある、導入済みだけどもっとうまく活用したい等々ありましたら、ぜひこちらからご相談ください!