メインコンテンツへスキップ
見出し画像

ChatGPTを使った社内ドキュメントを読み込んで回答できるアシスタントBotを作りました!

    ※2023.04.25 予想以上に見られているので追記
    ChatGPTはAPIでの利用なので学習はされません。また入れてる情報は社内のだれでも見れてよい情報に留めており、顧客情報を始めとした個人情報などは一切含めていません。STORES サービスに関わる情報も含んでおりません。
    入れているのは社内業務における経費精算などの各種申請の手順、オフィスの利用ルール、福利厚生の解説などに限定されています。

    この記事は STORES PX Advent Calendar 2023 Spring 16日目の記事です

    こんにちは!STORES のPX部門IT本部でマネージャーをしている@howdy39です。

    先日、社内向けにChatGPTを使ったアシスタントBot(Slack Bot)を開発しリリースしたのでそのご紹介記事になります。

    画像
    リリースアナウンスのSlackメッセージ

    どんなBOT?

    STORES では esa.io を社内のドキュメンテーションツールとして利用しています。
    その中でも社内全体に関わるお役立ち情報は help 階層内に集約しており、そのhelp階層記事の内容に対する質問に回答できるSlack Botになっています。
    例えばGoogle Workspaceの共有ドライブ関連のよくある質問である「共有ドライブの作り方」などの質問に回答できます。

    画像
    共有ドライブの作り方について質問した例

    回答内にあるリンクをクリックするとブラウザでesaの画面が開き、当該箇所の手順が表示されます。

    画像
    共有ドライブ作成手順のesaが開かれる

    esaのテキスト検索で「共有ドライブの作り方」で検索しても文字列が一致しないため上記の記事は出てきません。
    また「共有ドライブ」で検索しても関係ない記事が数百と出てきてしまいます。
    自然言語で質問ができてドンピシャで欲しい記事がでてくるため全社に関する情報の調べやすさをかなりあげることができました。

    help階層の記事はITだけでなく、人事、労務、経理、法務、セキュリティなど多岐に渡っており、現状社内でよくある質問に関してはなかなかの確率で答えられる状態になっています。(現状、記事側を全然いじっていないので、ブラッシュアップするとさらに回答確率は上がっていくかなと思います)

    フィードバックを行える機能もある

    「解決した」「解決しなかった」をそれぞれ押すとメッセージが返ってきます。フィードバックはログに記録されます。
    解決しなかった質問と回答情報をもとにesa記事内容を改修することで更に精度を上げていく予定です。

    また、メッセージはランダム性をもたせてつい押したくなるような工夫を入れてたりもしています。

    画像
    解決したときのメッセージ例

    細かいとこで結構調整をしている

    esaはマークダウン形式なのでChatGPTのAPIに投げてもそのままマークダウンを返すことがあります。

    たとえば

    [手順 D:共有ドライブを使って共有する](https://example.com)を参照してください。

    みたいなテキストメッセージをそのまま返してしまうことがあります。これではSlack上はリンクになりません。そのためSlackのリンクメッセージに使う形式(<link|text>)に変換する処理を入れています。

    逆にリンクで書かれたマークダウンをChatGPTがリンクにせずにただのテキストにしてしまうこともあるので、プロンプトを調整してマークダウン上リンクならリンクで返すように命令文を入れています。

    他にもベクトルDBに入れるマークダウンをChatGPTが認識しやすい形に変換するなど細かいとこで多くの調整をしています。


    ここから先は社内アシスタントBOTに込める想いを少し書いてみました。興味がある方はお読みください。(居るのか?🤔)

    社内アシスタントBotを作るまでの長い道のり

    私はもともとSTORESネットショップのフロントエンドエンジニアとして入社しました。Webアプリケーション開発をしながら、IT、人事、労務、経理などの方が社内中から様々な質問に答えているのを遠くから見ていました。

    STORES(当時はhey)は組織もプロダクトもどんどん拡大していくITベンチャー。当然変化も激しく質問も相当多かったです。とても大変そう…と思っていました。

    私は3年前に今のIT本部の前身であるITチームに社内異動したのですが、異動を希望した理由の一つとして、質問に答える業務をラクにしてあげたいなぁというのがありました。
    そのため異動してから、チャットボットに任せて自動化できないかってのをずっと考えていました。また、欲しい情報は自分で見つけて解決できるようにしたほうがユーザー体験がいいはずだ。というのもありました。

    多かれ少なかれ、人に聞くのって恥ずかしいじゃないですか。変なこと言ってないかな?ってドキドキするじゃないですか。こんなことでお手を煩わせてちゃって済まないな。って思うじゃないですか。(思わなくていいぞ)
    あと単純に自分で解決できたほうが絶対早いし嬉しいよねってのもあります。

    なので手が空いたタイミングでDialogflowを使ったヘルプデスクBOTを作ってPoCしてみたりしてたのですがリリースまでには至りませんでした。欲しい回答精度がでなかったのとメンテコストが高かったためです。

    また、答えられる対象を絞ればいけるかも?と思い、STORES社内で出てくる用語に回答するSlack BOTなんかもチームメンバーに依頼して作ってもらいました。
    精度は悪くなかったですが、用語だけしか答えられないのもあって利用率が低く数ヶ月で提供を終了しました。

    その他にも自動で古いesa記事をアーカイブする仕組みを作ったり、ドキュメントの階層を整理したりして可能な範囲でドキュメントを見つけやすくする環境を作っていました。

    しかし「欲しい記事が見つけられない。」という根本課題の解決にはほど遠い状態でした。

    そんな中、3月の頭にOpenAIからAPIがリリースされました。
    そのリリースを見た瞬間

    「これを使えば私が作りたかったアシスタントBOTがつくれるのでは???」

    と思いました。
    あとはひたすら調べたりコードを書いたりして完成させました。

    正直なところ、AIもPythonも最近のインフラ事情も全然わからなかったのでこれをリリースするまでの道のりは簡単ではなかったです。(開発の最前線から社内ITに異動してからはGASやちょっとしたツールぐらいのコードしか書いてなかったので開発から遠ざかっていた)
    ただそれもChatGPTに質問しつつ解決できました。助かりました笑
    ※ 開発作業は全部一人でやってましたが、アイコンをつくってもらったり、開発途中のBOTに対してフィードバックをもらったり、仕事を他の人にお願いしたりして開発時間を捻出しました。様々な面で多くの人に助けてもらいました。感謝。

    おわりに

    ヘルプデスクBOTではなくアシスタントBOTと書いてあるのに気づきましたでしょうか。

    そう、このBOTはヘルプデスク業務では終わらず、ここからさらに進化させていきます。なのでアシスタントBOTです。

    STORES はリモートワークをしている方も多いですし、拠点も複数あります、そのためSlackを使ったコミュニケーションが一番多いのです。もはやSlackが私達のオフィスといっても過言ではないです。
    オフィスに居て誰もが気軽に話しかけて業務を助けてくれるAIアシスタントとして進化させていきたいです。
    Slackがもともとゲーム会社の社内コミュニケーションツールだったように、それが事業として成り立つレベルまで昇華させていければ最高だなーと思っています。

    「もっとよいプロダクトを作りたい」「もっとよいユーザー体験にしたい」という私のこだわりはフロントエンドをやっていた異動前もコーポレートITをやってる異動後も全くかわっちゃいないな。ということにこのnoteを書いていて気付かされました。


     
     
    情シス向けの情報や Notion, Claude, Google Workspace などを中心に情報発信しています。 ソフトウェアエンジニア歴13年→情シス歴6年→Adminaのエバンジェリスト1年目