ファインディが、ChatGPTを活用する際に気をつけたこと

松本勇気氏(以下、松本):佐藤さんが気をつけたことと、ベストプラクティスをお願いします。

佐藤将高氏(以下、佐藤):僕の観点から言うと、ChatGPTのAPIを使う時に、OpenAIなのかOpen APIなのか「今どっちを言ったっけ?」とわからなくなるので、そこがすごく気をつけたほうがいいことの1個目です。

松本:だいぶしょうもない(笑)。

(一同笑)

佐藤:それは冗談で、僕らがリリースした当初にものすごく気をつけたことを言うと、海外の深夜帯ですかね。(深夜帯)になると、実はOpenAI社のところで使用量がものすごく上がったりしていて、「夜中にサーバー障害が起きているから使えないものがあるんですけど」みたいなことがありました。最近はもしかしたら解消しかけているのかもしれませんが、直近でOpenAI社のAPIを使うと発生する課題がありました。

そこをどうしても回避したいのであれば、これは宣伝でもなく案件でもないのですが、「Azureを使いましょう」みたいなところがあります。ここが気をつけるべきところです。

あと、プロンプトエンジニアリングをメチャクチャがんばった結果、わかったことは、諦めないで、気合いと根性でプロンプトエンジニアリングをメンバーががんばり続けることです。リリースの段階になって、「これが出てくるんだ!」みたいな、その入力を期待していなかったところでインジェクションが起こって、何でもChatGPTの機能で聞けちゃうぞみたいな状態になっちゃう。

どうやってそのプロンプトインジェクションを回避するかというところで、当時はものすごく対策していました。最近はベストプラクティスがだんだん出始めてきているので、そこまで気にしなくてもいいのかなと(思います)。気にしなくてもいいというか、「これを守っていればいいよね」というやり方が出ているので、そのあたりを調べると回避しやすくなってくるかなと思います。

なので、ベストプラクティスとしては、本当に気合いと根性でプロンプトに向き合い続けることが、ものすごく大事な施策かな。施策というかChatGPTとの向き合い方で言うと、そこが大事かなと思ったりします。

toCでリリースしたプロダクトのコスト面・パフォーマンスはどうだったか

松本:ちなみに実際にtoCでサービスを出されているじゃないですか。

佐藤:はい。

松本:すごく気になったのが、実際にtoCで出すとリクエスト数もそれなりに来るじゃないですか。例えばコスト面を考えた時に、どれくらいのリクエストを受けていいものなのか。同時リクエスト数など、そのあたりの学びというか、ちょっと「財布やばいな」みたいな焦りなどは出なかったですか?

佐藤:そうですね。結論を言うと、GPT-3.5はリクエストがメチャクチャ安くて、「やべーな。10万円とか100万円くらいいくかな」と思っていたのですが、確か1万円いかなかったくらいです。何千円ぐらいで全部を捌ききったので、人件費のほうがいくなとか(笑)。そっち側のほうが強かったですかね。

松本:デイリーで数千円ぐらい?

佐藤:いや、トータルの施策でそんなもんなので、そこまでリクエストというかお金を使わずに実現できるのが便利でした。

松本:コストを削るためにトークン数を削るなど、工夫はしていたんですか?

佐藤:いや、まったくやっていなくて。けっこう大きめのやつを投げたから、50万円とか100万円とかいく可能性があるかもと、ちょっとドキドキしながら結果を待とうかと思ったら、「あれ? ぜんぜんいかないじゃん」みたいな。なので、GPT-3.5の場合はものすごく安かったですね。

松本:パフォーマンスなどは大丈夫でしたか? 同時リクエスト数などで悩んだりとか。

佐藤:そこも大丈夫でしたね。結局、先ほどお話しした、海外のサーバーと夜の時間帯のところが一番大きくて、それ以外では一定きちんと返ってきたかなというところです。ほかの工夫としては、どれくらいいっぱい投げられるかがわからなかったので、1日あたり3回までその機能を使えますよと機能を制限した上で、大丈夫そうだなと思ったら解放するかというように変えていましたね。

松本:なるほど。じゃあそれほど、そこでは問題がないということですね。

安定性の面では、各クラウドベンダーが用意しているものを活用するのが良い

松本:「Azure OpenAI Service」を使っていると、1モデルあたりのリクエスト数のクォータがけっこう激しく厳しいという話も出ていたので、そのあたりが引っかかったりしなかったということで、リクエスト数が思ったほどヘビーに叩かれるわけでもなかった感じなんですか?

佐藤:そうですね。うちはAzureがまだ入っていなくて、OpenAIのAPIを使っているので、そこの制限はかからず、うまくピークのタイミングを乗り切ったかなというところです。

松本:OpenAIのAPIだと、そもそもクォータとかはなくて、無限に叩ける感じですか?

佐藤:そうです。

松本:なるほど。無限に叩けるそうです。ただ、今聞いたテクニックに関連して、Azure OpenAI Serviceで使う時と、OpenAIで使う時に差分が(あって)、例えばAzureだと、GPT-4のモデルを独立してデプロイするんですけど、デプロイされたモデルでは、たぶん独立したリソースになっていて、おそらくクォータの範囲内であれば安定してリクエストにきちんと対応してくれるという話はありました。

