Link and Motivation Developers' Blog

リンクアンドモチベーションの開発者ブログです

ヘルプチャットとしてGPTを活用したAIサポート機能(β版)をリリースした話

はじめに

こんにちは、CREグループの小宮です。

先月末にGPTを活用(※)したAIサポート機能(β版)をリリースしました🎉 ので、それに纏わる開発プロセスの話や、プロジェクトの背景について記事を執筆していこうと思います。

※ Open AI APIを活用したLLM技術のことを指しています

プロジェクトの背景

弊社で開発しているモチベーションクラウドはプロダクトの拡大に伴い、顧客の「困った!」に対応するべく、様々なヘルプ記事を執筆してまいりました。

また、各種設定画面にて画面隅にヘルプボックスを用意し、FAQを提示するなどと出来るだけ顧客がカスタマーサポートに問い合わせをする必要もなく、自力で問題を解消できる工夫に努めてまいりました。

一定の効果はあったのですが、初めてプロダクトに触る顧客からしたら

  • どの設定画面から叶えたい設定を実現できるか分からない
  • そもそも何をするべきなのか分からない

等と求めているヘルプ記事にすら辿り着けないケースも一定数存在していました。

そこで、ChatGPTの登場に伴い、顧客の自然な言葉を解釈し、最適なヘルプ記事をレコメンドしつつ、そのヘルプ記事を適切にサマライズしてくれるサポート機能を開発することに決めました。

GPTの選択理由

ChatGPTが登場する前から、ルールベースのチャットボットを開発するかどうかは開発ロードマップを考える上で何度か検討に上がったことがありました。

ルールベースに基づいたサポート機能と比較して、GPTを活用することで

  • 一般的なパターンやキーワードに対してのみならず、オープンな疑問に対しても問題を解消してくれる
  • 新機能がリリースされても、該当のマニュアルを読み込ませるだけでその問い合わせに対応してくれる
  • 様々な問い合わせのパターンを考慮する必要がないので、開発工数が短縮される

などと言ったメリットが挙げられることから、今回はGPTを活用する方針で決めました。

開発プロセス

これから具体的な開発プロセスについて述べていきます。

検証フェーズ

本プロジェクトが動き始めた初期段階において、何よりもちゃんと効果がありそうか?を検証する必要がありました。そこで、Google Colaboratory上でLangChainVectorstoreIndexCreatorを用いて、実際にヘルプ記事を読み込ませ、それらしい回答が得られるかを最初に検討しました。

Getting Started — 🦜🔗 LangChain 0.0.200

画面がなくても最初に動くもので試すことは非常に重要で、何度か質問を投げかける中で、「これは使えそう」という感覚をメンバーが持ち、いよいよ開発に取り掛かりました。

回答精度向上フェーズ

続いて、実際にAIサポート機能の回答精度を向上させるために、行った工夫について述べていきます。

なお、回答精度の計測ですが、ChatGPTでも稀に間違った回答をしてしまうことを踏まえ、AIに正解不正解を判定してもらう方針ではなく、幾つか想定質問を用意して、人間が正否を判定するようにしました。

① 問い合わせのカテゴリーを選択させる

単にヘルプ記事を全量読み込ませて、それを元に回答しようとすると、ヘルプ記事の中でも似たような文言が使わているが別の機能だった場合、similarity_searchで違うヘルプ記事を持ってきてしまうことがあったので、最初に問い合わせのカテゴリーを顧客に選択してもらい、そのカテゴリーをプロンプトに組み込む形で実装しました。

② ヘルプ記事の修正

元々存在していたヘルプ記事も人間が書いたものなので、幾つか主語が曖昧だったり、記事に書いてある文脈から予測が付くため具体的な説明を省略している箇所がありました。実際にTextSplitterIndexを生成する際にこれらの記事は一定のchunk_sizeにぶつ切りにされてしまうので、人間が読んで違和感のない程度に丁寧に記載することを行いました。

③ チャンクを生成する際のパラメータの調整

先述の通り、TextSplitterを活用する際にchunk_sizechunk_overlapと言ったパラメータを指定するのですが、これは実際に何が最適な値なのかを考えても難しいため、ものは試しだとグリッドサーチ(※)で模索しました。

※ 考えられる様々なパラメータの組み合わせを試してみる方法

Getting Started — 🦜🔗 LangChain 0.0.200

この結果、弊社のヘルプ記事の場合、chunk_size=700, chunk_overlap=400で正答率が最も高い数字を叩き出したため、これを採用しました。

他にもプロンプト修正などを行い、想定質問は9割以上の回答率を誇り、β版リリースまで行きました。実際にリリースしたAIサポート機能はこちら!

なお、弊社ではChatGPTの登場に伴い、これまで数ヶ月単位で機能開発を行っていたのですが、この技術革新にアジャストし、脳を作り変える(= アンラーンする)必要があると判断し、それを促すためのアンラーンプログラムとしてGPT Bootcampを実施しました。

本プロジェクトもこれの例外ではなく、要件定義からリリースまで3人(内エンジニア1人)で3週間で実現しました。

先日弊社のメンバーが登壇した日本CTO協会主催のDeveloper eXperience Day 2023のスライドより抜粋

GPTを使った異次元の開発者体験への挑戦 ~ハイパフォーマーのその先へ~/Developer eXperience Day 2023-Link and Motivation - Speaker Deck

今後の展望

未だこの機能はβ版として一部の顧客にしか展開していない状況です。 そのため、更に多くの顧客に使ってもらえるよう、より回答精度/UXを高めていく必要があります。

機能開発は作って終わりではなく、ちゃんと使ってもらって効果を感じてもらうまでが機能開発だと思っているので、 引き続き機能価値を向上させていきます!

※ 本記事はアウトラインからタイトルまで、ChatGPTに考えてもらいました。技術は偉大。