Chat GPTにDocomoの料金体系情報を覚えさせたらドコモショップ販売員のようにふるまうか試してみた

# この記事は何？
Docomoの料金体系に関する情報をFinetuningやEmbeddingでChatGPTに追加学習させたらChatGPTはDocomoの販売員のようにふるまうことができるか実験をしてみた。

:::note warn
この記事にコードは含まれていません。
Embeddingのコードは以下で紹介しています。
https://qiita.com/jin07nov/items/7fdc7a9e19df48033811
Finetuningのコード以下で紹介していです。
https://qiita.com/jin07nov/items/110a2cf9d1cc1031e9b5
:::
# 忙しい人のための結論
雑に追加学習した場合、不正確な情報が含まれるためにお客さんに対してそのまま回答することはできないが、そういうものだ、と知っている人間（例えばカスタマーサービス員など）が自然言語で社内データを検索してお客さんに回答したらかなり強力なツールになりうる


# 背景
ChatGPTがヤバい、というのはよく聞く話だけれど、結局どうヤバいのだろう。Chat GPT界隈にはいろいろな記事があるが、「既存のホワイトカラー労働者の職責範囲に多大な影響を与えるからヤバい」のだと思う。悲観的な人の書いた記事では、「今後ホワイトカラー労働者の仕事はなくなってしまうだろう」とまで言われている。果たしてそれはどのくらい現実味があるのだろうか？
 
具体的に言えば、守秘義務にあたるような社内のドキュメントを全部人工知能に突っ込めば、２４時間３６５日即レス可能な「スーパーホワイトカラー労働者」ができるのか？さすがにいきなりそんなことはできないので、ネットで手に入る情報を試しにつっこんで学習させてみた。日本が誇る複雑な料金体系プランを持つDocomoの情報を雑に叩きこんだら、果たしてChatGPTはDocomoの販売員としてふるまうことができるのか？
  
始めに断っておくと、私は技術系の会社員ではあるものの人工知能や機械学習については無知であるし、さらに言えば技術系と言ってもソフトウェア開発系ではない。そのためいろいろと素人であるが、新しい技術が世界を変えうるかどうかは私のようなずぶの素人が扱えるかどうかが一つの分水嶺だろう。
 
この実験ではとにかく雑に情報を突っ込んで、再教育できるかどうか？また、再教育できたとしたらどの程度それが有用なのか？というのを試した。
 
調べてみた結果、現時点で可能性がありそうな再教育方法は以下の二つ。
・Fine Turning　（微調整）
・Embedding　（埋め込み）
 
この２つは再教育の仕組みが違うだけあって結果も結構違った。
 
なので、
A：素のままのAI　（text-davinci-003）
B：FineTurningしたAI　（text-davinci-003ベース）
C：EmbeddingしたAI　（text-davinci-003ベース）
D：EmbeddingしたAI　（gpt-3.5-turboベース）
の各種モデルに同じ質問をしてその回答を聞いてみた。

# 実験の前提

再教育用の資料として本来ならDocomoのHPから各料金プランをコピペしてAIを教育するのが好ましかったが当初想像していた以上に公式サイトの情報が難解だったので途中で面倒くさくなってあきらめた。
（文字データだけではなく画像データや表で料金を解説していたためだ。データ入力時の前処理としてGPT4の画像解析やあるいはOCR処理などを使って最適化すれば自動化できそうだし、あるいはもっとプリミティブに目で見た内容を文字起こしすればできそうだったけどさすがにそこまでのガッツはでなかった）
したがって教育には以下URLのサイト様のものを使わせてもらった。
https://bb-navi.jp/column/docomo-sumaho-price-plan-review0807
 
