ChatGPTをWebサービスに組み込むことを考える
- #LLM
- #Generative AI
- #Product Development
- #Tips
- 2023/09/13
ChatGPTをWebサービスに組み込むことを考える
はじめに
こんにちは。
最近、ChatGPTをWebサービスに組み込むということを考える機会があり、ある程度自分の中で考えが固まって来たのでここでまとめたいと思います。
ChatGPTはOpenAIによって開発され、2023年に爆発的に話題になったサービスで人間のような会話がテキスト形式で行うことができるサービスです。
つい1年前は、僕自身もOpenAIという会社がAIの会社であることくらいしか把握していなかったのですが、今年に入って急激に知名度が上がり開発の仕事をしている人は知らない人は少ないと思えるくらい普及したと感じています。
まさしく爆発的な普及と言えると思います。
また、書店に行くとChatGPTの活用本が多く出版されており、まだまだ多くの活用方法が模索されている段階だと受け止めています。
つい最近では、ChatGPTのGPT-3.5というエンジンに対してFine-Tuningができるようになったというリリースもありました。
この記事によると2023年の秋頃にGPT-4に対してもFine-Tuningが可能になると書かれており、個人的には期待しています。
※情報を漁っていますが、GPT-3.5でFine-Tuningに成功した例はまだ見ていないのですが。。
今回は、WebサービスにおいてChatGPTを組み込む場合どのような可能性があるのかを考えていきます。(実際にやってみたはありません。)
ChatGPTのAPIをバックエンドに組み込む方法
これは、とてもシンプルでわかりやすいですね。
ChatGPTではAPIを提供しています。
このAPIをWebサービスのバックエンド側でコールすることでWebサービスでChatGPTのテクノロジーを利用することができると思います。
例えば、Webサービスで一般的な機能である「検索」を考えてみます。(ECサイトの検索をイメージしてみるとわかりやすいと思います。)
ECサイトを例にすると、検索の手段として、キーワードやカテゴリ、価格などによる検索がありますね。
例えば、2000円程度のイヤホンを検索したい場合、イヤホンとキーワードに入力するとかなりの数がヒットすることが予想できます。
なので、自分の予算を考慮して、2000円以下というフィルタリングをかけます。
そうすると、件数は大幅に少なくなり自分の予算にあった商品を探すことができます。
これでも件数が多い場合は、さらに有線なのか無線なのかなどのカテゴリなどで絞ることでさらに絞り込みをしていくことができます。
これは、多くのWebサービスでもある普通の検索機能だと思います。
では、ChatGPTの機能を使うことでどのようなことができるか考えます。
ChatGPTは人間のように対話ができることが強みでもあるため、文章での検索に転用することができると思います。
例えば、Webサービスにチャット形式のフォームを置いて、
Chat「あなたが探しているものは何ですか?」
User「無線のイヤホンを探してます」
Chat「予算はどれくらいですか?」
User「2000円くらいで探しています。」
Chat「色や音質、バッテリー駆動時間などお好みの条件があれば教えてください。」
User「ブラックでできるだけバッテリーが長持ちするものが良いです。」
Chat「あなたの条件にあった商品です!」
のようなことができるようになると思います。
この際に、ChatGPTの対話をプロンプトエンジニアリングを使ってある程度制御する必要はあると思いますが、このくらいであればそれほど大変ではないでしょう。
ChatGPTには、アウトプットの形式として、Webサービスの検索にあったように出力してもらえば良いですね。
このように、ChatGPTのAPIをバックエンドに直接組み込む+プロンプトエンジニアリングを使う方法でChatGPTをWebサービスで利用することができると思います。
Fine-Tuningを行う
これは冒頭でも紹介したものです。
※冒頭でも述べたとおり、僕自身まだFine-Tuningで成功した例を見ていないので、あくまで理論的にはできるというくらいに捉えてください。
Fine-Tuningは自分たちのデータをChatGPTのモデルに再学習させることでパラメータを調整することです。
先述した、APIを使って行う方法はあくまでChatGPTの機能を上手く使うことにとどまります。
一方、Fine-Tuningでは、自分たちのデータで再学習させるため、理論的にはモデル自体が自分たちに最適化されます。
その結果、上手く行けばAPIを使う方法より精度が良いものができる可能性があるということですね。
ただし、Fine-Tuningにどれくらいのデータが必要になるのか、学習にどれくらいのコストがかかるのかなどAPIを使う方法よりハードルはかなり高いです。
個人的な見解では、現時点はFine-Tuningをプロダクトに組み込むのは難しいと感じています。
学習が上手くいかない、大きなコストがかかる(ランニングコスト含め)、評価が難しいなどの課題は多いと思っています。
まとめ
今回はChatGPTをWebサービスに組み込む方法について考えてみました。
大きな視点でみると、APIを使うかFine-Tuningを使うかに分かれると思っています。
APIを使う場合、
- インプットに対してアウトプットを最適化してもらう形で使う
- ChatGPT自体に結果を考えてもらう
- ChatGPTに要約してもらう など一口にAPIと言っても様々な使い方があると思います。
この部分はある意味で発想が大事になってくる部分だと感じています。
また、個人的に懸念しているのは、ChatGPTのAPIを使う場合、自分たちが持っているデータを有効に使い切れないという点です。
Webサービスの場合、ユーザーの行動履歴やアイテムの情報などサービス特有のデータはとても価値のあるデータです。
そのデータを使うことでそのWebサービスにしかない強みが生まれてくると思っています。
一方で、ChatGPTのAPIはあくまでもChatGPTの機能を使わせて頂くということにとどまります。
なので、自分たちのデータが増えることが直接ChatGPTを使ったパフォーマンスに反映されにくいという点があると考えています。
そういった観点で見ると、自分たちのデータを活かしつつ、ChatGPTの良い部分も取り入れていくという視点がこれからは大事になっていくんだろうと感じました。
ChatGPTは比較的安価で個人でも手の届く範囲で利用ができます。(現時点でGUIからGPT-3.5を触る分には無料で触れます。)
昨今、生成系AIに関するニュースが多く飛び交っている様子からもこのニーズはかなり高いと考えているため情報のキャッチアップは大切ですね。