契約者とオペレーターの通話ログを生成AI（watsonx.ai）で要約してみた 

# ＜目次＞
本記事の目次は、下記の通りです。
１．背景
２．課題設定
３．本記事で要約する通話ログのご紹介
４．【はじめに】プロンプト・ラボの基本操作を学習します
５．【要約してみよう➀】モデル（flan-ul2-20b）で要約してみた。（要約内容が、なんだかおかしい）
６．【要約してみよう➁】モデル（Llama-2-70b-chat）で要約してみた。（それでもおかしい）
７．【要約してみよう➂】モデルパラメータを調整してみた。（一応、要約できた）
８．【要約してみよう➃】Few-shot プロンプティングをしてみた（要約できた！）
９．要約のまとめ（➀から➃の比較）
１０．本記事のまとめ

# １．背景
お客さま対応業務のうち通話内容を要約して記録する作業はカスタマーセンターのオペレーターにとって大きな負荷となり、デジタル技術の活用が進まないケースがございます。

# ２．課題設定
生成AIを活用し、契約者とオペレーターの通話ログを要約して記録し、オペレーターの負荷を軽減し、デジタル技術の活用を促進する。

# ３．本記事で要約する通話ログのご紹介
次の文章（車の保険の補償内容の手続き）を生成AIによって、要約してみたいと思います。
```
[通話日時]: 2023年12月20日 15:45
[通話番号]: 555-123-4567
[担当オペレーター]: オペレーターC
[契約者]: 佐藤健太様

オペレーターC: こんにちは、自動車保険コールセンターへようこそ。お名前は佐藤健太様でしょうか？

佐藤健太: はい、そうです。佐藤健太です。

オペレーターC: ありがとうございます、佐藤様。どのようなお手続きでお手伝いできますか？

佐藤健太: 車の保険の補償内容を変更したいです。

オペレーターC: 了解しました、佐藤様。現在の保険証券番号を教えていただけますか？

佐藤健太: 保険証券番号はWXYZ-987654321です。

オペレーターC: ありがとうございます、佐藤様。お待ちいただいています。確認しました。現在の補償内容について、どのような変更をご希望ですか？

佐藤健太: 車両損害の補償を増額したいです。以前よりも高額な修理費用もカバーされるようにしてほしいです。

オペレーターC: 確認しました、それでは新しい補償内容を調査し、お見積りをお出しいたします。お待ちいただいてもよろしいでしょうか？

佐藤健太: はい、お願いします。

[通話中断]

オペレーターC: お待たせしました、佐藤様。適切なプランを調査しました。新しい補償内容により、年間の保険料は3,2000円になります。ご満足いただけますでしょうか？

佐藤健太: それは理想的です。そのプランでお願いします。

オペレーターC: 了解しました、佐藤様。新しい補償内容を適用させていただきます。変更内容の確認と契約更新手続きを行いますので、しばらくお待ちいただけますか？

佐藤健太: はい、お願いします。

[通話中断]

オペレーターC: 佐藤様、補償内容の変更が正常に完了しました。新しい契約内容を記載した保険証券をお送りいたします。何かご不明点やご質問がございましたら、いつでもお知らせください。

佐藤健太: ありがとうございます、手続きがスムーズでした。

オペレーターC: どういたしまして、佐藤様。また何かご質問やお手続きがあればお気軽にお電話いただければと思います。お疲れ様でした。

佐藤健太: ありがとうございました、さようなら。

オペレーターC: さようなら、良い一日をお過ごしください。
```

# ４．【はじめに】プロンプト・ラボの基本操作を学習します
➀プロンプト・ラボでは、サンプルプロジェクトをご用意しております。今回は、「サンプル・プロンプト」の「Summarization」中から、「Earnings call summary」を選択します。
![Earnings call summary_e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/78d0c74e-009e-42f3-c391-33e6e597445b.png)

