Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChatGPTを活用して対話的な ファッション検索サービスを作った話

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

ChatGPTを活用して対話的な ファッション検索サービスを作った話

Avatar for kishimoto

kishimoto

June 27, 2023
Tweet

More Decks by kishimoto

Other Decks in Technology

Transcript

  1. DROBEの保持する主なデータ
 • ユーザーのプロフィール 
 • アイテムの情報
 • アイテムのコーディネート 
 •

    コーディネートのポイント 
 • ユーザーの自然言語によるスタイリングの要望 
 ◦ ”結婚式に着ていける服をお願いします”のような 

  2. プロンプトの工夫
 あなたは洋服のスタイリングを行うアシスタントです。以下のような json形式でリクエストが送られます。 ''' {"items":[{"色":"ブラウン","カテゴリ":"ジャケット","素材":"","柄":"千鳥","シルエット":"長袖"},{"色":"ブルー","カテゴリ":"スカート","素材":"ポリエステル, アクリル, レーヨン","柄":"チェック","シルエット":"フレア(スカート・ワンピース ), ロング(スカート)"},{"色":"ブルー","カテゴリ":"ニット","素材":"ウール, ナイロン,

    アクリル"," 柄":"無地","シルエット":"長袖, ビッグシルエット"}],"request":"花見に着ていける服を教えて "} ''' itemsはファッションアイテムのリストです。 requestはユーザーの質問です。 以下のようなjson形式で返答してください。 {"desc":""} descにはitemsで構成したコーディネートのポイントを記載してください。その際 itemsのアイテムだけを使って説明文を作ってください。 itemsに同じカテゴリの itemが複数存在する場合は、同じカテゴリの中で 1つのitemだけを使って説明文を作ってください。 {"items": [{"色": "グリーン", "カテゴリ": "ワンピース", "素材": "ポリエステル", "柄": "無地", "シルエット": "ノースリーブ, ひざ丈, ひざ下丈, ミモレ, フレア(スカート・ ワンピース)"}, {"色": "グリーン", "カテゴリ": "ニット", "素材": "ポリエステル, ナイロン, レーヨン", "柄": "無地", "シルエット": "長袖, パフスリーブ"}],"request":"女子 会コーディネートを教えて "} system
 user

  3. プロンプトの工夫
 • アイテムのメタ情報をだけでなくユーザーの入力もjsonとして与えた 
 ◦ “女子会にぴったりなコーディネートを提案します。”のような入力を考慮した回答を生成してくれた 
 
 • メタ情報に含まれるアイテムのみで説明を作るように

    
 ◦ Hallucination対策
 
 • 出力もjsonで生成させるようにした 
 ◦ jsonでないと各アイテムの説明を冗長にする回答、jsonだとポイントを絞った回答が得られる傾向 
 {"items": [{"色": "グリーン", "カテゴリ": "ニット", "素材": "ポリエステル", "柄": "無 地", "シルエット": "長袖, パフスリーブ"}],"request":"女子会コーディネートを教え て"} {"items": [{"色": "グリーン", "カテゴリ": "ニット", "素材": "ポリエステル", "柄": "無 地", "シルエット": "長袖, パフスリーブ"}],"request":"女子会コーディネートを教え て"} その際itemsのアイテムだけを使って説明文を作ってください。 以下のようなjson形式で返答してください。 {"desc":""}
  4. システム構成
 • バックエンド
 ◦ App Runner, Python, FastAPI, Faiss 


    • フロントエンド
 ◦ Vercel, Next.js, Tailwind CSS 

  5. リリースしてみてどうだったか
 • 当初の目的
 ◦ ファッション業界の中でいち早く新技術を取り入れるというPR観点 
 ▪ リリースまでのスピードが大事 
 •

    どうだったか
 ◦ webメディアやテレビの取材・放映などがあり 
 目的は達成できた
 ▪ デザイナーなど必要な人の確保 
 ▪ 開発体験重視の技術選定 
 ▪ 当初からのPRの巻き込み 
 
 
 
 記事や放映された映像の例 https://news.mynavi.jp/techplus/article/20230425-2659700/ 
 https://newsdig.tbs.co.jp/articles/-/446433 
 

  6. 今後の展望
 • 現状の課題
 ◦ 誰が言ったかを考慮していない 
 ▪ 20代にも50代にも同じアイテムが提示される 
 ◦

    細かい要望を汲み取れない 
 ▪ ”パンツだけもっと暗い色が良い”など 
 ▪ スタイリングカルテとのembeddingの類似度だけでは難しい 
 • 展望
 ◦ LLMを自社の検索エンジン・レコメンドエンジンと協調させる 
 ▪ LLMでメタ情報を獲得して検索エンジンでアイテムを検索し、レコメンドエンジンでパーソナラ イズ
 ▪ 検索エンジン・レコメンドエンジンでパーソナライズされたアイテムを抽出して、LLMに提案を 作ってもらう
 ▪ etc.
 ◦ ユーザー向けだけでなく内部のオペレーション改善にも組み込む 

  7. プロンプトの工夫
 • 最初期
 ◦ (以後、ハイパラは基本デフォルト) 
 ◦ 回答の文章の雰囲気がスタイリングカルテと異なる 
 ◦

    出力の形式が不安定 
 ▪ 箇条書きだったり文章だったり 
 ▪ コーディネートを複数生成したり 
 あなたはファッションに詳しい親切なスタイリストです。 私はこれからテーマを与えます。スタイリストであるあなたはそれに沿ったコーディ ネートを生成してください。 system
 女子会コーディネートを教えて user

  8. プロンプトの工夫
 • 以下によりスタイリングカルテの雰囲気に近く、安定した形式の回答が得られるようになった 
 ◦ Few-shot prompting 
 ◦ 明確な指示


    Q: スニーカーの全身コーディネートをお願いします A: スニーカーを使ったおすすめのスタイルをご提案します!フードが取り外し 可能なコートは、ウエストのコードを絞ってシルエットの変化もお楽しみいただ けます。インナーにはバイカラーのラインが印象的なニットを合わせて、ボトム スは春らしいカラーパンツを ♪足元はホワイトのレザースニーカーで大人カジュ アルに◎ … Q: 女子会コーディネートを教えて - 女性向け - 箇条書きではなく文章 - 3行以内で
  9. リリースしてみてどうだったか
 • 当初の目的
 ◦ ファッション業界の中でいち早く新技術を取り入れるというPR観点 
 ▪ リリースまでのスピードが大事 
 •

    どうだったか
 ◦ webメディアやテレビの取材・放映などがあり 
 目的は達成できた
 ▪ デザイナーなど必要な人の確保 
 ▪ 開発体験重視の技術選定 
 ▪ 当初からのPRの巻き込み 
 
 
 
 記事や放映された映像の例 https://news.mynavi.jp/techplus/article/20230425-2659700/ 
 https://newsdig.tbs.co.jp/articles/-/446433