【社内イベント】簡単AI体験会~使って分かる、GPT体験ワークショップ を実施しました
リクルートのプロダクトデザイン室(以下、プロデザ室)には社内のメンバー間で、さまざまなナレッジを共有する仕組みがあります。その一つが四半期に1〜2回のペースで開催される「UXshare!」。毎回、プロデザ室から100〜200名程度が参加するオンライン形式のイベントで、明日からの業務にすぐ活かせる“持ち帰りポイント”をつくることを意識しています。
今回レポートするのは、「UXshare! #特別回」として開催された、「簡単AI体験会 〜使ってわかる、GPT体験ワークショップ」。多くのメンバーが関心を持ちながら、なかなか業務で使いこなせていない「生成系AI」について、理解を深めるのが目的です。講義だけでなく、参加者が実際にGPTを体験してみることで、その可能性や使い勝手を実感。「AI活用の第一歩」を踏み出すためのイベントとして開催されました。
実際にGPTを触り、業務への活用イメージを膨らませる
今回の講師は、データ推進室所属シニアサーチエンジニアの大杉直也氏。これまで複数のAI関連イベントに登壇し、社内外から高い評価を集めています。
イベントは3部構成。第1部は座学「プロンプトの書き方講座」。GPTに入力するプロンプト(指示文)について、基礎知識や書き方のコツをインプットします。大杉氏自らが”ChatGPT風”のデモを使い、「プロンプトの書き方によってGPTからの回答がどのように変化するか」を解説するLIVEデモも行われました。
第2部は参加者自身による「プロンプト開発ハンズオン」。デモ環境でGPTのプロンプト開発を実際に体験します。それらをふまえ、第3部では「発展的な事例の概観」について大杉氏から講義をしてもらう流れです。
参加者のなかにはAIやデータについては専門外というメンバーも多いため、座学だけでなく実際にGPTを触ることで有用性を実感し、自身の業務への活用方法を具体的にイメージしてもらうのが狙いです。
大杉「本イベントの目的は『楽しい』『勉強になる』だけでなく、実際にカスタマーやクライアントのためになるLLM(大規模言語モデル)活用施策を試行錯誤できるようになることです。そのため、開発以降との接続性を意識して、主に企画職向けにGPT APIの検証環境の提供とハンズオンを行います」
そもそもGPTとは? 「ChatGPT」と「API」は何が違う?
第1部は「プロンプトの書き方講座」。
本題の「書き方講座」に入る前に、「そもそもGPTとは何か?」「どんなことができるのか?」「ChatGPTとAPIは何が違うのか?」「なぜプロンプトの書き方が重要なのか?」など、まずは基礎知識編として、大筋理解しておきたい前提や用語についての解説がなされました。
大杉「ChatGPTもAPIも、GPTと呼ばれる大規模言語モデル(LLM)にアクセスするためのサービスです。LLMについては最近だとMetaやNEC、NTTデータが作り始めるという話もありますが、圧倒的に有名なのはOpenAIのGPT-3.5もしくは4ですね。”GPT-3.5に匹敵する”と言われるものは色々と出てきていますが、GPT-4を超えるものはなかなかなく、かなり賢いです。ちなみに、今回はChatGPT 経由ではなく、API経由でGPT-3.5、GPT-4に触れたいと思います」
この他、基礎知識編ではOpenAIの公式ドキュメントを用いたAPIについての深掘りや、APIを使うにあたって意識すべきパラメータ ―、押さえておくべき「token」などの用語について解説がなされました。
ちなみに、tokenとは入出力の文章を機械に読み込ませるために分割したもの。token数が多すぎるとレスポンスタイムが悪化したり、APIの利用料が上がったり、回答精度が低下する傾向があります。大杉氏によれば、「英語に比べて複雑な日本語はtoken数が増えがちで、現状は不利な状態になっている」とのことです。
「チャット機能」だけじゃない。生成AIでできること
続いて大杉氏は、今回のハンズオンで使う検証環境と、その活用方法について解説。実際に「ChatGPT風」のデモ画面に文字を入力してGPTにアクセスし、得られた回答例を紹介しながら生成AIの活用方法を解説していきます。
大杉「たとえばGPTへの入力文に”八海山”や”獺祭”といったお酒の名前を入れてみます。すると”アルコール”という回答が出てきました。ちなみに、新潟県にある八海山という山のことではなく、地酒の八海山のことだとGPTがちゃんと認識できているのは、プロンプトに”レストランメニュー関連の単語をアノテーションする”と入力し、GPTに指示を与えているからです」
大杉「では、実際にこれを業務のなかでどう活用するか。たとえば、『ホットペッパーグルメ』などのサービスで、カスタマーの検索キーワードからおすすめのお店やメニューをサジェストしたいという時に、未成年の人に対してアルコールを勧めるのはまずいですよね。かといって、人力で一つひとつ審査して、不適切なサジェストを排除していくのは大変な労力です。そこをGPTに任せ、処理を自動化すれば業務の効率が格段に上がります」
ChatGPTのイメージから、生成AIというと「チャット機能」ばかりが注目されがちです。しかし、プロンプトの書き方を工夫すれば、チャット以外にも活用方法は大きく拡大。たとえば、リクルートが行なっているプロダクト開発にも大いに活かせるといいます。
大杉「GPTは入力文字列を工夫するだけで多彩な挙動を行えるため、従来のAI開発よりも高速なプロトタイピングが可能になります。そうなれば当然、試行錯誤の回数を大幅に増やすことができる。これはプロジェクト初期段階において大きな利点ですし、従来の『データを用意して機械学習させる』という流れも不要になるでしょう」
プロダクト開発で生成AIを活用する際には、おおまかに以下のような流れになると大杉氏。なお、今回のハンズオンで参加者が体験するのは、2.の工程です。
テキスト生成AIを「この業務効率やサービス改善に役立てられそう」というアイデアを持つ
具体的にテキスト生成AIに「どのような入力を行い、どのような出力が返ってくるのか」を検討する
生成AIのコンポーネントを含めたシステムアーキテクチャを検討する
実際に開発する
このように大きな可能性を持つGPTですが、注意すべき点もあります。
大杉「はじめに意識してほしいのは、あくまで”ブラックボックスを相手にする”ということです。アウトプットの性質は、入力と出力の対から判断するしかありませんし、GPT APIへの入力文字列がほんの少し変わるだけで、出力が大きく変わってしまう、極めて不確実性が高いものであることを理解しておく必要があります。
また、今回は”プロンプトの書き方講座”と題していますが、そもそもGPT-4の開発者が日本語をあまり理解していないという話もあり、“正しい”プロンプトというものは存在しません。正しいではなく、“使える”プロンプトがあるだけです。私自身、いろんな人から「このプロンプトの書き方って正しいですか?」と相談されることがあるのですが、その時は「とりあえず動けばいいんじゃないですか?」と回答しています」
とはいえ、プロンプトの書き方にはコツがあり、最近になって新たに「プロンプトエンジニアリング」という分野が誕生したことからも、その重要性が分かります。
プロンプトに「知識」を埋め込むと、アウトプットの質が上がる
ここからは、いよいよプロンプトの書き方のコツについて学ぶ実践編。再び“ChatGPT風”のデモを使い、さまざまなケースを想定しながら「プロンプトの書き方によって、GPTからの回答がどのように変化するか」を解説していきます。
はじめに実践するのは、「system prompt」に“知識”を埋め込むケースについてのデモ。「system prompt」とは、プロンプトを構成する要素の一つで、「このGPTは“何をする”ものなのか」を指定することを指します。
大杉「このように、system promptに知識を埋め込むことで、いろんなことができるようになります。また、ChatGPTが明らかに間違った答えを返してくることが、度々ネタにされたりしますが、これもsystem promptをうまく活用すれば、そうしたおかしなアウトプットの頻度を下げることができます」
大杉氏は、「system promptに知識を埋め込むことで、いろんなことができる」事例として、「薬事法広告表現ルールを指摘してくれるGPT」のデモを実践。
大杉「たとえば、「この健康食品は、睡眠前に摂取すれば脂肪を溶かし、体外に排出する効果が得られます」という広告表現が薬事法的に問題ないかどうか、確認してみましょう。当該の文章を入力し、GPTに送信します。すると、GPTからは以下のような回答が得られました」
<GPTからの回答>
この表現は以下の点で問題があります。
大杉「このように表現不備の指摘が、かなり具体的に挙げられました。マーケティングの知見者にもこの回答を確認してもらいましたが、十分に実用レベルであるとの評価でした」
ここまで高い精度の回答が得られたのは、system promptに、次のような“知識”を埋め込んでいるからです。
<system promptに書き込んだ知識(一部)>
大杉氏いわく「かなり賢い」GPT-4であれば、ここまで詳細なインプットがなくても精度の高い回答が得られることもあります。ただし、一部の回答があやふやだったり、出典が明記されず、結局は人力で調べ直す手間が生じてしまうため、やはりsystem promptにガイドラインを明示するやり方が望ましいようです。
ちなみに、プロンプトへの入力文が長くなると、それに応じて価格も高くなります。とはいえ、人件費と比較すればGPTを活用した方が効率的なケースは多々あると考えられます。
キーワードから「それっぽい」記事タイトルを提案する
続いてのデモは「キーワードから、記事タイトルを提案する方法」について。ここでは、『じゃらん』の記事タイトルをキーワードから自動生成するための、system promptの書き方が紹介されました。
大杉「まずはsystem promptに”日本人の国内旅行向けのニュースメディアの見出し記事を考える。40文字以内を厳守”と入力します。そのうえで、”生成AIワークショップ”というキーワードを入力してGPTへ送信してみましょう。すると、次のようなタイトルを提案されました」
・AI技術を学ぶ「生成AIワークショップ」開催!初心者でも参加可能<全国・2023>
大杉「このように、それっぽいタイトルを生成してくれました。ちなみに、今回は『じゃらん』っぽいタイトルを提案してもらいたいので、過去にどんなキーワードを元にどのようなタイトルを作ったかの“お手本”をuser promptとassistant responseの欄に入力しています」
<user prompt(キーワード)>
<assistant response(上記キーワードから生成された過去のタイトル案)>
このように、system promptだけでなくuser promptなどもうまく使うことで、言語化できない「ニュアンス」を指定し、得たい回答の確度を高めることができます。
大杉「記事に限らず、たとえばイベントのタイトルを考える場合でも、原案はAIに提案してもらい、人間はそれを編集するだけといった使い方ができるのではないでしょうか」
プロンプト開発の「試行錯誤の手順例」
大杉氏はこの他にも、「文章を添削するGPT」など、様々なデモを用いて効果的なプロンプトの書き方を紹介。最後にまとめとして「プロンプト開発の試行錯誤の手順例」と「プロンプトの書き方のコツ」が共有されました。
<プロンプト開発の試行錯誤の手順例>
modelをGPT-3.5にする
system promptとuser promptを書き、挙動を確認する
どうしても直示的に指定したい場合はassistant responseを指定する
挙動に不満がある場合はGPT-4にしてみる
大杉「もしGPT-4でもダメなら、プロンプトが悪いか、そもそも課題が難しすぎる可能性がありますが、だいたいの場合は前者です。また、GPT-4でOKだった場合は3.5でも動くように、もっとプロンプトを平易な書き方にできないか検討してみましょう」
<プロンプトの書き方のコツ>
できる限り、コンテキストを明確にして書く
良い例:候補を「20個」挙げる/step by stepで考える
悪い例:候補を「できる限り」挙げるGPTの理解度を確認しながら進める
例:法令文章をsystem promptに書き込んだ場合、その文章から想定QAや理解度確認テストを作らせ、それを専門家が確認する最初はマニュアルを読むより、まず自分でやってみて感覚をつかむ
大杉「基本的に、GPTへの指示は具体的であることが望ましいです。例えば、”候補を20個挙げて”と書けば20個の回答を得られますが、”候補を“できる限り”挙げて”と書くと10個しか返ってこないケースがあるからです。また、step by stepで考える、つまり思考の仕方を指定すると、うまく動きます。大事なのは、相手がSFに出てくるロボットだと思って、丁寧な会話(?)をすること。ただ、これにはある程度の慣れが必要ですね」
「生成AIで実現したいこと」をやってみる
続いて、第2部。参加者自身による「プロンプト開発ハンズオン」のパートです。参加者全員に配布されたGPTデモ環境を使い、一人ひとりがプロンプトの書き方などを試行錯誤しながら取り組みました。
また、大杉氏が参加者から「生成AIで実現したいこと」のリクエストを受けて、GPTの回答例を見せるLIVEデモも実施。たとえば、参加者の一人からは「レストラン検索機能改善の施策を考えるにあたり、A/BテストのパターンをAIで生成したい」というリクエストが。これに対し、大杉氏はGPT APIへ次のように入力。
<GPTへの入力文>
<system prompt>
すると、GPTからは次のような回答が得られました。
<assistant response>
このように、数多くのアイデアが具体例とともに示されました。
大杉「こんな雑なプロンプトの書き方でも、一応ちゃんと動きました。こうしたテストパターンの生成などには、わりと使えると思います」
これ以外にも、別の参加者からは「人力でのExcel作業の自動化など、一部業務の効率化にGPTを活用することは可能でしょうか?」や、「プロダクトや商品規定ないしは過去イレギュラー案件について、企画側がどう判断して回答したかをプロンプトに入れ、クライアントへ説明しやすい適切な日本語で回答してくれるものがほしい」など、業務改善にまつわる質問やリクエストが寄せられました。
これに対し大杉氏は「これも、やり方次第で可能だと思います」と回答。具体的なプロンプトの書き方を示しながら、GPTの活用方法を指南しました。
より発展的なGPTの活用事例とは?
第3部は「より発展的なGPTの活用事例」を大杉氏が解説。
まずは今後の展望として「GPT以外のAI系APIの組み合わせ」が考えられるといいます。
大杉「たとえば、GoogleのVertex AIも生成系AIのAPIをリリースしています。将来的には”どのモデルか”を意識せず、大量のAPIの回答を統合したものが主流になるかもしれません。その種のオープンソースも、すでに出始めています。最近はMeta社の LLMのLLaMAを研究者向けにリリースしたことが話題になりました」
さらに大杉氏は、他システムとGPT APIを組み合わせることで、様々な発展的ユースケースがつくられる可能性についても言及。
大杉「他システムとGPT APIの組み合わせは、基本的に上記の2パターンしかありません。”他のシステムの出力からプロンプトを作ってGPT APIに食わせる”パターンと、”GPT APIの出力を、他のシステムへの入力にしてしまう”パターンです。このいずれかの組み合わせを用いることで、より発展的なユースケースがつくれるでしょう。
たとえば前者のパターンだと、”法令検索APIが出力した読みづらい法令文章を、GPT APIで要約する”みたいなことができると思います。後者のパターンでは”GPTで文章の表記揺れを吸収させて、フォーマット成形させた結果をデータベースに登録する”といったことも考えられます」
大杉「また、この両方を組み合わせたパターンも考えられます。たとえば、bingAIやリクルートがやっている『じゃらんnet』のAIチャットなどが、まさにこのパターンに当てはまりますね。まず、チャット風質問文章をGPT APIに食わせて、そこから検索パラメーターを抽出し、検索APIのデータベースに投げます。このデータベースから返ってきた内容を、もう一度GPT APIに食わせ、最初の質問と合わせて“良い感じのチャット風回答文章”としてアウトプットする。こんな流れです。このやり方は検索APIに手を加える必要がなく、「指定のFMTに合わせた表現で返して」という要望をGPT APIのプロンプトに指示するだけで済んでしまう。これは、革命的ですね」
このほか大杉氏は、新しいAPIのコールの手法であるFunction callingについて、従来の自然言語処理技術との組み合わせパターンなどについても解説。
そして、最後にGPT APIを施策で活用する際の参考として、下図が紹介されました。
大杉「かなり雑な図で恐縮ですが、最もハードルが高いのは右上のエリアですね。「内部利用」よりも「一般ユーザー向け」のほうが遥かに難易度は高いです。一般ユーザー向けであっても「バッチ処理」に使用する場合はこちらで一つ一つ確認ができるためコントロールしやすいのですが、「リアルタイムでの活用」となるとめちゃくちゃハードルが上がります。ただ、リクルートの場合は『じゃらんnet』 の「AIチャットでご提案 」という先例があり、すでに最も高いハードルを超えています。それ以外のものは、おそらくそれよりはラクでしょう。先駆者のおかげで、活用のハードルはかなり下がっているのではないかと思います」
質疑応答
イベント終了後には質疑応答の時間が設けられました。講義中にチャットで寄せられたいくつかの質問に対し、大杉氏が回答。その一部を紹介します。
Q:リクルートはLLMをつくるか?
A:まず、あくまでこの話は個人的な見解であることをご理解ください。つくりたいという方もいることは知っていますが、一からLLMをつくるにはマシンリソースだけでなくマンパワーも必要です。GPTは昔ながらの機械学習をした後、人間がチューニングするインストラクトGPTと呼ぶフェーズがあり、そこをに専門家も呼んで力を入れているようです。このフェーズがあることで回答が自然になったということもあります。コストパフォーマンスは良くないですし、リクルートのビジネスモデルとは合うとは言い難いかなと思います。
Q:Function callingの呼び出しが安定しない。呼んでほしいがLLMに回答されるのでコツを教えてほしい
A:Function callingで指定しているfunctionが元のテキストに対して適切でないとLLMが判断した可能性が高いです。どのfunctionを呼び出すかパラメーターで強制することができるので、それでもダメな場合はfunctionsのJSON (JavaScript Object Notation)を見直す必要がありますね。
Q:「ひとまずAIに聞いてみよう」が当たり前になる気がするが、現時点ではLLMにフリーワードで要望を入力させるのはハードルが高いという話をよく聞く。実際はどうなのか
A:人間に質問するのと同じで、自分のコンテキストや何を聞きたいか言語でしっかり表現できないと、人間でもAIでも応えることができません。自分の要望をきれいに言語化する能力は、実はハードルが高いと皆さん感じられていると思うので、受け手がいくら進化しても聞き手のレベルが上がらない限り一定の限界はあるというのが私の感覚です。とはいえ、今現在人間に比べてAIが劣っているかというと、GPT-4に関しては少なくとも私はそんなことはないと思います。かなり複雑な手順は人間に聞くよりもGPT-4に聞いた方が正しい回答が返ってくることも多いのではないでしょうか。
まとめ
様々なロジックや手法について紹介された本講義。決してハードルは高くないこと、そしてAIに対する知見が少なくても、触って試行錯誤してみることの重要性が十分に伝わってくる内容でした。
「どんなプロンプトが効果的か」「この一文を入れることで出力が大きく変わった」など、まずは好奇心の観点から気軽な気持ちで検証をしつつ、少しずつAIに触れてみることが大事なのかもしれません。
お知らせ|プロデザ室は仲間を募集しています
プロダクトデザイン室の募集情報は〈こちら〉のサイトからご確認いただけます。ぜひご一読ください☆
https://blog.recruit-productdesign.jp/
お願い|noteのフォローをお願いします!
こちらのnoteアカウントをまだフォローしていない方!ぜひフォローしてくださいね。皆さんのキャリアやお仕事に役立つ記事を発信していますので、絶対損させませんよ!!!
お願い|できれば公式X(旧twitter)もフォローをお願いします
プロダクトデザイン室の公式X(旧twitter)ではイベントの見どころやオリジナルコンテンツを更新しています。ぜひフォローしてください。
https://twitter.com/Recruit_PD_PR