➁モデルは、「Summarization」に適したモデル（flan-ul2-20b）が自動的に選択されます。
![Earnings call summary_e2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/d2fe1f02-9b5d-0d5f-6e0c-82a384134d44.png)

➂「命令」には、サンプルの文章が書かれています。
![Earnings call summary_e3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/c87636f3-a610-d751-c41d-87ed9ec32e84.png)

➃「Document:」には、サンプルの文章が書かれています。
![Document_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/92ece5a4-1a3a-41ae-2488-f80861697622.png)

➄「生成」ボタンを押下して、要約してみます。
![Document_e2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/613f3841-7244-b9fe-148e-1245e56d9c8b.png)

➅要約が完了し、要約内容が「Summary」に表示されました。
![Summary_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/82f8710f-f048-17b9-ac51-e19411885d08.png)

# ５．【要約してみよう➀】モデル（flan-ul2-20b）で要約してみた。（要約内容が、なんだかおかしい）
➀モデル（flan-ul2-20b）は変更せずに、通話ログを要約してみます。まずは、「命令」に次の文章を入力します。
```
次の文章は、自動車保険に関するオペレーターと契約者の通話ログです。要約してください。
```
![命令_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/b9341231-1f32-693d-ac6b-3eada890fcf3.png)

➁「Document:」を「通話ログ」、「Summary:」を「要約」に変更して、「通話ログ」の部分に今回の要約対象の文章を入力します。
![通話ログ_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/289d6c45-955f-02c3-fe12-a8f3906cef5e.png)

➂「生成」ボタンを押下して、要約してみます。
![通話ログ_e2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/5ef38fa4-4961-ae6a-f46d-0c506f2fb46e.png)

➃要約が完了し、要約内容が「要約」に表示されました。
![生成結果_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/a0a2227b-7a42-962a-f453-30f04fba29cb.png)

➄「要約」に表示された内容を確認します。
以下のように表示されています。なんだか結果がおかしいようです。原因は、今回利用したモデル（flan-ul2-20b）は、日本語対応されていないためです。
```
: ,? :  [] C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? : 
```

# ６．【要約してみよう➁】モデル（Llama-2-70b-chat）で要約してみた。（それでもおかしい）
➀モデルをflan-ul2-20bからLlama-2-70b-chat（日本語対応モデル）に変更して要約します。モデルは、Llama-2-70b-chatを選択します。
![llama_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/bb8018ac-8c5c-428f-22db-3c580889da3c.png)

➁画面を上にスクロールすると、「ヒント:このモデルは、少なくとも 1 個の例を与えると、より効果的に機能します。」と表示されていますが、今回は例を与えないで要約してみます。
![llama上段_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/d69c58a4-fedc-e8b3-e7e0-7f1ca81fb163.png)

➂「生成」ボタンを押下して、要約してみます。
![llama生成ボタン_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/10e392ca-6851-7783-d7f5-8482d512bc6b.png)

➃要約が完了し、要約内容が「要約」に表示されました。
![llama要約結果_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/14fb681d-eceb-3fbc-b97a-bc36d47d0d66.png)

➄「要約」に表示された内容を確認します。
以下のように表示されています。なんだか結果がおかしいようです。
```
：  本件是关于� compensation for the damage to his vehicle. The operator suggests a new plan with an increased annual premium of $3,200 and explains that it will cover higher repair costs in case of accidents or other unforeseen events occur .The customer agrees on this offer ,and then they proceeds discussing about details such as how long does he have been driving safely without any accident ? And what kind type vehicles are eligible under their policy? Finally，the call ends politely after confirmations from both parties regarding successful completion if all necessary procedures related t o changing terms within insurance contract itself too place accordingly..
```

# ７．【要約してみよう➂】モデルパラメータを調整してみた。（一応、要約できた）
➀パラメータを調整します。モデルパラメータを表示します。
![モデルパラメータ_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/113e96ea-9b38-3323-dc04-bdf52d9e490a.png)