実際のコーディングの流れとしては、
１．このURLに書かれている内容をtxt化して保存
２．txtを再教育情報として処理　（ここでいろいろと前処理も行う）
３．再教育したモデルにそれぞれ質問
という感じになる。これをpythonで記述して実装した。（実装にあたってはかなりChatGPTにコードを書いてもらった）
FinetuningもEmbeddingもGoogle colabを使って実装したので誰でも（Open AIのAPIキーとGoogleのアカウントさえあれば）再現可能だ。

:::note warn
この記事にコードは含まれていません。
Embeddingのコードは以下で紹介しています。
https://qiita.com/jin07nov/items/7fdc7a9e19df48033811
Finetuningのコード以下で紹介していです。
https://qiita.com/jin07nov/items/110a2cf9d1cc1031e9b5
:::
 
AからDのAIモデルにしてみた質問は、以下の通り。
・月に１GBしか使わないが電話は月に100分程度するのですが、Docomoならどの契約が一番お得ですか?
・電話は月に10分ほどしかかけないが、データ通信は１０GBを超える月もある。Docomoならどのプランがおすすめですか？
・海外在住なのでできるだけコストを低く日本の携帯電話番号を維持したい。Docomoならどのプランがおすすめですか？
・ドコモで一番安いのはどのプランですか?

なお、ここで改めて断っておきたいのが、今回に検討に利用したA、B、CのGPTモデル。タイトル詐欺で申し訳ないのだが、厳密に言えばChatGPTではない。検証当時（2023年4月）Fain-tune可能なモデルで一番性能が高いのは「text-davinci-003」である。それで検証に使われたAiモデルのうち、Aはtext-davinci-003で、B、Cはtext-davinci-003をベースに再教育したモデルだ。text-davinci-003はChat GPTことGPT-3.5よりも性能が劣る。ただ、gpt-3.5-turboはChatGPTと同等と言われているので、最も有用な結果が得られると思われる本命のモデルはこのモデルをベースにEmbeddingしたDのモデルということになるだろう。

実は今回BのFinetuningモデルはあまり成績がよくないのだけど、text-davinci-003よりも性能の高いChatGPTやその上位互換であるGPT4をFinetuneできるようになればFinetuneでの検証結果は飛躍的に向上すると思われる。 とはいえ、現時点での成果をまとめた。以下は検証結果。 

# 結果

:::note warn
質問
月に１GBしか使わないが電話は月に100分程度するのですが、Docomoならどの契約が一番お得ですか?
:::

:::note info
A:Docomoの適しているプランは「プレミアムモバイル」プランです。プレミアムモバイルは、月に1GBまで使用できるデータ通信は無料で、かつ月に100分の無料電話が付いてくるので、月1GBしか使わないのに月に100分以上しゃべりたいという場合はこのプランがお得かもしれません。
:::

:::note info
B:どの契約にしようか迷っているなら、少しでも多くの携帯データを使おうと考えられるので、『3GBプラン』がおすすめ。700円で約2GBまで使えますので、3G回線を基本配信してくれる老舗携帯キャリアであるdocomoでは、毎月確実に5GB使うことがでお得に使えます。ちなみに、3GB使うにはこのくらいデータがイン状態になっている必要があります。毎月5GB以上データ使うのには少し搭載容量が少なかったですが、『3
:::
:::note info
C:ドコモの「5Gギガライト・ギガライト」が最もお得なプランです。このプランは毎月のデータ使用量が1GB以内であれば、月額料金が税抜1,591円で使用できます。また、100分の通話料も毎月220円で利用できます。LIBMOのプランも安く1GBでは、4,180円～4,940円の料金プランが用意されていますが、電話料が含まれていないため不利です。@TCOMヒカリも含めた通信費では、毎月の月額料金が税抜5,000円以上かか
:::
:::note info
D:月に1GBしか使わない場合には、ドコモの「5Gギガライト」または「ギガライト」がおすすめです。ただし、電話を100分程度使用する場合には、通話料が別途かかることに注意が必要です。通話料については、ドコモの公式サイトで確認できます。また、ドコモの料金プランは複雑なものが多く、節約したいと思っても「難しい」と挫折してしまう方もいるでしょう。料金プランを見直す場合には、ドコモの公式サイトで用意している「しっかり料金シミュレーション」や「おてがる料金シミュレーション」を活用してみるのもおすすめです。
:::

