で、結局キャラクターBOTを作るには? ~反省編~ #007
前回、ついに”AI大谷BOT"ができました!
※サムネイルは記事と関係ありません(AI寿司sushi-sdxlです)
→これまでをまとめたマガジンはこちら
こちらから試すこともできます!(一定期間開放しています。)
ということで、
結果発表
として今回はこのLINEBOTの評価・かかった費用・作った感想などを述べたいと思います。
①作成・運用費用
最初に費用を振り返ります。今回のBOTはLINE(Messaging API)+Cloud Functions(GCP)+Firebase+OpenAI API(GPT3.5)という形で作りました。
それぞれの費用を見てきたいと思います。
1.LINE(Messaging API)
LINEはLINE for Businessとして誰でも公式アカウントが作成でき、Messaging APIを使って自動での応答が可能になります。
プランは3つ存在し、無料のプランもあるのですが送信できるのは
200通まで
とあるのですが、これはこちらから自発的に送った場合のみカウントされるようで、自動応答の場合は(応答メッセージ)無料で送信できます。ですので今回このコストは0円です。
ただ恐らくこのようなサービスを作る場合は、広告・宣伝をプッシュして収益に繋げる方が多いと思いますので、こちらからのメッセージは有料になりえることをご了承ください
2.Cloud Functions・Firebase
以前の記事でも話しましたがCloud Functionsは200万回呼び出しまで無料です。またその他の条件も超える見込みはないので、無料枠の範囲内で利用できると思います。
Firebaseに関しても以前の通り、1GBまでの無料枠がありこちらの範囲内で利用できるかと思います。
ということで、こちら2つのコストは0円です。
ただ今回はテキストメッセージの送信だけであり、履歴をデータとして保存しない(データは一定期間後に削除)としているので、無料枠に収まりそうなのですが、画像データ送信・履歴の保持などを行うと、有料となることもありますので注意して下さい。
3.OpenAI API利用料金
GPTのAPIはがっつり有料です。ファインチューニングモデルの料金は以下です。
ファインチューニングの回で話した通り、Trainingの費用は約100QA(約7000文字)で27072トークン分にかかり、表の右下の1000トークン(1kトークン)で0.008ドルかかることから33円(切り上げ)がかかります。
そしてこれは固定費であり、GPTは会話ごとに費用が発生します。これは人によって異なるので、おおよその概算で計算します。
・1ユーザーが1か月に10日(10回)利用
・1回当たりの会話数は10往復
・1会話あたりの文字数は往・復それぞれ50文字
としますと、1か月でユーザ・BOTからそれぞれ
10×10×50文字=5000文字
送られるものとします。
そしてそれぞれ上の表の通りに料金を計算すると1文字1トークンとして
5000×0.012÷1000=0.06ドル
5000×0.016÷1000=0.08ドル
計0.14ドル、1ドル=150円とすると1ユーザに21円かかる計算です。
仮に登録ユーザが100人いても一月2100円になります。
ただもちろん概算で、ファインチューニングデータや利用回数は作成したコンテンツによって変わりますし、会話あたり50文字としましたが、会話がかさむと過去の会話もインプットとして消費されますので、利用形態によって異なってくるかと思います。
とりあえず今回の想定でまとめると合計の費用は
固定費:33円
ランニングコスト:21円(1ユーザあたり)
となりました。
目的にもよりますが、まぁ「安い」と言っていいのかと思います。
(AIコンサルに頼んだら30万は取られそうですね)
②LINEBOTの評価
作成したAI大谷BOTの評価をしたいと思います。
ただ評価と言っても、私の感想で機械的な評価を下すわけではありません。序章でお話しした機能要件・非機能要件の面から述べたいと思います。
1.レスポンスの早さ
最初に返答はできるだけ早く(できれば3秒程度)と言っていましたが、これは概ねクリアしているかと思います。
ただ、返答のスピードはバラつきがあり遅い時は10秒近くかかることもあります。これはひとえにGPTのレスポンスによるものでCloud Functionsなどのインフラには全く関係がなく、GPTからの回答が遅れることがあるのが原因です。
恐らくファインチューニングなど様々な要因により遅れているのかと思いますが、それでも基本的には数秒で返信が来ますので、今回のファンサービスBOTとしての要件は満たしているとし、これ以上追求しないことにします。
2.ファインチューニング結果
序章で
・その選手の基本的な情報の回答ができること(身長、体重、出身地など)
・学生時代などのエピソードを何種類か回答できること
と言っておりましたが、記事トップの画像の通り名前や出身地など基本的な情報には回答できているかと思います。
ただエピソードを答えてという問いかけには、あまりうまく反応してくれないことがわかりました。
※このエピソードは誤った情報です
この不具合はうまい解消方法が見つからないので、今後調査したいと思います。(元々GPTがもっている大谷選手の情報と混ざっているのかもしれません)
また、傾向としてわかったのは会話を重ねるとファインチューニングの効果がなくなってくる。会話の最初で質問した場合は正確に答えられていた質問が、後の方に問いかけると全く別の回答が返ってくることがわかりました。
※学習させた座右の銘は「憧れるのやめましょう」
これに関して対応としては、現在会話の履歴を10(往復)まで保持しているので(プログラム内で設定)それを減らすことでファインチューニングの効果を高めることができるようです。ただその分、会話の流れなどは汲みにくくはなるのでファインチューニング外の回答が不正確になるかと思います。
いずれにしてもファインチューニングの問題ですので、この辺りはよい方法を勉強するか、アップデートを期待するしかないようです。
3.その他
あと使ってみて感じたのは大谷らしさがあんまりないのかなと思いました。
やっぱり回答の語尾を特徴的付けたり、キャラクターを子供やおじいちゃんなどもうちょっとメリハリの付いたものがわかりやすかったかなと思います。まぁこれは余談です。。
③作成した感想
作成した際の技術的な面からの感想です。
まず1番に思ったのはLINEBOTでチャットBOT作るのは
あまり向いていない
と感じました…
「お前が勝手に作り始めたんだろ!」
と思われそうですが、GPT+LINEBOTというのはよくある話だと思い簡単であると勘違いしていました。
向いていないと思った理由は#003でも話しましたがLINEBOT(API)はメッセージを送るたび毎回”初めまして”状態になり、前の会話はどこかに保存しておいたのを引っ張りださなくてはなりません。
これは面倒ですし、せっかくLangChainなどにメモリー機能があっても使うことができません。データの保存・ロードも面倒ですし時間がかかります。なんだかもったいない…という気分になるのが正直なところです。
ただ思ったよりFirestoreが早かったですし、要件によっては履歴を保存しておきたい場合もあると思うので、こうするメリットもあるとして飲み込むしかなさそうです。
その他は特に難なく進んだ気がします。
④その他
やり残したこと、今の課題を挙げてみます。
・返信制限
今の状態ですと、誰が何回メッセージを送ってもそれに返信することができてしまうので、返信回数の上限を決める運用になると思います。(送れば送るほどこちらがマイナスになってしまう)
これを制限するには…やっぱりユーザの利用情報をFirestoreに保存するしかないようです。(結局何かしらのデータの保存先はいるようです)
ただシンプルにユーザIDに"残りの返信可能数"として値を更新していけば難なく対応ができそうです。
・二重送信
メッセージを送った後、返信が来る前にもう一度メッセージを送ると返答はおかしくなると思います。(試してみてないですが…)
ただこれはよほど悪意・いたずら精神がない限り起きない現象なので別にそのままでもいいかとも思います。(もし対応するならFirestoreにメッセージ受信・送信前にデータ数を比較してずれがないかチェックする必要があります)
他にもあった気がしますが、思い出しておきます!
おわりに
序章含めて8回、長々と書かせて頂きました。
当初話した通り”AIキャラクターBOT”を作るという目的ベースとしてぶれないようにLLM周辺の内容についてまとめたつもりで、目にした方の理解の役に立てば幸いです。
やっぱりX(Twitter)などで色んなAI・LLM関連の情報があふれていますが、実際に使って見ると……… なんてことが多い現状でです。
どんな便利そうな機能でも使い方よりきりなので、そういったものをこれからも共有できればと思います。
最後に言っておきたいことは「LINE以外のチャットツールが欲しい」につきませすね。何度もとなりますが、毎回初めましてではなくセッションなんかがあって一定時間やり取りを保持できるようになっている、それでいてオープンソースのLLMも使える…なんてのがあってもいいと思います。
今後「法律に強い」「医療に強い」などのファインチューニングモデルも出てきそうなので、そういったのが簡単に利用できるチャットツールがあれば…と思うので探してみたいと思います。(いいのがあれば教えてください。)
新しくキャラクターBOTに使えそうな技術がリリースされ次第、更新するつもりなので今後もよろしくお願いします!
この記事が気に入ったらサポートをしてみませんか?