➁モデルパラメータが表示されました。
![モデルパラメータ表示_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/77ac0f5c-f1d3-c3e7-8619-643f489e23f2.png)

➂パラメータを調整します。デコードは「Greedy」のまま変更せず、反復ペナルティを「2」から「1.2」に変更します。また、最大トークン数を「200」から「500」に変更します。（モデルパラメータは、別のQiita記事で解説しますので、お待ちください）
![差し替え_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/55dcdf0a-6d7b-ac9f-155a-4371f9a92397.png)

➃「生成」ボタンを押下して、要約してみます。
![反復ペナルティ_e2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/ad55e173-bcfa-db11-9b48-9019a72090b0.png)

➄要約が完了し、要約内容が「要約」に表示されました。
![反復ペナルティ調整後要約_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/34f96594-5f69-2fb6-38a9-ce7610d94f5f.png)

➅「要約」に表示された内容を確認します。
以下のように表示されています。まずまずの内容ですが、要約内容をさらに改善してみたいと思います。
```
： 佐藤健太様は、自動車保険の補償内容を増額したいと考えていました。オペレーターCは、適切なプランを調査し、新しい補償内容により年間の保険料が3,2000円になることを提示しました。佐藤健太様は、そのプランでお願いしました。
```

# ８．【要約してみよう➃】Few-shot プロンプティングをしてみた（要約できた！）
➀６．の➁でご説明した通り、モデル（Llama-2-70b-chat）では、「少なくとも 1 個の例を与える」と、より効果的に機能します。そこで今回は、1 個の例を与えてみます。これをFew-shot プロンプティングといいます。入力後の画面イメージは下記の通りです。
![例_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/4967c880-d166-8de1-4da9-243106208211.png)

「通話ログ」には、下記の内容（新しい自動車保険への加入）を入力します。（要約対象の文章は、「車の保険の補償内容の手続き」のままです）
```
[通話日時]: 2023年12月15日 10:00
[通話番号]: 987-654-3210
[担当オペレーター]: オペレーターB
[契約者]: 山田花子様

オペレーターB: こんにちは、自動車保険コールセンターへようこそ。お名前は山田花子様でしょうか？

山田花子: はい、そうです。山田花子です。

オペレーターB: ありがとうございます、山田様。どのような保険プランをお探しでしょうか？

山田花子: 新しい自動車保険に加入したいです。車を購入しました。

オペレーターB: 素晴らしい、お手伝いできます。まず、車両情報を教えていただけますか？車の年式、車種、登録番号など。

山田花子: 車は2023年型のトヨタカローラで、登録番号はXYZ-1234です。

オペレーターB: ありがとうございます、山田様。車両情報が確認できました。次に、保険のカバレッジについてどのようなご希望がありますか？例えば、対物賠償責任、対人賠償責任、車両損害など。

山田花子: 対物賠償責任と対人賠償責任、そして車両損害のカバレッジが必要です。

オペレーターB: わかりました、それではお見積りをお出しいたします。お待ちいただいてもよろしいでしょうか？

山田花子: はい、お願いします。

[通話中断]

オペレーターB: お待たせしました、山田様。適切なプランを調査しました。年間の保険料は15,3000円になります。ご満足いただけますでしょうか？

山田花子: それは素晴らしいです。そのプランでお願いします。

オペレーターB: 了解しました、山田様。新しい保険契約を作成いたします。契約内容の確認と必要な情報の収集を行いますので、しばらくお待ちいただけますか？

山田花子: はい、お願いします。

[通話中断]

オペレーターB: 山田様、新しい自動車保険契約が正常に作成されました。契約内容をまとめた契約書をお送りいたします。何かご質問やお手続きがあれば、いつでもお知らせください。

山田花子: ありがとうございます、手続きがスムーズで良かったです。

オペレーターB: どういたしまして、山田様。また何かご質問があればお気軽にお電話いただければと思います。お疲れ様でした。

山田花子: ありがとうございました、さようなら。

オペレーターB: さようなら、良い一日をお過ごしください。
```

