Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ChatGPTを使った 社内アシスタントBOTを作りました / ChatGPT Assista...
Search
howdy39
May 12, 2023
Programming
0
680
ChatGPTを使った 社内アシスタントBOTを作りました / ChatGPT Assistant Bot
howdy39
May 12, 2023
Tweet
Share
More Decks by howdy39
See All by howdy39
Slackbot × RAG で実現する社内情報検索の最適化
howdy39
2
570
AI新時代 情シスが向き合うべきAI活用戦略
howdy39
0
190
GAS x スプレッドシート x Looker Studio を組み合わせたデバイス管理 / DeviceMangent with GAS, SpreadSheet, Looker Studio
howdy39
3
1.6k
WebPagetestで始めるパフォーマンス計測 / Performance measurement starting with WebPagetest
howdy39
4
680
Storybookを用いたVue.js共通コンポーネント開発との戦い / stores-fights-storybook
howdy39
5
8.7k
gas-webpagetestで パフォーマンス計測を始めよう / get-started-measuring-performance-with-gas-webpagetest
howdy39
0
2.5k
Promise
howdy39
1
390
カラーユニバーサルデザイン / color universal design
howdy39
0
940
Geolocation API
howdy39
0
110
Other Decks in Programming
See All in Programming
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
940
クラシルを支える技術と組織
rakutek
0
190
CSC305 Lecture 03
javiergs
PRO
0
220
複雑化したリポジトリをなんとかした話 pipenvからuvによるモノレポ構成への移行
satoshi256kbyte
0
550
VisionFrameworkで実現する - プライバシーに配慮した「顔ぼかし」機能 / Face blurring with Vision Framework
imaizume
0
180
defer f()とdefer fの挙動を 誤解していた話
kogamochiduki
2
150
ネイティブ製ガントチャートUIを作って学ぶUICollectionViewLayoutの威力
jrsaruo
0
110
AccessorySetupKitで実現するシームレスなペアリング体験 / Seamless pairing with AccessorySetupKit
nekowen
0
200
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
2.5k
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
780
2025年版 サーバーレス Web アプリケーションの作り方
hayatow
23
25k
GitHub Actions × AWS OIDC連携の仕組みと経緯を理解する
ota1022
0
220
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.2k
Producing Creativity
orderedlist
PRO
347
40k
The Language of Interfaces
destraynor
162
25k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Bash Introduction
62gerente
615
210k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Faster Mobile Websites
deanohume
310
31k
Why Our Code Smells
bkeepers
PRO
339
57k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
We Have a Design System, Now What?
morganepeng
53
7.8k
Gamification - CAS2011
davidbonilla
81
5.4k
Raft: Consensus for Rubyists
vanstee
139
7.1k
Transcript
ChatGPTを使った 社内アシスタントBOTを作りました STORES 株式会社 中野 達也 1
自己紹介 STORES 株式会社 IT本部マネージャー 職種:コーポレートエンジニア といいつつなんでも屋なので オフィス増床のプロジェクトマネージャー アドベントカレンダーのプロジェクトオーナー などもやってたりします 中野
達也 (@howdy39) 2 2
お店のデジタル化を支援する、5つのプロダクト。 ネットショップ開設・運営 お店のキャッシュレス オンライン予約システム POSレジ 店舗アプリ作成 STORES PRODUCTS 3 3
https://jobs.st.inc 絶賛採用中です! 4 4
どんなBOTをつくったの? ユーザー視点から仕組みを解説 事前にベクトルデータをDBに入れておく際のポイント 01 02 03 目次 5
どんなBOTをつくったの? 6
どんなBOT? Slackで質問を投げかけると社内のドキュメントを読み込んで回答してくれるBOT (バックオフィスや社内ITの情報のみ) 7 7
BOTがあることで、社員のドキュメントを探すコストが低下 8 8
ユーザー視点から仕組みを解説 9
ユーザー視点から仕組みを見ていこう パソコンがなにもし てないのにこわれま した パソコンがなにもし ていないのに故障し た場合は、情シスに 相談してください。 ここがよくわからな い
10 10 ユーザー BOT ChatGPT
実はプロンプトをいじってるだけ パソコンがなにもし てないのにこわれま した パソコンがなにもし ていないのに故障し た場合は、情シスに 相談してください。 下記の情報を使って簡潔に回 答してください。
情報:パソコンが故障した場合 は、情シスに相談。 質問:パソコンがなにもしてな いのにこわれました 回答: パソコンがなにもし ていないのに故障し た場合は、情シスに 相談してください。 11 11 ユーザー BOT ChatGPT
実際にChatGPT(3.5)に聞いてみる 12 12
情報部分に読み込ませたい内容を全部入れればいい? 下記の情報を使って簡潔に回答してくだ さい。 情報:読み込ませたい内容。読み込ませ たい内容。読み込ませたい内容。読み 込ませたい内容。読み込ませたい内容。 読み込ませたい内容。読み込ませたい 内容。 ・・・ ・・・
質問:パソコンがなにもしてないのにこわ れました 回答: プロンプトの情報部分 に読み込ませたい内容 を全部いれればいいの かな? ダメです。 ChatGPTに投げられる 文字数(トークン数)に 制限があるためです。 13 13
トークンについて(1/2) モデルによって違います が、APIで使うのに一般的 なChatGPT3.5は4,096 トークンが最大トークン数 です。 日本語だと大体2,700文字 です。 https://platform.openai.com/tokenizer 14
14
トークンについて(2/2) プロンプト全体で2,700文 字なので、質問などを含め たテキストも考慮すると、情 報に入れられるのは実質 2,000文字程度になりま す。 下記の情報を使って簡潔に回答してくだ さい。 情報:ここは2,000文字程度が限界
質問:パソコンがなにもしてないのにこわ れました 回答: 15 15
たくさんの記事からどうやって特定の文章(情報)を取得するの?(1/2) どういう仕組みで情報に入 れたい2,000文字をもって くるの? そこででてくるのが Embedding(埋め込み)で す。 16 16
Embedding(埋め込み)はざっくりいうと 文章の方向性をベクトルに変換すること。 パソコンが壊れた。 を例にすると ・パソコンに関するベクトル ・故障に関するベクトル を持ったベクトルに変換するイメージ 質問のベクトル情報と事前に登録しておい たドキュメントのベクトル情報が近い文章 を探せばOK
パソコンが故障した場合 は、情シスに相談。 たくさんの記事からどうやって特定の文章(情報)を取得するの?(2/2) 17 17 パソコン 故障 スマホが故障した場合 は〜 パソコンの交換申請は〜 パソコン、故障 に関するベクトル 情報を探せばいい
つまり全体の流れはこうなる(1/3) パソコンがなにもし てないのにこわれま した パソコンがなにもしてな いのにこわれました (Embedding) パソコン・故障の ベクトル情報 18
18 ユーザー BOT ChatGPT 質問をそのままEmbeddingする(ベクトル化する)
つまり全体の流れはこうなる(2/3) パソコン・故障の ベクトル情報 パソコンが故障した 場合は、情シスに相 談。 19 19 BOT ベクトル特化型DB
ベクトルをもとに文章を取得する
つまり全体の流れはこうなる(3/3) パソコンがなにもし てないのにこわれま した パソコンがなにもし ていないのに故障し た場合は、情シスに 相談してください。 下記の情報を使って簡潔に回 答してください。
情報:パソコンが故障した場合 は、情シスに相談。 質問:パソコンがなにもしてな いのにこわれました 回答: パソコンがなにもし ていないのに故障し た場合は、情シスに 相談してください。 20 20 ユーザー BOT ChatGPT 文章をプロンプトに入れる
事前にベクトルデータをDBに入れておく際のポイント 21
大きな文章(記事) 大きな文章を分割してベクトルDBに格納する 例)1,000トークンずつ の文章に分割 22 22 ベクトル特化型DB Embedding ・ベクトル ・文章
こうすることで複数の情報源を組み合わせることが可能に 下記の情報を使って簡潔に回答してください。 情報: ・1番目ベクトルが近い文章( 1,000トークン) ・2番目ベクトルが近い文章( 1,000トークン) ・3番目ベクトルが近い文章( 1,000トークン) 質問:パソコンがなにもしてないのにこわれました
回答: 最大4,096トークン 23 23
関連記事に2つの記事がでてたのはこれが理由 24 24
まとめ 25 25 仕組み プロンプトに情報欄を作ってそれを一緒に渡しているだけ 事前準備 ドキュメントを細切れにしてベクトルDBに入れておく必要がある 質問時 1. 質問内容をEmbeddingを使ってベクトル化する
2. 質問内容のベクトルを使ってベクトルDBから近い情報を取得 3. 情報を含めてChatGPTに質問を投げる
ご清聴ありがとうございました! 26