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

ChatGPTを使った 社内アシスタントBOTを作りました / ChatGPT Assistant Bot

ChatGPTを使った 社内アシスタントBOTを作りました / ChatGPT Assistant Bot

howdy39

May 12, 2023
Tweet

More Decks by howdy39

Other Decks in Programming

Transcript

  1. ChatGPTを使った
    社内アシスタントBOTを作りました
    STORES 株式会社
    中野 達也
    1

    View full-size slide

  2. 自己紹介
    STORES 株式会社
    IT本部マネージャー
    職種:コーポレートエンジニア
    といいつつなんでも屋なので
    オフィス増床のプロジェクトマネージャー
    アドベントカレンダーのプロジェクトオーナー
    などもやってたりします
    中野 達也
    (@howdy39)
    2
    2

    View full-size slide

  3. お店のデジタル化を支援する、5つのプロダクト。
    ネットショップ開設・運営 お店のキャッシュレス オンライン予約システム
    POSレジ 店舗アプリ作成
    STORES PRODUCTS
    3
    3

    View full-size slide

  4. https://jobs.st.inc
    絶賛採用中です!
    4
    4

    View full-size slide

  5. どんなBOTをつくったの?
    ユーザー視点から仕組みを解説
    事前にベクトルデータをDBに入れておく際のポイント
    01
    02
    03
    目次
    5

    View full-size slide

  6. どんなBOTをつくったの?
    6

    View full-size slide

  7. どんなBOT?
    Slackで質問を投げかけると社内のドキュメントを読み込んで回答してくれるBOT
    (バックオフィスや社内ITの情報のみ)
    7
    7

    View full-size slide

  8. BOTがあることで、社員のドキュメントを探すコストが低下
    8
    8

    View full-size slide

  9. ユーザー視点から仕組みを解説
    9

    View full-size slide

  10. ユーザー視点から仕組みを見ていこう
    パソコンがなにもし
    てないのにこわれま
    した
    パソコンがなにもし
    ていないのに故障し
    た場合は、情シスに
    相談してください。
    ここがよくわからな

    10
    10
    ユーザー BOT ChatGPT

    View full-size slide

  11. 実はプロンプトをいじってるだけ
    パソコンがなにもし
    てないのにこわれま
    した
    パソコンがなにもし
    ていないのに故障し
    た場合は、情シスに
    相談してください。
    下記の情報を使って簡潔に回
    答してください。
    情報:パソコンが故障した場合
    は、情シスに相談。
    質問:パソコンがなにもしてな
    いのにこわれました
    回答:
    パソコンがなにもし
    ていないのに故障し
    た場合は、情シスに
    相談してください。
    11
    11
    ユーザー BOT ChatGPT

    View full-size slide

  12. 実際にChatGPT(3.5)に聞いてみる
    12
    12

    View full-size slide

  13. 情報部分に読み込ませたい内容を全部入れればいい?
    下記の情報を使って簡潔に回答してくだ
    さい。
    情報:読み込ませたい内容。読み込ませ
    たい内容。読み込ませたい内容。読み
    込ませたい内容。読み込ませたい内容。
    読み込ませたい内容。読み込ませたい
    内容。
    ・・・
    ・・・
    質問:パソコンがなにもしてないのにこわ
    れました
    回答:
    プロンプトの情報部分
    に読み込ませたい内容
    を全部いれればいいの
    かな?
    ダメです。
    ChatGPTに投げられる
    文字数(トークン数)に
    制限があるためです。
    13
    13

    View full-size slide

  14. トークンについて(1/2)
    モデルによって違います
    が、APIで使うのに一般的
    なChatGPT3.5は4,096
    トークンが最大トークン数
    です。
    日本語だと大体2,700文字
    です。
    https://platform.openai.com/tokenizer
    14
    14

    View full-size slide

  15. トークンについて(2/2)
    プロンプト全体で2,700文
    字なので、質問などを含め
    たテキストも考慮すると、情
    報に入れられるのは実質
    2,000文字程度になりま
    す。
    下記の情報を使って簡潔に回答してくだ
    さい。
    情報:ここは2,000文字程度が限界
    質問:パソコンがなにもしてないのにこわ
    れました
    回答:
    15
    15

    View full-size slide

  16. たくさんの記事からどうやって特定の文章(情報)を取得するの?(1/2)
    どういう仕組みで情報に入
    れたい2,000文字をもって
    くるの?
    そこででてくるのが
    Embedding(埋め込み)で
    す。
    16
    16

    View full-size slide

  17. Embedding(埋め込み)はざっくりいうと
    文章の方向性をベクトルに変換すること。
    パソコンが壊れた。
    を例にすると
    ・パソコンに関するベクトル
    ・故障に関するベクトル
    を持ったベクトルに変換するイメージ
    質問のベクトル情報と事前に登録しておい
    たドキュメントのベクトル情報が近い文章
    を探せばOK
    パソコンが故障した場合
    は、情シスに相談。
    たくさんの記事からどうやって特定の文章(情報)を取得するの?(2/2)
    17
    17
    パソコン
    故障
    スマホが故障した場合
    は〜
    パソコンの交換申請は〜
    パソコン、故障
    に関するベクトル
    情報を探せばいい

    View full-size slide

  18. つまり全体の流れはこうなる(1/3)
    パソコンがなにもし
    てないのにこわれま
    した
    パソコンがなにもしてな
    いのにこわれました
    (Embedding)
    パソコン・故障の
    ベクトル情報
    18
    18
    ユーザー BOT ChatGPT
    質問をそのままEmbeddingする(ベクトル化する)

    View full-size slide

  19. つまり全体の流れはこうなる(2/3)
    パソコン・故障の
    ベクトル情報
    パソコンが故障した
    場合は、情シスに相
    談。
    19
    19
    BOT
    ベクトル特化型DB
    ベクトルをもとに文章を取得する

    View full-size slide

  20. つまり全体の流れはこうなる(3/3)
    パソコンがなにもし
    てないのにこわれま
    した
    パソコンがなにもし
    ていないのに故障し
    た場合は、情シスに
    相談してください。
    下記の情報を使って簡潔に回
    答してください。
    情報:パソコンが故障した場合
    は、情シスに相談。
    質問:パソコンがなにもしてな
    いのにこわれました
    回答:
    パソコンがなにもし
    ていないのに故障し
    た場合は、情シスに
    相談してください。
    20
    20
    ユーザー BOT ChatGPT
    文章をプロンプトに入れる

    View full-size slide

  21. 事前にベクトルデータをDBに入れておく際のポイント
    21

    View full-size slide

  22. 大きな文章(記事)
    大きな文章を分割してベクトルDBに格納する
    例)1,000トークンずつ
    の文章に分割
    22
    22
    ベクトル特化型DB
    Embedding
    ・ベクトル
    ・文章

    View full-size slide

  23. こうすることで複数の情報源を組み合わせることが可能に
    下記の情報を使って簡潔に回答してください。
    情報:
    ・1番目ベクトルが近い文章( 1,000トークン)
    ・2番目ベクトルが近い文章( 1,000トークン)
    ・3番目ベクトルが近い文章( 1,000トークン)
    質問:パソコンがなにもしてないのにこわれました
    回答:
    最大4,096トークン
    23
    23

    View full-size slide

  24. 関連記事に2つの記事がでてたのはこれが理由
    24
    24

    View full-size slide

  25. まとめ
    25
    25
    仕組み
     プロンプトに情報欄を作ってそれを一緒に渡しているだけ
    事前準備
     ドキュメントを細切れにしてベクトルDBに入れておく必要がある
    質問時
     1. 質問内容をEmbeddingを使ってベクトル化する
     2. 質問内容のベクトルを使ってベクトルDBから近い情報を取得
     3. 情報を含めてChatGPTに質問を投げる

    View full-size slide

  26. ご清聴ありがとうございました!
    26

    View full-size slide