登壇者の自己紹介

岡田大輔氏:機能開発を「ChatGPT」を使ってやってみたので、そこからわかったことを共有させていただければなと思います。

最初に自己紹介です。岡田大輔といいます。リンクアンドモチベーションで働いていて、今4年目です。アプリのエンジニアをしています。ふだんはRailsとVueでWebアプリを作っているのですが、今回は、機能開発のところで(ChatGPTを)いろいろ触ってみました。

ChatGPTを使った機能開発に伴い、OpenAIからAzure OpenAI Serviceへ移行

作っているプロダクトは、「ストレッチクラウド」というものです。これは、人材の育成を支援するBtoB SaaSのプロダクトです。

弊社は、ChatGPTを使っていろいろな機能をバンバン開発しようという波を作っていて、(スライドを示して)このような感じでベータ版としてお客さまに提供し始めています。

ストレッチクラウドで機能を開発していく中で、これまで開発してきたものはOpenAIのAPIを叩いていたのですが、「これからはどんどんGPTを使って開発をしていきそうだな」とか「大手のお客さまもこれからはどんどん使っていくかもしれないな」など、セキュリティ的な意味や「プライベートなネットワークにしたいね」といった文脈からも、Azureを選択肢として持てるようにしておきたいという意見が出てきたので、じゃあ、やってみようと思いました。

あと「新しい開発をするならチャレンジしたいよね」という思いもあって、今回はやってみました。

今日は、Azure移行の時にやったことと、GPTを使ったアプリケーションの機能開発をする時にわかったことをお話ししたいなと思っています。

現状のアーキテクチャと将来のアーキテクチャ

もともとのOpenAI APIを叩くと言っていたほうのアーキテクチャは、(スライドを示して)こんな感じで作っています。

お客さまからのリクエストをWebSocketでつないで、「API Gateway」を経由して「Lambda」で認証したり、AIの機能の1つ目や2つ目を使ったり、個々のLambda上でOpenAI APIとやり取りをして、その結果を返すといった構成でやっていました。

今回は、この一番後ろのところだけをAzureに移行するという感じでやっていきました。前段は変わりなく、後半を変えていきました。

将来的には、先ほど言っていたネットワークをプライベートにして、セキュリティをより高められるアーキテクチャにしようかなと考えているところです。(スライドを示して)これはイメージ図で、「こんな感じでしていくかもしれないよ」という感じです。

OpenAIとAzure OpenAI Serviceの違い

移行をして、実際に動かしてみました。(スライドを示して)OpenAIと書いているほうがOpenAI APIの動きで、右側が「Azure OpenAI Service」に対してリクエストをしているものです。プロンプトは簡単に「自己紹介をしてください」というだけのものです。

少し中身が変わるだけかなと勝手に思っていたのですが、最初のリクエストまではOpenAIのほうが速くて、Azureは、初期のレスポンスがちょっと遅いけど、その後バーッと返ってくる感じです。

動作自体も少し違っていて、これはやってみてわかったので、よかったなと思ったことです。UXもちょっと変わっちゃうかもしれないので、レスポンスやプロンプトの中身だけじゃなく、こういう観点でもチューニングをしていく必要がありそうだなというのが、わかってきました。

実装する中で気づいたこと

実装自体は「LangChain」を使ってやっていて、「LangChainはすごいよね」というだけな んですが。importするクラスをちょっと変えて、環境変数を与えて、deployment_nameやmodel_nameを与えるだけでほとんど動くようになったので、移行自体は簡単かなと思います。

先ほど言ったような、ちょっとした違いが節々にあると思うので、そこを注意しながらやっていきたいなと思っています。

みなさんもハマったことがあるかもしれませんが、LangChainを使ってやっていて、急にある日突然動かなくなっちゃう、昨日まで動いていたものが動かなくなっちゃうという状況に出くわしました。

そのissueが立っているかなと思って見にいったら立っていて、しかもそれが2日後にはクローズされている。当然といえば当然ですが、変化が激しいなと感じました。

エンジニア以外も巻き込んで、スピードやクオリティアップに取り組めそう

Webアプリの開発でデザインを決めて、プロンプトを考えて、といった順番でいろいろ開発をしていたのですが、そこの行き来がめちゃくちゃ多くなっちゃったりすることもありました。

これからは、デザイナーの人がプロンプトに染み出していったり、プロンプトを設計したり実装したりしていたエンジニアがUX側に染み出していったり、そういう相互的な動きが、どんどん必要になってきそうだなと思っています。

TemperatureやTop_p以外にも、プロンプト自体も変数になってきたりするので、ここの開発でもエンジニアリングしていくことがすごく大事だなと思っています。

今回は、プレイグラウンドとかも使って開発していて、いろいろな人を巻き込んでエンジニアリングをすることができたのがよかったなと思っているところです。

これまでの開発プロセスだと、「エンジニアが手を動かして作るんだ」みたいなところを、いろいろな人に助けを仰ぎながらスピードやクオリティアップを図れるのではないかというのが、今回の機能開発での気づきです。

まとめ

ざっとまとめると、前半パートのAzure移行では、LangChainはすごいなと(笑)、アホっぽい感想ですが、触っていて思いました。

後半でいうと、ChatGPTは、既存業務のプロセスも変えてくれるパワーを持っているなというのをすごく実感しました。これまでは「試すところは、エンジニアしかできなかったよね?」といったことも、いろいろな人ができるようになるし、価値向上のためのPDCAを回す人がどんどん増えていくのではないかなと思っています。

個人的には、これまではあまり機能開発でChatGPTに触ることがなかったのですが、この変化が大きい中で開発できてすごく楽しかったです。

最後に、弊社は、採用やテックブログをやっているので、ご興味がある方がいらっしゃいましたら、ぜひ読んでいただけると幸いです。

以上で発表を終わります。ありがとうございました。

(会場拍手)