Slide 1

Slide 1 text

1 SQLクエリの組み⽴てを ⾃動化するSlack Bot GMOペパボ株式会社 黒宮 寛之 #さくらのAI Meetup vol.5「データベース」

Slide 2

Slide 2 text

SQLクエリの組み⽴てを⾃動化するSlack Bot SUZURI事業部マーケットプレイスチーム - モバイルアプリのバックエンド開発 - 各種イベント周りの計測 - CI/CD周りの改善, etc .. 京都⼤学院博⼠課程修了 → GMOペパボ新卒エンジニア(2023.4~) 2 黒宮 寛之(くろみー)

Slide 3

Slide 3 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 今⽇の話 3

Slide 4

Slide 4 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 4 何を作ったか

Slide 5

Slide 5 text

SQLクエリの組み⽴てを⾃動化するSlack Bot きっかけ 5

Slide 6

Slide 6 text

SQLクエリの組み⽴てを⾃動化するSlack Bot ● Go製のDBドキュメントツール ● DBMSのスキーマ情報から human-readable なDBドキュ メントを⽣成してくれる 6 tbls

Slide 7

Slide 7 text

SQLクエリの組み⽴てを⾃動化するSlack Bot ⽣成されるドキュメントの例 7 https://github.com/k1LoW/tbls/blob/main/sample/mariadb/comment_stars.md

Slide 8

Slide 8 text

SQLクエリの組み⽴てを⾃動化するSlack Bot ● Go製のtblsのサブコマンド(tblsとは別レポジトリ で管理されている) ● tblsによって⽣成されたDBドキュメントを参照して LLMへの問い合わせを⾏う 8 tbls-ask

Slide 9

Slide 9 text

SQLクエリの組み⽴てを⾃動化するSlack Bot tbls-askの課題 9 ● CLIツールのため使える⼈がエンジニアに限られている ● 認証情報の設定がちょっと⾯倒 (社内で共有できない)

Slide 10

Slide 10 text

SQLクエリの組み⽴てを⾃動化するSlack Bot Slack Botの構想 10 ※幾星霜(いくせいそう)とは、非常に長い時間が経過した ことを表す表現

Slide 11

Slide 11 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 1. エンジニア以外のメンバーも気 軽に使える 2. 初期設定をまとめて共有の環境 にデプロイできる Slack Bot 化するメリット 11

Slide 12

Slide 12 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 作ったもの 12

Slide 13

Slide 13 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 作ったもの 13 この中で tbls-ask を実行する バックエンドのサーバーが動 いています

Slide 14

Slide 14 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 問い合わせ対象のスキーマを選択できるようにした ⼯夫したポイント① 14 ✅ 事業部ごとに異なるスキーマを対象にしたいニーズに 対応

Slide 15

Slide 15 text

SQLクエリの組み⽴てを⾃動化するSlack Bot GitHub (Enterprise) の認可を実装し、常に最新のスキーマ を反映できるようにした ⼯夫したポイント② 15 ✅ スキーマの変更にリアルタイムに追従できる ※社内ではCIでtblsを実行しスキーマの変更があったタイミングで GitHubのドキュメントが更 新される仕組みがある

Slide 16

Slide 16 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 苦労したポイント 16 DBのスキーマ情報がLLMのcontext windowを超過 ● 実務で使われている(歴史のある)サービスのDBド キュメントは想像よりも⼤きかった OpenAI API の context window (128k) を超過するサービス があったのでやむをえず⼀部情報を削ったりした

Slide 17

Slide 17 text

SQLクエリの組み⽴てを⾃動化するSlack Bot tbls-ask と同じくMITライセンスで公開しています (GitHub Copilot との共作です) 成果物 17 https://github.com/kromiii/tbls-ask-agent-slack

Slide 18

Slide 18 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 社内の反応 18

Slide 19

Slide 19 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 利⽤統計(所属部⾨別) 19 ※リリースから10月20日までの約半年間の統計(以下同様)

Slide 20

Slide 20 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 利⽤統計(職種別) 20

Slide 21

Slide 21 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 利⽤⽬的(任意回答) 21

Slide 22

Slide 22 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 業務削減効果(任意回答) 22

Slide 23

Slide 23 text

SQLクエリの組み⽴てを⾃動化するSlack Bot ユーザーの声(エンジニア) 23 ディレクターさんが SQLを書いてきてくれる のでエンジニア がレビューをしたり、微修正をするだけで良くなったこと。自分 がクエリを書いて、ディレクターにこのクエリ使ってくださいと いうことがなくなった! 現部署に異動して 必要な情報を抽出するテーブルがどこに あるかわからない時に大変役立った

Slide 24

Slide 24 text

SQLクエリの組み⽴てを⾃動化するSlack Bot ユーザーの声(ディレクター) 24 「タクラミ」などの固有名詞について説明不要で使える 点が とても便利です。 具体的な質問でなくても、ある程度ざっくりとした質問にも答 えられる点を評価しています。抽象的な質問を汲んだ解説も してくれた記憶で、sqlの基礎も分からない状態からテーブ ルの階層構造についてよく学ぶ機会 にもなりました。

Slide 25

Slide 25 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 改善ポイント 25 たまに抽出できないテーブルを回答してくる時があるので正 確さがより向上すると嬉しいです エラー吐いたあとすぐエンジニアに依頼してしまっているの で、エラー含めて再度tbls-askを使って解決したいなと思う

Slide 26

Slide 26 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 回答の精度を上げるためのアイデア 26 RAGを使うともう少し精度が上がるかもしれない&コス ト節約

Slide 27

Slide 27 text

SQLクエリの組み⽴てを⾃動化するSlack Bot 27 他サービスとの⽐較(余談) Gemini for Google Cloud Bigquery に標準搭載されている GeminiによるSQL生成機能 SQLAI.ai SQLクエリ生成に特化した商用 SaaS Langchain オープンソースのLLMフレーム ワーク。SQL用のプラグインもあ る。

Slide 28

Slide 28 text

SQLクエリの組み⽴てを⾃動化するSlack Bot ● Slack経由で呼び出せるのでビジネス(開発)の流れが 分断されない ● パブリックチャンネルで使うことで他の⼈が質問の意 図と経緯を理解しやすい tbls-ask bot の利点 28

Slide 29

Slide 29 text

ご質問‧ご意⾒お待ちしております 29 ご質問・ご意見お待ちしております 🖐