「要約」には、下記の値を入力します。
```
2023年12月15日に行われた自動車保険の新規加入に関する通話ログの要約です。通話は、契約者の山田花子様と、担当オペレーターBとの間で行われました。

山田花子様は新しい車を購入し、自動車保険に加入したいと申し出ました。オペレーターBは車両情報とカバレッジの希望を収集し、適切なプランの見積もりを提供しました。山田花子様は提供されたプランに満足し、新しい保険契約が作成されました。年間の保険料は15,3000円です。

通話はスムーズに進行し、最終的に契約が完了しました。
```

➁「生成」ボタンを押下して、要約してみます。
![例_e2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/3d7240ba-debf-09e3-f8fd-834a94482431.png)

➂要約が完了し、要約内容が「要約」に表示されました。
![要約完了_e1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357652/8231603b-59a9-b4ae-b380-5cf8d2c254d4.png)

➃「要約」に表示された内容を確認します。
以下のように表示されています。７．で実施した内容から改善されていることがわかります。
```
2023年12月20日に行われた自動車保険の補償内容変更に関する通話ログの要約です。通話は、契約者の佐藤健太様と、担当オペレーターCとの間で行われました。

佐藤健太様は、現在の保険証券番号を提供し、車両損害の補償を増額したいと申し出ました。オペレーターCは、適切なプランを調査し、新しい補償内容により年間の保険料が3,2000円になることを示しました。佐藤健太様は、提供されたプランに満足し、補償内容の変更をお願いしました。

通話はスムーズに進行し、最終的に補償内容の変更が完了しました。
```

# ９．要約のまとめ（➀から➃の比較）
【要約してみよう➀】モデル（flan-ul2-20b）で要約してみた。（要約内容が、なんだかおかしい）
```
: ,? :  [] C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? :  C: ? : 
```

【要約してみよう➁】モデル（Llama-2-70b-chat）で要約してみた。（それでもおかしい）
```
：  本件是关于� compensation for the damage to his vehicle. The operator suggests a new plan with an increased annual premium of $3,200 and explains that it will cover higher repair costs in case of accidents or other unforeseen events occur .The customer agrees on this offer ,and then they proceeds discussing about details such as how long does he have been driving safely without any accident ? And what kind type vehicles are eligible under their policy? Finally，the call ends politely after confirmations from both parties regarding successful completion if all necessary procedures related t o changing terms within insurance contract itself too place accordingly..
```

【要約してみよう➂】モデルパラメータを調整してみた。（一応、要約できた）
```
： 佐藤健太様は、自動車保険の補償内容を増額したいと考えていました。オペレーターCは、適切なプランを調査し、新しい補償内容により年間の保険料が3,2000円になることを提示しました。佐藤健太様は、そのプランでお願いしました。
```

【要約してみよう➃】Few-shot プロンプティングをしてみた（要約できた！）
```
2023年12月20日に行われた自動車保険の補償内容変更に関する通話ログの要約です。通話は、契約者の佐藤健太様と、担当オペレーターCとの間で行われました。

佐藤健太様は、現在の保険証券番号を提供し、車両損害の補償を増額したいと申し出ました。オペレーターCは、適切なプランを調査し、新しい補償内容により年間の保険料が3,2000円になることを示しました。佐藤健太様は、提供されたプランに満足し、補償内容の変更をお願いしました。

通話はスムーズに進行し、最終的に補償内容の変更が完了しました。
```

# １０．本記事のまとめ
本記事では、生成AIを活用し、契約者とオペレーターの通話ログを要約するところをステップバイステップでご覧いただました。生成AIを導入することで、オペレーターの負荷を軽減し、デジタル技術の活用の参考になれば幸いです。本記事は以上です。ありがとうございました。