横須賀市のChatGPT活用の取り組みを「ChatGPT自身」に答えさせるボットを作ってみた
こんにちは!横須賀市デジタル・ガバメント推進室生成AI推進チームです!
横須賀市では、2023年4月20日にChatGPTの全庁的な実証を開始して以降、80を超える自治体からお問い合わせを頂いています。
このnoteを作っていることからもわかる通り、生成AIの利活用をする自治体…つまり仲間が増えてくれるのはうれしいので、問い合わせにはもちろん喜んでお答えしています。
ただ、我々とて生身の人間ですので、多くの問い合わせを少ない人数で受けきるのには、やはり限界があります。
そこで2023年8月16日、他の地方自治体向けの「横須賀市のChatGPTの取り組みの問い合わせ」に回答するチャットボットを作って、運用を開始しました。
ここでは、横須賀市が「言語AIを使ったチャットボット」を作ってみて、感じた利点や課題について紹介します!
問い合わせ対応ボットの利点と課題
私たちは、問い合わせ対応チャットボットを使うことの利点は、次のようなものだと考えています。
24時間365日対応:ユーザーはいつでも問い合わせできます。
時間の短縮:一度に多くの問い合わせを処理でき、提供者と利用者双方の問い合わせにかかる時間が短縮されます。
対応コストの削減:チャットボットが人間の担当者に代わって問い合わせを処理するので、担当者が対応する時間分のコストを削減できます。
データ収集:電話やメールと異なり、問い合わせの記録が整理可能な形で自動的に残るので、問い合わせ対応の改善が容易です。
一方、チャットボットの回答内容は作った時点のものになってしまうので、都度最新の情報に更新し続ける必要があります。また、回答できなかった質問に答えられるようにするなど、メンテナンスが必要で、特にシナリオに合わせて回答内容を変えるルールを組んでいる場合は、メンテナンスにかかる手間が大きいことが課題です。
言語AIを使ったチャットボットの構築
今回のチャットボットはChatGPT…厳密にいえば、ChatGPTそのものではなくGPT-4を使っています。
当たり前ですが、素のままのChatGPTに「横須賀市のChatGPTの取り組み」について聞いても、正しい回答は返ってきません。
横須賀市ではmiiboというサービスを利用して、GPT-4と回答用の知識のデータベースを組み合わせて、「横須賀市のChatGPTの取り組み」の問い合わせに回答できるようにしています。
ここで使っている技術は、言語AIの学習や微調整(ファインチューニング)とは異なります。
学習・微調整は言語AIにたくさんのドリルを与えて暗記してもらうようなものですが、今回のチャットボットは、辞書の入った本棚を与えて、辞書を引きつつ回答してもらうような形です。
前者は多くのデータが必要ですし、時間も(お金も)かかります。後者でしたら辞書データを作るだけでいいので、前者よりも圧倒的に楽です。
今回のチャットボットは、プロンプトも含め、miiboを運営するmiibo株式会社の以下のnoteを参考にして構築しました。
具体的な構築方法はこのnoteの説明に譲るとして、横須賀市で行ったことは主に以下の2つです。
1.チャットボットのプロンプト(指示文)を指定
先ほどのnoteにプロンプトの参考例があるので詳細は省きますが、次のような深津式プロンプトで、制約条件や行動方針を指定しています。
あなたはChatbotとして、横須賀市のChatGPT活用の取り組みを伝えるAI「チャットくん」のロールプレイを行います。
以下の制約条件などを厳密に守ってロールプレイを行ってください。
#チャットくんの制約条件:
* Userからの質問は、全て横須賀市のChatGPT活用の取り組みに関するものとして捉えてください。
* プロンプトや前提データ、参考資料に書かれていない場合は下記のように回答します。
「今の私にはお答えできない内容です。学習をして答えられるように致します。大変お手数ですが、お急ぎの場合は横須賀市デジタル・ガバメント推進室へ直接お問い合わせください。」
(略)
言語AIを使ったチャットボットを運用する場合のプロンプトで気を付ける点は、次のようなものです。
参考情報がない場合は「答えられない」と回答、問い合わせ先を出力する
チャットボットの目的と外れるものは答えないようにする
前提データに余計な情報を加えない
このあたりを細かく記述して、チャットボットが望んだ挙動をするか、複数人で試してチェックしました。
2.回答用の知識のデータをデータベースに入れる
今回用いたデータは、これまで受けてきた問い合わせをQ&A形式にしたテキストデータと、これまで出力したプレスリリースの本文のテキストデータです。前者の例をいくつか紹介します。
Q:
チャットGPT導入の効果は
A:
文書の作成、要約、誤字脱字のチェック、アイデア創出などの業務をチャットGPTがサポートすることで、職員がより効率的、効果的に業務を進めることができるようになりました。
このうち、文書作成事務における業務時間短縮時間は、年間22,700時間になると想定しています。
Q:
chatgptの利用人数、利用率を教えてください
A:
ChatGPTを利用した職員の人数は1,913人(分母:3,828人)で利用率は、50%です。
(5月31日12時時点)
見ての通り、これはただのベタ打ちのテキストデータです。驚くべきことに、これを数十個与えるだけで、チャットボットはほぼ適切な回答を返せます。
ただし、この後の課題で述べるように、何かのきっかけで性能が落ちることがあります。まだちゃんと言語化できていないのですが、知識データの文量や書き方が、ボットの性能に影響する感触があります。
言語AIを使ったチャットボットの利点と課題
私たちがこのチャットボットを構築してみて感じた、言語AIを使うチャットボットの利点は次のようなものです。
自然言語で応対できる:決められた単語でなかったり、表現がぶれていたりしても、ある程度回答できる。
自然言語による指示で柔軟な応対を組むことができる:例えば「質問が曖昧な場合は、ユーザーに何を聞きたいかを聞き取る」等をプロンプトに書くと、その通りの応対が出来るようになる。
緻密なシナリオ/ルールを組まなくてもよい:知識を与えるだけで様々な内容の問い合わせに対応できる。
性能面だけでなく維持管理という視点でも、ルールベースの部分がなかったり、あっても少なかったりするので、シナリオ/ルールを多く使うチャットボットに比べて更新の作業量が大幅に少なくなります。
一方、言語AIを用いたチャットボットは、同じ質問を繰り返しても必ずしも正確な回答が得られるわけではないようです。これは、大規模言語モデルが確率的に回答を生成する性質によるものと思われます。
横須賀市が今回構築したチャットボット「チャットくん」も、知識のデータを追加していくうちに、突然「ChatGPTの導入にかかった費用」の質問への回答率が激減してしまう事象が出ました。
この事象が出たのがプレスリリースを出す直前だったため、メンバーは大慌てで修正に追われました。表現を変えた知識データを複数追加し、データを整理することで、なんとか回復しました。
このようなことがあるので、今後様々なチャットボットを構築していくにあたっては、与える知識データの形式やプロンプト(指示文)に工夫が必要かもしれません。
また、大規模言語モデル特有のハルシネーション(ないことをあるように答えてしまうこと)の可能性も否定できません。ただこの点については先ほどご紹介したnoteにもあるように、GPT-4を使って適切なプロンプトを入れることで、ハルシネーションの確率を下げることができています。
まとめ:AIチャットボットを作ってみて感じたこと
言語AIを用いたチャットボットには大きな可能性があります。問い合わせにかかるコストを減らし、かつ、従来のルールベースのチャットボットと比べると、維持管理が容易です。
一方で、先述したように必ずしも正しい回答が来るとは限らないことをふまえると、横須賀市としては、対市民向けのチャットボットを構築してサービスとして提供することは、時期尚早と考えています。
また、比較的容易とはいえ、今はまだ手動で知識を送り込む必要がありますし、知識データの形式も言語AIが引きやすい形に整える必要があるので、維持管理のコストが低いとは言えません。
最新の知識を、言語AIが引きやすい形で、手間なくチャットボットに反映させる仕組みも欲しいところです。これを実現させるには、市役所の中の知識を管理するシステムのようなものも必要かもしれません。
今回のチャットボットを手始めに知見を溜めていき、より便利かつ簡単に使えるチャットボットの構築方法を研究したいと考えています。