天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

ChatGPT IN ACTION 実践で使う大規模言語モデルに参加してきた

rector.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

大規模言語モデル(LLM)を実際にプロダクトや実務に役立つ形で利用している各社が見た使いどころや、実践の上での工夫について学び会うためのイベントです。

会の様子

オープニング

ChatGPTはPlatformとしてのChatGPT/APIとしてのChatGPTの二面性がありますが、今日はAPIとしてのChatGPTの話である旨が紹介されました。

ChatGPTを使ったシェルコマンドランチャーwanna

最初のLTは広木さんからありました。以下の記事にあるwannaのデモや実行する仕組みをお話してくれました。

qiita.com

wannaは人間の仕事とLLMの仕事を分けてステートマシンとして実装されているということで、LLMが指示を受けて生成→生成結果を受けた人間が実行/保存/追加指示といった行動を選択し、再実行する際は反省&デバッグ、保存する場合は名前提案というサイクルを回しているそうです。(AIが提案し人間が決めるというコンセプト)

複数のNLPタスクを組み合わせたUXになっているのがChatGPTのすごさだということで*1、プロンプトエンジニアリングだけでソースコード生成/スクリプト名の提案/デバッグ/概要文生成/ユーザー言語推定...といったことが実現できる「NLP民主化」というお話でした。

次に、プロンプトに対しての解説がありました。以下、プロンプトごとにどんなことをしているのか簡単に整理します。

  • スクリプトの生成プロンプト...精度を高めるために英語を使う*2。CoTを効かせるためにstep by stepで考えるようにし、one Shot exampleをつけた後、最後にユーザーの言語を入力から推定して出力を縛る。
  • スクリプト名の提案プロンプト...ParseしやすいようにJSONとして出力する。candidatesをリストアップするようにinput。
  • 実行結果から反省とデバッグするプロンプト...bashの入出力をteeして実行結果をプロンプトに入れ、問題があればCodeをSuggestしてもらう

広木さんは、こうした取組は既知のパターンの組み合わせと試行錯誤をするところは普通のエンジニアリングなのでこれまでのエンジニアリングと変わらないし、ソフトウェアの開発プロセス設計や組織設計の考え方ともつながってくると感じたそうで、「すべての人がAIをマネジメントするマネージャーになる」という予感で、発表が締めくくられました。

ChatGPTを活用した「AI組織改善アドバイザー」開発の裏側とプロダクト実装の工夫

続いて梅原さんから、LLMを使った開発をするにあたってUnlearnが必要だったことの紹介がありました。
以下にUnlearnが必要だった内容を記載します。(記載した内容以外にも、プロダクトでやるのが難しいと思われた内容やデータの溜め方も見直ししたいというお話でした)

要件を組み立てる際、構造化データが前提ではなくなった(非構造化データや自然言語処理を活用)

単にドキュメント内の回答にとどまらず、ドキュメント情報を活用した推論ができているのがすごいことだというお話がありました。
これにより、構造化が必要という理由で活用が難しかったナレッジの有効活用につながったそうです。

前提を言語化して出力をコントロールする必要があった

プロダクトエンジニアリングに近い話として、「質問者はエンジニアではない」「この人は多くの人に好意的に見られている」といった暗黙の情報を渡す必要があるということでした。

網羅的なテストよりもランダムテスト

構造がブラックボックス化しているため、不適切な例をひたすら挙げて色々な質問を想定する必要があったということです。ランダムテストはChatGPTが得意な領域なので、ChatGPTにケースを生成してもらうようにするとよかったという話もありました。

ChatGPTを活用したプロダクトのリリースと今後の展望

次に松原さんから、ChatGPTをプロダクト開発の企画〜リリースまでどのように活用しているのか?という話がありました。

ChatGPT API公開のおさらい
  • 2023/3/2リリース
  • APIの公開によりサービス活用が可能
  • 1,000トークンあたり27円という低価格
  • これまでのモデルと比較して精度が向上

というおさらいがありました。

