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

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

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

kishimoto

June 27, 2023
Tweet

More Decks by kishimoto

Other Decks in Technology

Transcript

  1. 1
    ChatGPTを活用して対話的な

    ファッション検索サービスを作った話


    View full-size slide

  2. 内容

    ● 自己紹介

    ● DROBEのサービスについて 

    ● ChatGPTを使ったサービスの概要 

    ● 実現方法

    ● システム構成

    ● 今後の展望


    View full-size slide

  3. 自己紹介

    株式会社 DROBE
    岸本将志
    ● 主に機械学習を用いたサービス開発
    ● 周辺のインフラなど

    みずほ情報総研
 マイクロアド

    マイクロアド
 Gunosy
 DROBE


    View full-size slide

  4. DROBEのサービスの流れ

    70問のアンケートに答える

    1
    2
    3
    自宅にスタイリストが選んだ商品
    が届く

    気に入ったもののみ購入、

    それ以外を返品


    View full-size slide

  5. DROBEのサービスの流れ

    ● 自然言語によるコーディネートの解説のデータ(スタイリングカルテ) 


    View full-size slide

  6. DROBEの保持する主なデータ

    ● ユーザーのプロフィール 

    ● アイテムの情報

    ● アイテムのコーディネート 

    ● コーディネートのポイント 

    ● ユーザーの自然言語によるスタイリングの要望 

    ○ ”結婚式に着ていける服をお願いします”のような 


    View full-size slide

  7. ChatGPTを使ってサービスを開発しました

    ● 自然言語で検索が可能 

    ● コンテキストを持った対話型の探索が可能 


    View full-size slide

  8. ChatGPTを使って爆速で開発できるサービスを考えた

    ● ユーザーが自然言語でアイテムを対話的に検索 

    ○ スタイリングカルテを活用すればできそう 

    Streamlitで一日で作った 

    社内確認用モック 


    View full-size slide

  9. 実現方法

    カテゴリ:パンツ

    色:ベージュ

    素材:ポリエステル

    柄:無地

    シルエット:テーパード 


    View full-size slide

  10. プロンプトの工夫

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

    user


    View full-size slide

  11. プロンプトの工夫

    ● アイテムのメタ情報をだけでなくユーザーの入力もjsonとして与えた 

    ○ “女子会にぴったりなコーディネートを提案します。”のような入力を考慮した回答を生成してくれた 


    ● メタ情報に含まれるアイテムのみで説明を作るように 

    ○ Hallucination対策


    ● 出力もjsonで生成させるようにした 

    ○ jsonでないと各アイテムの説明を冗長にする回答、jsonだとポイントを絞った回答が得られる傾向 

    {"items": [{"色": "グリーン", "カテゴリ": "ニット", "素材": "ポリエステル", "柄": "無
    地", "シルエット": "長袖, パフスリーブ"}],"request":"女子会コーディネートを教え
    て"}
    {"items": [{"色": "グリーン", "カテゴリ": "ニット", "素材": "ポリエステル", "柄": "無
    地", "シルエット": "長袖, パフスリーブ"}],"request":"女子会コーディネートを教え
    て"}
    その際itemsのアイテムだけを使って説明文を作ってください。
    以下のようなjson形式で返答してください。
    {"desc":""}

    View full-size slide

  12. システム構成

    ● バックエンド

    ○ App Runner, Python, FastAPI, Faiss 

    ● フロントエンド

    ○ Vercel, Next.js, Tailwind CSS 


    View full-size slide

  13. ざっくりスケジュール

    デザイン
    FE実装
    プロンプトの改良
    BE実装・インフラ構築
    PR(プレスリリース作成・キャンペーン設計)
    この間大体2週間くらい 

    企画
    PoC

    View full-size slide

  14. リリースしてみてどうだったか

    ● 当初の目的

    ○ ファッション業界の中でいち早く新技術を取り入れるというPR観点 

    ■ リリースまでのスピードが大事 

    ● どうだったか

    ○ webメディアやテレビの取材・放映などがあり 

    目的は達成できた

    ■ デザイナーなど必要な人の確保 

    ■ 開発体験重視の技術選定 

    ■ 当初からのPRの巻き込み 




    記事や放映された映像の例
    https://news.mynavi.jp/techplus/article/20230425-2659700/ 

    https://newsdig.tbs.co.jp/articles/-/446433 


    View full-size slide

  15. 今後の展望

    ● 現状の課題

    ○ 誰が言ったかを考慮していない 

    ■ 20代にも50代にも同じアイテムが提示される 

    ○ 細かい要望を汲み取れない 

    ■ ”パンツだけもっと暗い色が良い”など 

    ■ スタイリングカルテとのembeddingの類似度だけでは難しい 

    ● 展望

    ○ LLMを自社の検索エンジン・レコメンドエンジンと協調させる 

    ■ LLMでメタ情報を獲得して検索エンジンでアイテムを検索し、レコメンドエンジンでパーソナラ
    イズ

    ■ 検索エンジン・レコメンドエンジンでパーソナライズされたアイテムを抽出して、LLMに提案を
    作ってもらう

    ■ etc.

    ○ ユーザー向けだけでなく内部のオペレーション改善にも組み込む 


    View full-size slide

  16. 協調動作のための開発環境

    ● 各開発者がプロンプトや協調動作のロジックのアイデアの実装だけすれば良い環境を構築 

    ○ 記事にもまとめてあるので是非 https://info.drobe.co.jp/blog/engineering/llm-ec 


    View full-size slide

  17. 実現方法


    View full-size slide

  18. プロンプトの工夫

    ● 最初期

    ○ (以後、ハイパラは基本デフォルト) 

    ○ 回答の文章の雰囲気がスタイリングカルテと異なる 

    ○ 出力の形式が不安定 

    ■ 箇条書きだったり文章だったり 

    ■ コーディネートを複数生成したり 

    あなたはファッションに詳しい親切なスタイリストです。
    私はこれからテーマを与えます。スタイリストであるあなたはそれに沿ったコーディ
    ネートを生成してください。
    system

    女子会コーディネートを教えて
    user


    View full-size slide

  19. プロンプトの工夫

    ● 以下によりスタイリングカルテの雰囲気に近く、安定した形式の回答が得られるようになった 

    ○ Few-shot prompting 

    ○ 明確な指示

    Q: スニーカーの全身コーディネートをお願いします
    A: スニーカーを使ったおすすめのスタイルをご提案します!フードが取り外し
    可能なコートは、ウエストのコードを絞ってシルエットの変化もお楽しみいただ
    けます。インナーにはバイカラーのラインが印象的なニットを合わせて、ボトム
    スは春らしいカラーパンツを ♪足元はホワイトのレザースニーカーで大人カジュ
    アルに◎

    Q: 女子会コーディネートを教えて
    - 女性向け
    - 箇条書きではなく文章
    - 3行以内で

    View full-size slide

  20. 新たな課題

    ● 回答のコーディネートのポイントと具体例のアイテムが完全には一致しない 


    今の季節の通勤服を教えて
    今の季節の通勤服を教えて
    今の季節の通勤服を教えて
    今の季節の通勤服は、ベージュのテーパードパンツに、白のシャツを合わせた
    コーディネートがおすすめです。足元は、ベージュのパンプスでまとめると、上品
    で清潔感のある印象になります。また、羽織ものとして、ベージュのトレンチコート
    を羽織ると、よりおしゃれな印象になります。
    質問

    回答

    回答

    回答

    ⭕
 ❌
 ❌


    View full-size slide

  21. ChatGPT Prompt Engineering for Developers

    ● 作った後で確認したけどこのコースに書かれているようなポイントを割と抑えていた 

    ○ https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/ 


    View full-size slide

  22. リリースしてみてどうだったか

    ● 当初の目的

    ○ ファッション業界の中でいち早く新技術を取り入れるというPR観点 

    ■ リリースまでのスピードが大事 

    ● どうだったか

    ○ webメディアやテレビの取材・放映などがあり 

    目的は達成できた

    ■ デザイナーなど必要な人の確保 

    ■ 開発体験重視の技術選定 

    ■ 当初からのPRの巻き込み 




    記事や放映された映像の例
    https://news.mynavi.jp/techplus/article/20230425-2659700/ 

    https://newsdig.tbs.co.jp/articles/-/446433 


    View full-size slide