RareJob Tech Blog

レアジョブテクノロジーズのエンジニア・デザイナーによる技術ブログです

ChatGPTをプロダクトへ組み込んでいくステップ

どうもCTOの羽田です。 この度下記のリリースを実施しました!

prtimes.jp

取材もいただきまして、弊社もChatGPTのビッグウェーブに乗り、GenerativeAIの大海原へと漕ぎ出しました。

xtech.nikkei.com

このプロジェクトですが、最初のアクションからリリースまでなんと一ヶ月かからず爆速で完了しました。 主にメンバーや関係者の頑張りでこのスピード感を出せたんですが、社内でChatGPTを使ったプロジェクトを起案・推進するためにPdM兼CTOとして考えたこと・動いたことを共有できればと思います。

「これからChatGPTを使ったプロジェクトを立ち上げようと持っていた人」「何かしらお題としてプロダクトへの導入を検討している人」向けに書きます。

1 アイデアを固めよう

ChatGPTは言わずもがな注目度は高く、どの企業も活用に躍起になっていると思います。 弊社でも同様でして、特に学習体験を大きく改善するには活用するしか無い、これは大きくマナビをアップデートしてくれるものだと思っています。(マナビ・アップデートは弊社のミッションです。)

一方で「ChatGPTでなにかしよう」という話は、プロダクトアウトになりがちで「とりあえず注目を集めるようなプロモーション機能」や「新しい価値だけど顧客課題を解決していないもの」になってしまうことがあると思います。これも一概に悪いことではなく、導入してみてわかる自分たちのプロダクトやサービスへのフィット感・手触り感を得ることはとても大事だと思っています。

ただ意図や意思、明確に「顧客の課題を解決できるもの」という前提を持たない限り施策の後のことが思いつかない&価値検証以外の成果が得られないので、今回我々においては課題設定は非常に重要だと考えました。

そこで企画・案件を考えるため下記が満たすべき要件だと考えました

  • 弊社だからできることか
  • 弊社でしかできないものであるか
  • ニュースバリューが作れるか
  • 明確に解決されるユーザー課題があるか
  • 効果は多少こじつけでもいいから定量化可能か
  • 次の意思決定はできるか
  • かといって開発コストがそこまで膨らまない、1ヶ月程度の施策

これを元にいくつかの案を出しました。またそれを他の執行役員や興味関心を持ってくれていたメンバーと相談し方針を決めました。 他社のプレスリリースを見て最初は何をすべきか考えていたのですが、結果的には「どのユーザー課題を解決しようか」という課題ベースで考え直しました。 その課題をChatGPTだったらどう解決できるのかというのを考えて弊社ではレッスンルーム(英会話レッスンでのレッスンを実施する機能)への組み込みを決めました。

2 「PRD: プロダクト要求仕様書」を書いてみる

初めて書くPRD(プロダクト要求仕様書)|Miz Kushida|note

案があるとすぐ仕様書を書きたくなってしまう・ワイヤーを書きたくなるところですが、今回はそもそも課題や解決方法自体の解像度が低い(プロンプトやチャット方式への課題が曖昧な部分が多かった)のでPRDですり合わせを進めました。

実際に書いた項目はこちら。

私は自分が「新しい面白そうな技術大好き芸人」だと理解しているので、自分の意思や意図が正しいのかの検証のためにもPRDを書いてみて、違和感や不整合がないかを確認しました。 この時点で書いていて、記載に無理があったり、実際の課題のファクトとなるようなユーザーの意見やデータがないのであれば自分の都合のいい妄想でしかないのでこれは書いてよかったです。 また抽象度の高いレベルでのすり合わせをして具体化はメンバーにまかせることもできました。

3 関係各所とすり合わせる

