お仕事で、ここ1年くらいOpenAIの生成AI(GPT3.5、GPT4)を触ってきました。
とりあえず言うことをきかせるのが目的で、モデルは試してはみるけどモデル自体をいじったりはしていません。
使用者としての雑感です。
ChatGPTって言ったほうが通りが良い
タイトル詐欺です。
ほんとはモデル的にはGPT3.5、GPT4なのですがみんなチャットGPT、チャットGPT、チャットGPT大好きなので、口語的には「『あの』ChatGPTを使った~」と言ってしまったほうが話が通じる率が高いです。
ブラウザ版のやつのほうが、みんな知ってて、触りやすいですしね。
ブランドガイドライン的には
× Use model names incorrectly: Chat GPT, ChatGPT4, GPTChat
らしいですけど……。
(なお、ソースコードの作成にChatGPTも使っているので間違いではない。)
Qiitaのタグ的にも「ChatGPT」がかなり多く、モデル名だと、分散しているとはいえ控えめです。
書籍についても「ChatGPT」をタイトルに関したものが数多くあります。
通りがいいんだわあ……。
チラシとかになっちゃいそうな場合は念のためお伝えしていますが、口語ではスルーすることにしました(心境の変化)。
ちなみにLLMのモデル名としても、「ChatGPT」があるらしいです。
パッと触ってもらった時のてざわりが良い
AIに何か聞いてそれをぱっと答えるようなとき、しかもあきらかに定型文じゃない場合、人間っていうのはとってもうれしいようです。
例えば、「娘の名前はサクラです。すくすくと育っていますよ」というと「良い名前ですね! サクラサク、というように吉報を表したりしますね。願いが込められています」とまるで人間が答えているかのような体験は唯一無二らしいです。
私も当初はとても興奮しました。
このすんばらしいAIは、もしかして、人から、感情労働を奪ってくれるのではないか?
今は、ちょっと疑いの目を持っています。
例えばサクラの花弁のそれぞれの意味について聞いてみました。
GPT-3.5
精神的な美徳: 日本では、サクラの花びらの数が5つであることが美しいとされ、それぞれが仁、義、礼、智、信などの美徳を表すとされることがあります。
堂々とうそをついてくる。
サクラの花弁に意味なんてありません。今適当にでっちあげたやつです。
これが幻覚(ハルシネーション)です。
ハルシネーションはスルーしていいやつと深刻な奴があって、たとえばお問い合わせチャットボットを作って、「あなたの場合は、絶対にこの割引制度が使えます!(確約)」みたいなことされるとかなりかなりこまります。
GPT-4
GPT4はもう少し賢いです。騙されてくれません。
まあそんなものはないので一見して良さそうなのですが、そもそもサクラの花弁は5枚とは限りません。
(一般的に5つであらわされることがあって、そう話を振られたら、話を合わせてもよいレベルではあります)。
こういった小さな忖度が積み重なり、完全に信用しきれないな、と思います。
一見してヒトに見えて、かなりなんでもできそうに見えるため、期待感が大きく、実用が難しそうだとなるとがっかりされがちです。
実際、GPTをうたいながら、実は根幹になるのはRAG(検索拡張生成)と、もとになっているドキュメントであって、GPTは言い回しを変えているだけ、というようなこともよくあるようです。
一番はパパっとソースコード書くのに使っているかな……。
APIを使うにあたって
GPT-3.5やGPT-4を使うにあたり、OpenAI(あるいは、Azure)のAPIを叩いています。
APIを使えば使うほどOpenAIに頼ることになるな、という実感があります。
モデルが勝手に更新され、ハルシネーションは少なくなり、セキュリティは向上し、言ったことの責任も「まあOpenAIがゆってることですから……」という感じに逃げ道があり、良くはありますが、OpenAIにちびちびとお金を持っていかれることになります。
(価格設定は破格でもあり、電気代を考えると赤字なんじゃないかという話もありますが……)。
OpenAIと一蓮托生でありサ終がおっかない。
まあ競合も次々と生まれて急なサ終ってことはないと思いますが、しばしば重くなったりしますし、過剰なコンテンツフィルターによって可能性を狭めていくのはつらいものがあります。
一番いいのはローカル生成ですがそこまではやれていません。
新しいサービスが次々と登場するため、「これを使ったらすぐできるんじゃない?」と言われがち
「5分で社内の情報を参照するChatbotが作れます!」みたいなニュースのURLとともに、「これやってみたい!」とキラキラした目で言われます。大体の場合、0→30~50は即できたりするのですが、お客様向けにシリアスに調整していこうとすると50から先がなかなか進まないことも多いです。
(という実感で、上手な人が使えばもっともっと作りこめたりするのかもしれません。)
いまのところ、自分でAPIを呼ぶのが一番中身がわかりやすくて、地道に作りこんでいくことになりがちです。
わかりやすいインターフェースにするところでお金を取っている面もあるので、コストがかさみますしね。
しかし、世間的には「うちのサービスを使って簡単にやりましょう!」という感じでAPIを触るところからは引きはがされていくような宣伝が多いです。
私は、いつ何がどう変えられるかわからないサービスのガワを被っているよりはプリミティブに動かしたほうが好みです。好みなんですけどね……!
そういうサービス群はやっぱり従量課金であり、なかなか、脱OpenAIはさせてはくれません。
気が付いたら新しいモデルがリリースされてたりする
「いやーそれうち来月からなんですよねハハハ(Azureにはまだ来てないし)」とごまかしがちでもありますが「これ新しいの出てたんだけど使えない?」という情報はとても大切です。
気が付いたら新しいモデルがリリースされてるからです。
EmbeddingのV3が出てるのをへーって思って眺めてたらすぐ使えるようになってました。
情報と、実装の速度が並の開発とはまるで違います。
LangChainはお試し用で本運用の時は自力で組むことになる
上の話に補足してですが……。
LLMを取り扱うための、LangChainという便利なパッケージがあり、テストの際、大変お世話になったのですが、これは「簡単にいろいろなLLMを試させてくれる便利パッケージ」であり、安定した出力を求めていくと結局は自力で実装することになりました。
Webセミナーなんかで聞いた感じみんなこんな道をたどるようではあります。
ハードルは低いが高い
ってわけで、個人的には次の目標はOpenAIに依存しないローカルLLMなんですが……。
中身を知らなくても使えるが、中身を知っておいたほうが当然良いだろう、というわけで紹介される論文を必死に読んでみたりもするわけですけれども、なかなか難しいものがあります。
一方で使うハードルは低めなので「ChatGPTとは!使いこなしとはとは!」とたくさんしゃべれるトピックでもあります。