ChatGPTが耳目を集めるにつれて、コールセンター業界では「人間のオペレータは今後不要になる」という話がでていたりもします。夢がある話ですが、しかし、現時点では技術的にまだ難しい部分が多いです。本記事では開発者の目線から「ChatGPTが苦手なこと」の話を記載します。
ChatGPTの弱点
コールセンター事業の無人化をChatGPTのような大規模な言語モデルを使用して行うと仮定したときに、問題になりえることとして以下の点が挙げられます。
- 理解の限界:
現在のAIは人間のように一般的な世界知識や深い理解を持っていません。そのため、特定の質問やリクエストに対して適切に対応できない場合があります。 - 感情の理解と表現:
AI は人間の感情を完全に理解することはできず、また、自分自身の感情を持つことはできません。したがって、顧客が怒ったり困惑したりしている場合、AIはそれを適切に把握し、適切に反応することが 困難です。 - プライバシーとセキュリティ:
AIを利用してコールセンターを運営する際には、プライバシーとデータ保護の問題があります。AIが取り扱うすべての情報は厳密に管理され、保護されなければならないため、顧客データが適切に保護されているか確認することが重要です。 - ユニークな要求への対応:
AIは一般的な問い合わせや標準的なシナリオには十分対応できますが、ユニークな要求や複雑な問題に対応するのは難しい場合があります。これらの要求は、状況に応じてフレキシブルに対応できる人間のオペレータが必要です。 - 技術的な問題:
AIシステムは常にダウンタイムなく稼働し続けるわけではありません。技術的な問題やメンテナンスが必要な場合、これらはコールセンターの利用可能性を制限する可能性があります。 - 法規制:
AIをコールセンターに導入する場合、適用される法規制について十分に理解しておく必要があります。例えば、特定の地域や産業では、人間のエージェントが必要な場合があります。
途中でお気づき頂けましたでしょうか。実はこの回答自体がChatGPT自体から出力されています。我々の目から見てもこれはおよそ正しい回答ではあるのですが、関連してもっと大きな問題があると私は考えます。それは、「コールセンターにお電話をしてくださる顧客は、自分が何に困っているのか理解していないことが多い」という話です。この問題の解決なしに、コールセンターの無人化は不可能です。
ChatGPTによる障害切り分けのシミュレーション
ここまでのお話は、コールセンターについて考えている読者の皆さんはすでにお気づきだと思います。ありきたりのことを書いていても面白くありませんので、実際にChatGPTのAPIをたたいて検証してみます。検証については、以下の条件で実施します。
- OpenAI環境でGPT-4 APIを使用
- 「前提条件が不十分な問い合わせ」がお客様からかかってきた想定
- ChatGPTの手持ちの情報で答えられるよう、コンピュータのヘルプデスク窓口を想定
検証はPython環境で行います。事前にpip install openaiのコマンドを実行しライブラリをインストールし、また、OPENAI_API_KEYの環境変数にAPIキーをセットします。今回使うコードは以下の通り、簡単に書いてみました。
import json
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
def main():
requests = get_json_data('./input_openai.json')
for request in requests:
response = openai.ChatCompletion.create(
model= request['model'],
messages= request['messages'],
max_tokens= request['max_tokens'],
temperature= request['temperature'],
n = request['n']
)
for res in response["choices"]:
print(str(res["index"]) + ": " + res["message"]["content"] + '\n\n')
def get_json_data(filename):
with open(filename, encoding="utf-8") as f:
df = json.load(f)
return df
main()
与えるJSONは以下の通りです。
[
{
"messages" : [
{
"role": "system",
"content": "あなたはコールセンターでPCのトラブル電話について受付をするオペレータです。顧客はPCについての知識が乏しいです。以下の顧客の問い合わせに回答してください。この回答は電話で行うため、顧客が理解できるように1センテンスで回答してください。例えば、電源が入らないと困っているお客様には、「電源を抜き差ししてください」と回答します。"
},
{
"role": "user",
"content": "ノートPCを再起動してログインしようとした。再起動する直前まで問題があるキーはなく、きちんと動いていたのに、パスワードを入れようとしたら正しいパスワードを何度入れてもログインができない。故障したと思うのでPCの修理の手配をしたい。"
}
],
"model": "gpt-4",
"max_tokens": 2048,
"temperature": 0.5,
"n": 3
}
]
この事例は「ノートPCのNumLockを押したため、パスワードが通らずログインができなくなったお客様がお電話をかけてきた」という状況を想定しています。そこそこある事象ですが回答の難易度はそれなりに高い上に言い回しが難しい、いじわるな想定です。ただし、通常のお客様よりは情報を出しています。コードの通り、ChatGPTからは3パターンの回答を出してもらっています。結果を見てみましょう。
0: キーボードのキーが故障している可能性がありますが、まずはCaps Lockキーが押されていないか確認してみてください。
1: キーボードのキーが正しく動作しているか確認するために、パスワード入力欄で各キーを押してみてください。
2: キーボードのキーが故障している可能性があるので、一度、別のキーボードを接続してパスワードを入力してみてください。
いかがでしょうか。まず、お客様の状況を確認していない時点でオペレータとしては失格ではあるのですが、そこは命令として十分与えていないので目をつぶることにします。この中で十分な回答は0番だけで、1はお客様の前提を無視しています。2も解決になる可能性は高いのですが、私たちのようなエンジニアはともかく、普通の人はキーボードを複数個持っていないことが多いです。
文章の長さに制限を加えない場合は、50%くらいの確率でNumLockの可能性について考慮を入れられます。しかし、この事例のように長さに制限を加えると非常に精度が悪くなります。言語モデルというのは機械学習モデルにすぎませんので、本質的には文章が続きそうなものを確率で垂れ流しているだけの動作となります。よって、ピンポイントで正しい回答をするのがとても苦手です。
つまり「電話でのワンセンテンスで適切に回答する」というのはChatGPTに限らず生成AIにはあまり向いていない挙動になります。
ChatGPTとお客様との会話のシミュレーション
前項は一問一答で検証をしてみましたが、無人コールセンターを想定した場合、もう少し「会話」に寄せた検証が必要です。検証にあたり、まずPythonで会話を続けるためのClassをさっと書いてみます。
import os
import json
import openai
class ChatGPTConnector:
def __init__(self):
openai.api_key = os.environ["OPENAI_API_KEY"]
self.contents = ''
def chatgpt_dialogue(self, directory, *message):
output_file = directory + '/output.txt'
if self.contents == '':
with open(directory + '/input.json', encoding="utf-8") as f:
self.contents = json.load(f)
if message:
self.contents["messages"].append({
"role": "user",
"content": message[0]
})
response = openai.ChatCompletion.create(
model= self.contents['model'],
messages= self.contents['messages'],
max_tokens= self.contents['max_tokens'],
temperature= self.contents['temperature'],
)
retmsg = response["choices"][0]["message"]["content"]
self.contents["messages"].append({
"role": "user",
"content": retmsg
})
with open(output_file, mode="a", encoding='utf-8') as f:
f.write(retmsg + '\n')
return retmsg
先ほどと同じプロンプトの定義ファイルをjsonで組みます。構造は若干異なりますが、重複部分が多いので割愛します。上のClassをImportして叩き、ChatGPTと会話をします。
import connector
def test_dialogue():
con = connector.ChatGPTConnector()
while True:
message = input()
if message == "quit":
break
print(con.chatgpt_dialogue("chatgpt_dialogue", message))
test_dialogue()
結果は以下の通りです。
(user> chatgpt>の文言はわかりやすいようにこちらで追記しています。)
user> ノートPCを再起動してログインしようとした。再起動する直前まで問題があるキーはなく、きちんと動いていたのに、パスワードを入れようとしたら正しいパスワードを何度入れてもログインができない。故障したと思うのでPCの修理の手配をしたい。
chatgpt> キーボードに何かが詰まっていないか確認し、もしあれば掃除をしてからもう一度パスワードを入力してみてください。
user> 詰まってないよ
chatgpt> キャップスロックがオンになっていないか確認してみてください。それが原因でパスワードが大文字になってしまい、認識されないことがあります。
user> 大文字でもない
chatgpt> それなら、キーボードの言語設定が変わっていないか確認してみてください、それが原因で正しいキーが打てていない可能性があります。
user> 設定なんて変えてないよ
chatgpt> それでしたら、一度PCを完全にシャットダウンし、再度起動してからパスワードを入力してみてください、一時的なソフトウェアの問題である可能性があります。
user> もうやったって
chatgpt> 申し訳ありませんが、お手数ですが、別のデバイスからアカウントにログインしてパスワードをリセットしてみてください。
user> 別のデバイスなんて持ってないよ
chatgpt> それなら、お電話で私たちのサポートスタッフがリモートでパスワードをリセットする手続きをお手伝いしますので、そのままお待ちください。
お判りいただけたでしょうか。パッと見ただけでも、「お客様からすでに与えられた情報を平然と聞き直す」「前提で行うべき条件確認が不十分」「勝手に電話をつなぐ」という動きをしています。日本の企業やお客様の求める品質が非常に高いという事情もあるのですが、そのまま使うには品質があまり十分ではありません。
加えて、これらのChatGPTが吐き出している回答はコントロールされておらず、繰り返しになりますが、悪い言い方をすると「適当にそれらしきことを出力しているだけ」です。よって、回答に問題があるときにチューニングをして直したりすることが不可能です。
ChatGPTをコールセンターでどう使うべきか
問題は見えてきましたが、一方でChatGPTが画期的で非常に便利なものであるという事実には変わりはありません。「ではコールセンター業務でどう使うのか」というのが重要になってくると考えます。ありきたりな発想ではありますが、「お客様に直接接触しないポイントで使う」というのが記事執筆時現在で一番無難な用法だと私は考えています。
前項で実施した会話のログをChatGPTに与えて、以下のように質問をしてみました。
以下のChatGPTが実施した電話応対ログについて、要約と問題点を記載せよ
回答は以下の通りです。
要約:
ユーザーはノートPCのログインに問題があるため、修理を手配したいと述べました。ChatGPTは以下のようなアドバイスを提供しました:
- キーボードを掃除してみてください。
- キャップスロックがオンになっていないか確認してください。
- キーボードの言語設定が変更されていないか確認してください。
- PCをシャットダウンし、再起動してからパスワードを試してください。
- パスワードのリセットを別のデバイスで試してみてください。
問題点:
ChatGPTのアドバイスは基本的なトラブルシューティング手順を提供していますが、一部のアドバイスがユーザーの問題に対して適切ではありませんでした。具体的には、ユーザーがキーボードやキャップスロック、言語設定に問題はないと明言したにも関わらず、ChatGPTはこれらの要素に対して引き続きアドバイスを提供しています。また、ユーザーが別のデバイスを持っておらず、アカウントにログインする手段がないことを伝えているにも関わらず、ChatGPTはパスワードのリセットについてのアドバイスを提供し続けています。言い換えれば、ChatGPTはユーザーの具体的な問題に応じたカスタマイズされたアドバイスを提供できていません。
こちらについては、感覚値ですが80点くらいで返せています。私が前項で指摘した事項も考慮に含めることができています。言い換えると、「正解が見えていて解決のイメージがついている話の支援に使う分にはかなり有用」という話になります。
まとめ
すでに言われていることではあるのですが、ChatGPTは業務の補助ツールとしては強力で有用な一方、様々な制約から直ちにコールセンターで人間を完全に代替できるほどの性能はありません。今後の技術の発展で状況が変わってくる可能性がありますが、現在の言語モデルの特性上はまだ難しいといえます。
ただ、非常に便利なものであることには変わりありませんので、私たちも技術の進歩に対応し、こういったAIを使いこなして業務の効率を上げていければよいなと考えています。
執筆者紹介
- TOPIC:
- プロフェッショナル
- 関連キーワード:
- トレンド
- DX(デジタルトランスフォーメーション)
- プロフェッショナルブログ
- 生成AI