GAiChaLの紹介

ChatGPT APIが公開された翌日の2023/3/3にリリースされたGAiChaLのリリースまでにやった内容の説明がありました。

GAiChaLは、

  1. APIの挙動テスト
  2. 利用規約策定
  3. LINEでの実装

の流れでリリースしたということで、LINEに組み込むことができたことが素早いリリースに貢献したそうです。

社内でのChatGPTのアクション

社内でのChatGPTのアクションのために、まずは社内イベントを企画してChatGPTの活用方法について議論したということでした。

このイベントには、エンジニアはもちろん法務の方や営業の方といった幅広い層が参加したそうで、幅広い活用方法の討論やナレッジの横展開など、様々な効果があったそうです。
その後はSlack botで全社員がChatGPTを触れるようにしたそうで、これにより、ナレッジ蓄積の加速や非エンジニアがChatGPTを積極的に活用できたということでした。

ChatGPT利用サービス開発でわかったAIとの接し方

続いて、笹野さんからキャリアをまとめるために役立ったプロンプト/役立たなかったプロンプトの話や、ChatGPTを活用する中でわかったAIとの接し方について話がありました。

効いたプロンプト

最初に効いたプロンプトの紹介がありました。

  • 全体の文字数や出力フォーマットの指定
  • 「人間がどう感じるか」を指定
  • 要望をすべてまとめるのではなくリクエストを2つに分ける
効かなかったプロンプト
  • 「〜しないで」「〜はやめて」を入れる
  • 「絶対」「必ず」を入れる
  • 抽象的な数値表現
AIとの接し方

最期に、こうしたプロンプト開発をしていく中で、人とのコミュニケーションと同様に、丁寧なコミュニケーションを取るのが重要だという気づきがあったというお話がありました。

ChatGPT×Whisper

続いて松本さんから、WhisperとChatGPTを組み合わせてプロダクト開発に活用した事例のお話がありました。

キャリアアドバイザーの業務として、求職者にヒアリングしながら履歴書や職務経歴書を作成するという業務があるそうですが、gradioとWhisperとChatGPTを活用することで、この業務を大きく改善させることができたそうです。
具体的には、以下のような点がWhisperとChatGPTを活用したメリットして挙げられていました。

  • 音声はフォーマットテキストが雑なので、ChatGPTと相性がよい
  • 生成スピードと精度が高い
  • Gradioのおかげでシーケンシャルなinput/outputのUIが実現
  • プロンプトでチューニング可能なので、ユーザがPDCAを回せる

一方で工夫が必要だった部分もあるそうで、以下の部分は工夫が必要だったということでした。

  • Whisperに英語以外の音声を長時間渡すと、Transformer特有の存在しない文字を繰り返し文字起こしすることがある(VADで解決)
  • 音声データは20,000トークンくらいあるので、Refineでチャンクした

最期に、今後はユーザーが楽にインプットできる薄いUIとSoRのやり取りにChatGPTが活用できるといいよね、という話がありました。(薄いUIをどれだけ多く作れるか?重要なデータをどうやってちゃんと格納するのか?)

パネルディスカッション

LTの後はパネルディスカッションがありました。以下、内容を常体で記載していきます。

LLMを価値あるものにする上で注意すべきことは?
  • ユーザーの課題をベースにLLMの活用を考えること
  • Unleanしない部分(Whyから考える...)/Unlearnしない部分(要件定義...)を明確に分けて考える
  • 楽するためにやってみたいことともし事故が起きたらまずいところを明確に分類する
  • adversarial promptingの文脈で、一旦アウトプットを返す前に校閲するステップを挟む
LLMを使っていくにあたって関係者の説得で大変だったことは?
  • プロンプトエンジニアリング力が低い時のβ版だと価値があまり伝わらなかった
  • ビジネスドメインとChatGPTの相性があまりよくないのでは?という懸念を持たれた
  • ポジもネガもいなかったので、「ChatGPTだから」ではなくWhyから説明することを心がけた結果導入できた
  • そんなに説得しないといけない状況はなかった
