Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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