なので、もし安定性などを気にする場合は、各クラウドベンダーが用意しているものを活用するほうが良いのかもなと思います。そして先ほど金杉さんがおっしゃっていましたが、規約数ですね。情報の管理規約などはすごく重要になってくるので、クラウドベンダーがたぶんこれからどんどん出してくると思うんです。

その時にそれぞれのモデルがどんどん出てきたら、おそらく個人情報保護などもある程度、例えばISMSに準拠していろいろ整理されては来るんだろうなと思いますが、そのあたりはけっこう活用されていく感じなんですか?

金杉優樹氏(以下、金杉):そうですね。Azureのほうが対応してくれるんじゃないかなという期待がやはりあります。Azureの担当者に「東京リージョンは作らないんですか?」「お願いしますよ」と言ったのですが、Azureのほうこそ僕らにお願いをしてきたんですよ。「日本でいっぱい使ってくれる会社が増えれば、本社が割り当ててくれるだろうから、それを待ってくれ」という感じだったので、みんないっぱい使っていきましょう。

(一同笑)

松本:呼び寄せましょう。

金杉:はい。という感じです。

ファインディは開発にGitHub Copilotを活用

松本:僕はしゃべり過ぎてしまいがちなので、もう少しお二人に聞きたかったのですが。今はサービスに組み込む側の話をしていましたが、「ChatGPT」と書いてあるので、開発にChatGPT活用はけっこうされているんじゃないかなと思います。お二人はそのあたりはどうですか?

佐藤:うちだと、GitHub Copilotが一番大きいかなとは思います。中身的には近い仕組みです。全社でGitHub Copilotを導入して、エンジニアリングに関係する人は全員使える状態にしました。うちとしてはそこで使うところで業務で一番活用しているかなと思います。

一方で普通に聞きたいというところもあります。SlackのAPIを介せば基本的に個人情報を取られる心配がそこまで強くないかな思うので、基本的には社内のボットとか。もしくはそこで質問をして、それに関してこういう構造なんだけど内部の情報を渡しても一定大丈夫だよねと確認してGPT-4を活用しているというのが、うちでの大きな例になってくるかなというところですね。

あとは、うちのテックリードとかもずっと「これがないともうダメ。Copilotちゃん!」みたいな感じのテンションで使っています。そういう意味では、Copilotを名前のとおり副操縦士という状態にするのに対して、会社でどう活用するかという知見をシェアしながら、会社全体で生産性を上げていくところにチャレンジしています。

松本:Copilotを導入する時にライセンスやら何やらが気になりませんでしたか? 学習に使われるんじゃないかとか。

佐藤:メチャクチャ気になりました。

松本:「エイヤ!」ですか?

佐藤:「他の会社でやっているし、よし」みたいなのが半分くらいはあったのと、ひととおり見た上で問題なさそうかなと思ったので、一応使っています。

松本:(GitHub)Copilot for Businessですか?

佐藤:Copilot for Businessですね。

松本:やはりそっちじゃないとダメですよね。

佐藤:チームとして導入していますね。

ミチビクはChatGPTをどう使っているか?

松本:金杉さんはどうですか?

金杉:そうですね。ChatGPTの使い方の例で言うと、うちはシニアな日本のエンジニアとインターン生と、オフショアのエンジニアという実態で3層構想です。シニアエンジニアは何も気にしなくてもプルリクエストをきちんときれいに上げてくれるのですが、インターン生やオフショアだとちょっと凡ミスが多いなと思っています。

コードはまるっとコピペして貼っちゃダメですが、ある程度関数とかで切って「これをリファクタください」とChatGPTに1回お願いをしてから日本語版のレビューに「この観点でリファクタしてください」と言うと、ChatGPTがけっこう整形してくれます。なので、インターン生やオフショア側がプルリクエストがちょっと不安だなとか、レビューが時間がかかっちゃうなというタイミングで、使わせてもらっているというのは1つの例としてあります。

あとはちょっと話がズレちゃいますが、GitHub Copilotはやはり導入しています。コメント駆動での開発はすごく進みましたね。コメントに最初に書いて、「もし何々であれば、何々してください」みたいなことを書くと、本当にもうコードを書いてくれるので、そういうのは便利だなと思いました。

松本:やはりだいたいChatGPTとCopilotはセットで入れますよね。

金杉:入れますね。

松本:あとは社内向けChatGPTボットを作るみたいなことは、活用されている会社はだいたいやっているイメージですね。

金杉:そうですね。

松本:僕自身もコードを書くのですが、VSCodeのGenie AIというプラグインがあって、あれがないと僕は開発ができない。要介護者みたいになってしまいました。

(一同笑)

松本:ずっとChatGPTにお世話をしてもらっています。例えば、PythonでCSVを呼び出すコードをパッと思い出せなくなった瞬間に、「頼む!」とやると、パッと適切なリーダーを使ったコードが出てくるので、それをコピペして貼ります。「人間の最後の仕事は、コピペなのか」みたいな気持ちになりながらけっこう使っています。あ、もうQ&Aタイムなんですね。しゃべり過ぎましたね。

(一同笑)

(次回へつづく)