今回はβ版での展開を考え、早い段階から法務、監査担当、CS、経営層、社内の自社プロダクトのヘビーユーザー、エンジニア、デザイナー、機械学習エンジニア(このときはプロンプトの設計をしてもらいました)とのすり合わせをPRDを用いで実施しました。 順番としては

  1. 経営層(抽象度の高いレベルでやること・やらないことのすり合わせ
  2. エンジニア、デザイナー、研究開発エンジニア(工期、実現可能性のすり合わせ
  3. 法務、監査担当、CS(規約やリスクのすり合わせ
  4. 社内の自社プロダクトのヘビーユーザー(簡単なユーザーニーズの調査

という順番。後続のステップと並列して相談していたのですが、最初はPRD一本で説明したのですが私も言語化・文書化が十分でないところもいくつかあり、2から3に移るときは自分で作ったプロトタイプを用いて説明をしました。 説明の順番が下に行くほど具体的であることが求められるので、React + Typescriptでサクッと作った下記のようなチャットサンプルに設計してもらったプロンプトを組み込んで実際に触ってもらったりしながら説明しました。また実際に動くものを見てもらうことで、法務からのリスク指摘や備えておくべきことなどの解像度を上げることができました。

ワイヤーでもFigmaのデザインでも良いんですが、今回ばかりは「ChatGPTを使った機能」を取り扱うことが未経験の人も多く目線をすり合わせるためにプロトタイプを工夫しました。

4 各種設計・デザイン・実装

このステップで難しかったのが「プロンプトの設計を依頼する」というところです。皆さんはやったことありますか?私はなかったです。 自分でそれなりに触ってきたつもりですが、それでも「何を言語化して依頼すべきか」がお手本が少なく、ディスカッションしながら入出力の期待値をすり合わせました。 運良くPrompt Engineering Guideの日本語版もマージされこれが考える参考になりました。

www.promptingguide.ai

ここでは弊社の機械学習エンジニアの山城さんが工夫してくれて、私のふわっとした依頼を実際に試せるプロンプトをjupyter notebookで用意してくれてほしいプロンプトへの近道を作ってくれました。 弊社のプロダクトでは複数のプロンプトを組み合わせており、ケースによっては多段でリクエストを投げるなどここで想像していなかった課題が多く見つかりました。

5 リリースに向けて

検証環境で触れるようになったら「# 3 関係各所とすり合わせる」をもう一周します。 これは私が心配性なだけでもあるんですが、抽象度の高いレベルですり合わせていたものが具体に落ちたときにも齟齬内容に改めて目線を合わせました。

一方でこの時点でOpenAI APIのレスポンス速度の課題があり、プロンプトの見直しをしました。 内容を見直し、数秒のレスポンス速度の改善をしてもらいました。それでも時間が結構かかってしまうので stream api なども検討しましたがまだリリースして見えてきそうな改善課題もありそうだったので今回は一旦プロンプトの改善のみでリリースをしました。(ここはまだまだ速度課題があり、ぜひ知見のある人教えてほしい・・・)

ChatGPTのストリーミング(SSE)APIを試してみた(Go実装) | DevelopersIO

あとは忘れてはいけないのが、OpenAI APIの上限引き上げ設定です。 Hard Limitの上限はデフォルトで$120になっており、これは申請しないと上がらないです。申請は1日くらいで通ります。 コスト感はTokenizerを使って調べましょう。もしくはAPIのレスポンスにtoken数が含まれるので参考にしてください。

https://platform.openai.com/tokenizer

最後に

触っていく中でChatGPTが持つ豊富な仕組みや、それをより便利にするサービスやライブラリ群も知り改めて注目度・ポテンシャルの高さに圧倒されました。 また本プロジェクトと並行してうちのCIOが頑張ってくれて、安全快適に社内向けでChatGPTを利用するためのアプリケーションも爆速開発リリース・ガイドラインも展開してくれました。

まだまだ弊社のプロダクトや機能、社内での運用改善で使えるところが多すぎるので、引き続きマナビ・アップデートしていこうと思います! 今期も全方位採用進めております〜気になった方はぜひ話をさせてください!

rarejob-tech.co.jp