Part 2: IBM Bob で機能を追加しよう¶
このパートでは、IBM Bob を使って、Vector Search アプリケーションに新しい機能を追加します。
このパートのゴール¶
- IBM Bob の使い方を学ぶ
- 自然言語で指示を出してコードを生成する
- 3 つの新機能を追加する
IBM Bob とは?(復習)¶
IBM Bob = AI がコーディングをサポートしてくれる開発ツール
できること:
- 自然言語で「こういう機能が欲しい」と伝える
- IBM Bob が自動的にコードを書いてくれる
- コードの説明もしてくれる
メリット:
- コーディングの手間を削減
- 開発時間が大幅に短縮
- 高品質なコードが生成される
追加する機能¶
このパートでは、以下の 3 つの機能を追加します:
- 商品画像の表示
- 価格フィルター
- レコメンド理由の表示
ホットリロードについて
アプリケーションにはホットリロード機能がありますが、このハンズオンでは変更内容を確実に反映するため、コード変更前に一度停止し、変更後に起動し直します。
アプリケーションのファイル構成
app.py: FastAPI の API と画面を定義しますcommon.py:.env、言語切替、Milvus 接続、埋め込みモデル読み込みを扱いますschema.py: Milvus のコレクション定義、インデックス・検索設定、検索結果として返すフィールドを定義しますinsert_sample_data.py: サンプル商品データを Milvus に投入しますsample_products.py: 使用するサンプル商品データをPARTICIPANT_LANGUAGEに応じて選択しますsample_products_ja.py: 日本語の商品名、説明、価格などのサンプルデータを定義します
機能 1: 商品画像の表示¶
なぜこの機能が必要?
現在の検索結果は文字だけです。商品画像があると視覚的に分かりやすく、ユーザー体験が向上します。
ステップ 1: IBM Bob を開く¶
IBM Bob の画面下部のチャット入力欄をクリック
ステップ 2: Code モードに切り替え¶
- 画面右下の「Mode」セレクターをクリック
- 「Code」を選択
Code モード = コードを書くための専用モード
Code モードへの切り替え練習
Vector Search Builder モード のままでもこのタスクは実行できます。ここでは、モード切り替えの基本操作を練習するために、あえて Code モード に切り替えます。
ステップ 3: アプリケーションを停止¶
アプリケーションを起動しているターミナルで Ctrl+C を押して停止します。
ステップ 4: IBM Bob に指示を出す¶
チャット入力欄に以下を入力して Enter:
ポイント:
- 具体的に何をしたいか伝える
ステップ 5: IBM Bob の応答を待つ¶
IBM Bob が自動的に以下を行います:
- 指示を理解
- 関連ファイルを探す
- コードを生成
- 説明を表示
ステップ 6: IBM Bob の提案を確認¶
IBM Bob が以下のような提案をします。
変更内容:
sample_products_ja.py: 商品データにimage_urlを追加schema.py: コレクション定義と検索結果フィールドにimage_urlを追加insert_sample_data.py: 新しい商品フィールドを Milvus に投入app.py: API レスポンスモデルと検索結果 JSON にimage_urlを追加
実際の提案内容は多少変わる場合がありますが、保存する商品フィールドを追加するときは、API レスポンスと Milvus のデータ定義をそろえる必要があります。
ステップ 7: 変更を承認¶
- IBM Bob の提案を読む
- 「承認」ボタンをクリック
- 関連ファイルに変更が適用される
ステップ 8: 動作確認¶
-
Milvus のコレクション定義が変わったため、サンプルデータを再投入:
確認プロンプトについて
Part 1 で作成したコレクションが既に存在するため、スクリプトが
このコレクションを削除して作り直しますか? [y/N]と確認してきます。yと答えてください(.envで設定した自分専用のコレクションのため、他の参加者には影響しません)。 -
アプリケーションを起動(
python app.pyを実行。 起動方法) - Swagger UI を開く(
http://localhost:8002/docs) -
検索を実行:
-
結果を確認:
確認ポイント: image_url フィールドが追加されている
機能 1 完了チェック¶
- IBM Bob に指示を出せた
- IBM Bob がコードを生成した
- 変更を承認した
- コレクション定義の変更後にサンプルデータを再投入した
- 検索結果に
image_urlが表示される
機能 2: 価格フィルター¶
なぜこの機能が必要?
価格帯で絞り込めると、予算に合った商品を探せます。
ステップ 1: アプリケーションを停止¶
アプリケーションを起動しているターミナルで Ctrl+C を押して停止します。
ステップ 2: IBM Bob に指示を出す¶
チャット入力欄に以下を入力して Enter:
ステップ 3: IBM Bob の提案を確認¶
IBM Bob が以下のような提案をします。
変更内容:
app.py: 検索リクエストにmin_priceとmax_priceパラメータを追加- 検索結果を価格帯でフィルタリング
価格は既存の Milvus コレクションに保存済みのため、この機能では通常 schema.py の変更やサンプルデータの再投入は不要です。
ステップ 4: 変更を承認¶
「承認」ボタンをクリック
ステップ 5: 動作確認¶
- アプリケーションを起動(
python app.pyを実行。 起動方法) -
検索を実行:
-
結果を確認: 5000 円〜10000 円の商品のみ表示される
機能 2 完了チェック¶
- IBM Bob に指示を出せた
- 変更を承認した
- 価格フィルターが動作する
機能 3: レコメンド理由の表示¶
なぜこの機能が必要?
なぜその商品がおすすめなのかを表示すると、ユーザーの納得感が高まります。
ステップ 1: アプリケーションを停止¶
アプリケーションを起動しているターミナルで Ctrl+C を押して停止します。
ステップ 2: IBM Bob に指示を出す¶
チャット入力欄に以下を入力して Enter:
ステップ 3: IBM Bob の提案を確認¶
IBM Bob が以下のような提案をします。
変更内容:
app.py: API レスポンスモデルと検索結果 JSON にrecommendation_reasonを追加- 類似度スコアに基づいて理由を生成
レコメンド理由は検索スコアから生成するため、この機能では通常、保存済みの商品データを変更する必要はありません。
ステップ 4: 変更を承認¶
「承認」ボタンをクリック
ステップ 5: 動作確認¶
- アプリケーションを起動(
python app.pyを実行。 起動方法) -
検索を実行:
-
結果を確認:
機能 3 完了チェック¶
- IBM Bob に指示を出せた
- 変更を承認した
- レコメンド理由が表示される
Part 2 完了チェック¶
- 商品画像表示機能を追加した
- 価格フィルター機能を追加した
- レコメンド理由表示機能を追加した
- すべての機能が正しく動作する
FAQ¶
Q1: IBM Bob が応答しない
対処法:
- インターネット接続を確認
- IBM Bob を再起動
Q2: 変更が反映されない
対処法:
- ファイルが保存されているか確認
-
アプリケーションを手動で再起動
- アプリケーションを起動しているターミナルで Ctrl+C (停止)
python app.pyを実行( 起動方法)
-
ブラウザをリロード
次のステップ¶
Part 2 が完了したら、Part 3: 動作確認 に進みましょう!