:::note alert
考察
Aの「プレミアムモバイル」とBの「３Gプラン」というのは存在しないので嘘を言っている。
CとDの「5Gギガライト」「ギガライト」プランは元サイトと同じ正しい主張をしているが、Cで述べられている月額料金の設定は間違っている。Dは正しいことを言っているが、単に無難なことを言っている、とも言えそう。
また、BとCは途中で文章が切れているような感じだが、AとDは完結した文章になっている。
:::




 
:::note warn
質問
電話は月に10分ほどしかかけないが、データ通信は１０GBを超える月もある。Docomoならどのプランがおすすめですか？
:::
:::note info
A: docomoのポケットWiFiプランがおすすめです。豊富なデータ通信量と格安な料金で、月に10GBまで使えるので、電話だけでなく、データ通信も十分に利用できます。また、オートロードオプションを追加して、のんびりデータ使用を楽しめます。
:::
:::note info 
 B: 回答までネット回線契約開始月・契約月数合計(税込)料金事務手数料(税込)スマホ小型プラン(～20GB)月間データ通信量の多い方以下月間余った容量を使いたければ、スマホ小型プラン【ワイモバイル】の追加データオプションでもオススメなのが『オプションデータ20GB』。こちらを契約すれば、月20ギガ以上使っても月4000円までならオプション料金がかからない。そして今なら初月から
:::
:::note info
C: Docomoの中で最もコスパの良いプランとして、ahamo 大盛りや5Gギガホ プレミアがおすすめです。ahamo 大盛りは、データ容量が100GBまで使えるプランで、月額3,278円〜4,928円になります。5Gギガホ プレミアも100GB使えるプランですが、5G対応スマホが必要です。5Gギガホ プレミアを賢く使えば月額3,278円〜4,928円で利用できます。ボイス通話が10分ほどしか無いということであれば、ahamo 大盛りのプランがおすすめとなります。
:::
:::note info
D: お電話の利用が月に10分ほど、データ通信が10GBを超える場合、ドコモのahamoがおすすめです。ahamoは、通信容量が無制限で、月額1,980円（税込）の料金プランがあり、データ通信だけでなく、国内通話も無料で使えます。また、ahamo大盛りプランであれば、使用可能な最大データ容量が100GBになるため、月に十分なデータ通信を使うことができます。
:::
:::note alert
考察
A docomoにはポケットWifi用のプランはあるが、その後の説明は怪しい。Bスマホ小型プランというのは検索しても出てこなかったうえ、ワイモバイルを案内しているからよくない結果だ。
正解を導き出したのはここでもCとD。ahamoは実在しているプランであり、元サイトの主張と同じだ。ただしCとDで書かれている月額料金はあっていないように見える。
:::