今後のUI/UXにChatGPTはどんな変化をもたらすか?
  • 今まではかちかちのAPIが多かったがそうではなくなっているという点でUI/UXに変化が起きそうな予感がある
  • UX改善をChatGPTが活用できるようになると、とんでもないスピードでUXが改善されると思う
  • 薄いUI
  • 人によってはコミュニケーションを丁寧にやることに苦手意識や抵抗感がある人向けに、「いいかんじでよろしく」くらいの提案でうまくやってくれるようなUIが求められると思う
  • 検索とChatGPTがパラレルでしばらくは走りそう。AIのアウトプットのどこまで信頼が置けるのか?という問題はありそう
  • 自然言語でUI操作できるプロダクトは一定増えそう。また、ポイントクリックをしなくて良いような省力化がテーマになったUIも台頭してきそう
AI倫理やプライバシーの議論をどう捉えるか?
  • APIを経由して機密情報は流さない、みたいなリスク管理が一つの解になりそう
  • OpenAIはデータを学習には使わないと言っているので、一定安心していいとは思っている
  • ユーザーのデータを非構造化して活用しておくと、何が個人情報かがわからないのでプライバシー情報の特定が難しくなるのは課題だと考えている
  • 倫理的な問題として、コンサルティング組織を改善できなかったときに誰の責任かがわからなくなるリスクがあるのは課題として感じている。だからこそ、思考過程の開示が重要になってくると思っている
  • 本の著者としては、本をインプットさせてそれとわからないように開示させてしまうとかが起きることを懸念している
  • ChatGPTを使って大学のレポートを書けてしまう(わざわざChatGPTが書いているかのチェックもできない)
  • 人の評価を騙し合って来ることになるリスクがあることは注意しないといけない
ChatGPTはApp storeのように新たなプラットフォームになり得るか?
  • まだそこまでにはなり得ないと思う
  • プラットフォームになる気はするが課金は発生しないと思っている(ネット上に公開されているエンドポイントを食わせているため)
ChatGPTを活用したこういうサービスが欲しい!というのがあれば教えてほしい
  • あったら作っている笑
  • 雑な指示をしたらいい感じで大人の指示やメールにしてくれるサービスがほしい
  • 間に入って会話をファシリテーションしてくれるようなアプリ
AzureのOpenAIと素のOpenAIを使った時のセキュリティ面での違いは?
  • クラウドサービスとして提供するためのドキュメントや情報の扱いがガイドラインとしてまとめられているのは良い
  • 進歩の速さを考えると素のAPIの方が使いやすいというのは正直ある
  • keyの払い出しはAzureの方がやりやすいと思う
  • AzureのOpenAI上でPlaygroundが走るのでそっちの方がセキュア(リテラシー的な話)
  • 可用性がいい
  • SLAを考えるとAzureのサービスレベルの方が高い
実際サービスをリリースしてChatGPT APIに感じる課題点は?
  • レスポンスの遅さ
  • トークン量
  • 並列で投げられない
  • 自前でリトライ処理を地味に挟んでいたりするのでそのあたりが改善されるといい
事業側がChatGPTを使ったプロダクトを提供する時、アウトプットにどこまで責任を持つかを考える必要があると思うが、意見があれば知りたい
  • 倫理観が一つの論点になりそう
  • 期待値調整が重要になってくる
  • 危険なところでいきなり使わない

会全体を通した感想

最近ChatGPT系のイベントが増えてきましたが、APIとしてのChatGPTにフォーカスしたイベントは自分の観測範囲だとやや少なめだったので、充実した時間を過ごすことができました。

いち早くプロダクト開発に取り入れた会社さんの裏側を聞くことができたのは、特に楽しかったです。

*1:今までは自然言語処理をしようと思ったら専用のモデルを一つ一つ用意しないといけなかった

*2:ただし、ユーザー言語を推定してやり取りできるようにしている