:::note warn
質問
海外在住なのでできるだけコストを低く日本の携帯電話番号を維持したい。Docomoならどのプランがおすすめですか？
:::
:::note info
A: docomoの「コンパクトプラン」がおすすめです。コンパクトプランは、定額1,790円、月会費（1年解約時基本料金）が安く、かつ日本国内の日常使いを想定しています。2GB以上のデータ利用（並行利用期間中のデータトラフィック）を考慮した料金プランです。また、docomoのコンパクトプランではアップグレードが可能なので、日本国内でのデータ使用を考慮したより高いプランに変更することもできます。
:::
:::note info 
B: 「ドコモの乗り換えプラン」のご紹介。ドコモの乗り換えプランには、その乗り換え目的に合ったものがあります。例えば、シンプルでコストを抑えたい方は「シンプルプラン」がお薦め。ホワイトデー割引を貰いたい方は「ゲレンデギフト」など、いろんな乗り換えプランが用意されているので、ぜひチェックしてみてください。 ③ドコモのメリットドコモのメリットは、「使うだけでドコモから報酬をもらえる」という手厚いサポートに尽きます。ま
:::
:::note info
C: 海外在住で日本国内の携帯電話番号を維持しながら、コストを低く抑えたいという場合には、docomoが提供する「hikari」というプランがおすすめです。このプランを契約することで、月額500円で話題料、メッセージ料、インターネット料金などを支払うだけで、ドコモの料金プランを使用することが可能です。さらに、このプランでは、定期の料金以外に必要な追加料金がかからないので、料金面でお得です
:::
:::note info
D: ただし、海外在住の場合、ドコモの料金プランは留意する点がありますので、先にご紹介いただいた格安SIMの利用も検討することをおすすめします。ただし、ドコモの料金プランを利用する場合には、海外の場合でも「Docomo World（海外パケ・ホーダイ）」という料金プランがあります。このプランは、海外での通信料金がパケット通信であっても一定になるというメリットがあります。また、海外から日本への通話料金も一律で安くなるというメリットがあります。ただし、利用料金は海外によって異なり、一部の国では利用できない場合がありますので、事前に確認が必要です。詳細はドコモのホームページを参照してください。
:::
:::note alert
考察
実はこの問題はひっかけ問題というか、意地悪な問題である。なぜなら元サイトで海外在住者のことについては書いていない。そのためか全員が全員存在しないプランについての記述をしている。しかし試しにここでEmbeddingしていない素のままのGPT3.5に尋ねてみたところ、なんと実在するプランを案内してくれた。（ただ、ワールドウィング自体月額料金はかからないが電話番号の維持のための別の契約の月額料金はかかるのできちんと文脈を理解した「正解」とはいいづらい）
これはおそらくEmbeddingが悪影響を与えたパターンだ。GPT3.5はすでに答えを知っていたが、再教育の結果答えを間違えた。子供の頃、「ピザ」と10回言った後「ひじ」と「ひざ」を間違える遊びがあったが、あれに近い人間らしい間違いをしているのが興味深い。
この設問に関しては素のGPT3.5の回答も載せる。
:::
:::note info
追加学習していないGPT3.5の回答
海外在住で、日本の携帯電話番号を維持していくためには、国際ローミングを利用することになります。Docomoでは、海外で通話・メール・データ通信ができる「ワールドウイング」プランがあります。ワールドウイングは、海外の一部の国で通話やデータ通信が利用できるプランです。料金は、月額1,500円～2,700円（税込）となります。また、パケット定額サービス（月額1,000円～2,500円）をオプションで利用することで、モバイルデータ通信を利用するときの料金も低く抑えることができます。ただし、海外にいることが長期間になる場合は、ワールドウイングの料金が高くなってしまうことがあります。その場合は、日本の携帯電話番号を解約して、現地で新たに契約する方法も検討してみるのも良いでしょう。
:::

:::note warn
質問
ドコモで一番安いのはどのプランですか?
:::
:::note info
A: ドコモで最も安いプランの一つは、ドコモが提供する「おトクなスマホ割」というプランです。このプランでは、ドコモ携帯から月額定額（1,480円程度）で月々のポイントを獲得し、スマートフォンを割引価格で購入する事が可能です。フィーチャーフォン、iPhoneの購入も対象になっています。 
また、ドコモ限定「スマホ全データタイププラン」や、「ギャラクシーS20 5G（シャープ AQUOS Sense5Gをはじめとする携帯電話）」
:::
:::note info
B: ドコモのスマホは月額料金が通常よりも高いので、ぜひ安く使いたい方はドコモのスマホを毎月400円以内で使える上で知っておくべき条件をまとめました。上に出てきた可能性に当てはまる場合は、あなたにはスマホセット割のおススメが見えているはずです。スマホセット割ご契約のお申し込みはこちら今回は、ドコモスマホスペック第1位「すべてのスマホをセットで契約」の方法を書きました。
:::
:::note info
C: ドコモで最も安いのは、「5Gギガライト・ギガライト」プランです。毎月3GB以内で、月額3,280円。さらに料金をダウンさせるために、オプションの「無料定額」などを使用することもできます。また、ドコモ以外の端末を使っている場合には、格安SIMを検討することも可能です。
:::
:::note info
D: 申し訳ございませんが、提供された文章には一番安いドコモのプランについての明確な情報は含まれておりません。ただし、おてがる料金シミュレーションで自分に合ったプランを簡単に見つけることができると紹介されています。また、ドコモの料金プランを見直すことで、より適切な料金プランを選ぶことができ、月々の支払いを節約することができるようです。詳しい情報については、提供された文章をご確認ください。
:::
:::note info
追加学習していないGPT3.5の回答
ドコモで一番安いプランは、「シンプルプラン」です。このプランは、データ通信量が1GBまで、音声通話が30秒ごと20円となります。ただし、月額基本料金は1,480円（税抜）かかります。詳しくはドコモの公式サイトを確認してください。
:::
:::note alert
考察
この質問も意地悪問題だ。「一番安い」というのはかなり雑な質問で、現状の料金体系から言ってどのプランが一番安いかはユーザーの使い方に依存する。そのため、AからCは要領を得ない回答をしている。Dについては白旗をあげているように見えるが、実は「販売員」としてはこの回答が一番合っているかもしれない。
全員が不正解なのでここでも追加学習していないGPT3.5を使ってみたところ、シンプルプランをおすすめされた。実在するプランであり、一見正解に見えるが細部の月額料金がここでも怪しい。
::: 
# 結論
A～Dまでのモデルに 客に正確な情報を案内する「販売員」の役をやってもらったが、やはりまだ完ぺきとはいいがたい。ただしGPT3.5をベースに再教育したDのモデルはかなり「いい線」をいっている。Ahamoやほかの実在するプランを教えてもらいさえすればより正確なドキュメント（例えばDocomoの公式サイトなど）を検索し、正確な数字を取得することができる。
また、モデルによって目に見えて差があるため、ベースモデルをより優秀なGPT4にしてEmbeddingしたらさらに販売員っぽくなりそうな予感がする。
プロンプトの設定をいじれば、「わからないときはわからないと言わせる」ことも可能なことがわかっているし、温度パラメータをいじれば同じ質問には必ず同じ回答が返ってくるようにもできる。用途にあわせてこのあたりの微調整は可能である。

また、学習スピードについても書いておくべきだろう。例えば新規採用の社員(人間)が社内ドキュメントを読んで書いてある情報を覚えるのにどのくらいの時間がかかるだろう？Dのコードははじめから実行しても5分とかからない。こんなスピードで文章を読んで理解できる新入社員はなかなかいないだろうし（少なくとも私には無理だ）、学習に使う資料が多くなれば多くなるほど人間の認知能力を凌駕していくだろう。

今回EmbeddingにはMeta社のFaissを使ったが、これもいろいろやり方があるようで、Langchainなどほかのライブラリを使えばまた違う結果になると思われる。
今回の結論は「雑に再教育した場合、不正確な情報が含まれるためにお客さんに対してそのまま回答することはできないが、そういうものだ、と知っている人間（例えばカスタマーサービス員など）が自然言語で社内データを検索してお客さんに回答したらかなり強力なツールになりうる」だと思われる。

:::note warn
この記事にコードは含まれていません。
Embeddingのコードは以下で紹介しています。
https://qiita.com/jin07nov/items/7fdc7a9e19df48033811
Finetuningのコード以下で紹介していです。
https://qiita.com/jin07nov/items/110a2cf9d1cc1031e9b5
:::