はじめに
- 本記事は 2023年3月2日(木)にリリースされた OpenAI の ChatGPT API を用いたサービス例に関する紹介記事です。
- 今回はプロンプトエンジニアリングと LangChain の SequetialChain を用いただけの些末な記事です。
- 触ってみた感想ですが、使い方次第で様々なサービスが考えられる一方で、hallucination 問題などについても適切に対処する枠組みが必要であると感じます。
おことわり
- 本記事は ChatGPT API を用いた事例を紹介する記事であり、 ChatGPT について解説するものではありません。
- 本記事内では例文に「児童手当の所得制限撤廃の賛否について」というテーマを取り上げていますが、その賛否について他意はありません。
- 著者は自然言語処理エンジニアとして絶賛勉強中です。記事の誤り、推奨される方法等がありましたらご指摘いただけますと幸いです。
- 本記事は読者層を明確に想定した上で書かれたものではありません。就職先として弊社を考えている学生の方々、弊社クローラサービスの利用を検討されているお客様、著者と同様に絶賛勉強中のエンジニアなど、特定の個人に刺さる内容であれば幸いです。
ChatGPT API
ChatGPTは、OpenAIが開発した大規模な自然言語処理モデルです。
ChatGPTは、トレーニングに使用された巨大なテキストコーパスから自動的に学習することで、多様なタスクに対して優れた性能を発揮します。
最も有名な応用例は、自然言語の生成や理解に関するもので、例えば以下のようなものがあります。
- 自動翻訳:ChatGPTは、複数の言語のテキストを入力として受け取り、自動的に翻訳することができます。これにより、異なる言語を話す人々が、よりスムーズにコミュニケーションを取ることができます。
- チャットボット:ChatGPTは、ユーザーが入力したテキストに応じて自動応答するチャットボットの開発に使用されます。これにより、顧客サポートや問い合わせ対応などの業務が自動化され、企業がコスト削減を実現できるようになります。
- 自動要約:ChatGPTは、長いテキストを要約するためにも使用されます。例えば、ニュース記事やレポートなどの大量のテキストを扱う場合、ChatGPTを使用して、重要な情報のみを抽出することができます。
上記の説明は、
ChatGPT について説明してください。また応用例についても提示してください。
という質問に対して ChatGPT が実際に生成した文章です。
ChatGPT は OpenAI が 2022年11月30日 に公開した生成AIの一つで、GPT-3 をベースに教師あり学習と強化学習の両方の手法で学習されています。
人間らしい応答生成が可能であることや、Google のコーディング試験でレベル3エンジニア(同レベルのエンジニア年収は 18.3 万ドル)として採用されるほどの高度なプログラミング知識を保有していること(参考)から、公開から1週間で100万ユーザ、2ヶ月で1億ユーザと、驚異的なスピードでユーザを獲得しています。
ChatGPT のアーキテクチャや学習方法については本記事で説明しませんので、記事最下部のリンク先を参照ください。
ChatGPT のサービス事例
OpenAI の ChatGPT API の紹介ページ では ChatGPT を用いたサービス事例が 4 つ紹介されています。
- Snap Inc.: カスタマイズ可能なフレンドリな雑談型チャットボット。おすすめ商品を提案したり、数秒で俳句を読むことができる。
- Quizlet: 語彙学習や模擬試験などを含むグローバルな学習プラットフォーム。楽しいチャット体験を通じて学習者に関連する教材を提案する適応型学習を実現する。
- Instacart: 食べ物に関して顧客のインスピレーションに満ちた買い物が可能な自由形式型の検索プラットフォーム。小売店からの商品データを参照し「子供のための健康的なランチは?」のような質問に対する適切な情報を提供する。
- Shop: 消費者に適応した買い物体験を提供する商品推薦プラットフォーム。消費者が欲しい商品を素早く推薦したり、新しい商品の発見を手助けする。
ChatGPT API を使用したロールプレイ型ブレインストーミング
深津+’23 – エヴァのMAGIシステムをGPT3で作ってみた (note) に触発され、以下のようなシステムを作成しました。
ChatGPT は Python であれば、以下のように呼び出し可能です。
ChatGPT がどのようなシステムであるか説明するための役割の記述を事前に付与しています。
# (参考)https://platform.openai.com/docs/guides/chat # Note: you need to be using OpenAI Python v0.27.0 for the code below to work import openai openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Who won the world series in 2020?"}, {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."}, {"role": "user", "content": "Where was it played?"} ] )
本記事では、ディベート形式に議論を深めていくことを念頭に保守派・革新派の2つの役割を付与しています。
また最終的にユーザの意見に対して、賛否の視点から要約を行い内容を深掘りするための視点について助言する、まとめ役の役割も ChatGPT に演じてもらいます。
モデルからの各出力を LangChain の SequentialChain を用いて接続しています。
LangChain については AI を用いた情報抽出システムの試作 #00 (keywalker blog) で触れているので気になったら参照いただけますと幸いです。
深掘りしたい意見は以下のようになります。
なお児童手当の賛否についてはあくまでも一例であって、他意はありません。
私は児童手当の所得制限撤廃について賛成です。 理由は児童手当は親ではなく子供に対して付与されるべきだと思うからです。 異次元の少子化対策を持続するためには、親の収入に左右されずに平等な支援が必要です。
モデルからの出力は以下の通りです。
### 革新派の回答 ご意見ありがとうございます。 私も児童手当の所得制限撤廃に賛成です。 子供たちが健やかに育ち、教育を受けることは、社会全体にとって重要なことです。 所得制限があることで、低所得層の子供たちには十分な支援が届かないことがあります。 そのため、所得制限を撤廃し、より平等な支援を提供することが必要だと考えます。 また、少子化対策としても、子育てを支援する政策が必要です。 今後も、子供たちが健やかに育つための政策を提案していきたいと思います。 ### 保守派の回答 私は児童手当の所得制限撤廃には反対です。 所得制限があることで、より必要な家庭に支援が行き渡るようになっています。 また、所得制限がないと高所得者にも支給されることになり、税金の無駄遣いになる可能性があります。 代わりに、所得制限を見直し、より必要な家庭に支援が行き渡るようにすることが重要だと考えます。 ### まとめ まとめると、児童手当の所得制限撤廃について、以下のような意見があります。 賛成派: - 児童手当は子供に対して付与されるべきであり、所得制限があることで低所得層の子供たちに十分な支援が届かない可能性がある。 - 少子化対策として、子育てを支援する政策が必要である。 反対派: - 所得制限があることで、より必要な家庭に支援が行き渡るようになっている。 - 所得制限がないと高所得者にも支給されることになり、税金の無駄遣いになる可能性がある。 今後、より深い議論をするために、以下のような問題提起が考えられます。 - 所得制限があることで、低所得層の子供たちに十分な支援が届かない可能性があるという点について、具体的なデータや事例があるか。 - 高所得者にも支給されることになる可能性があるという点について、どの程度の割合であるか、またそれを防ぐための方法はあるか。
ChatGPT すごいですね…!
著者は対話システムの開発を少しだけ行ったことがあるのですが、LangChain 同様、当時苦労したことが簡単に実現できてしまうことに悲しい感情を抱きます。
もう少し真面目に言及すると、保守派・革新派の回答はそれぞれ最もらしい記述になっていますが、ユーザ視点に立つと「果たして本当なのか?どういう根拠があって述べているのか?」と疑問を投げかけたくなる人もいるかと思います。
政策などについてあまり詳しくない人が、児童手当の所得制限撤廃についての小論文を書くといったケースを想定すると、ChatGPT が生成した文章に対して事実確認ができる記事を同時に出力するなどの工夫が必要になるかもしれません。
一方で「まとめ」については「革新派」「保守派」のそれぞれの意見に対して分かりやすい形で記述しています。
あらかじめ ChatGPT が参照する文章がユーザに対して明らかになっているなど、ユーザ自身が妥当性を判断できるタスク設定になっている場合には ChatGPT を最大限利用することができるかもしれません。
よくある議論
ひとつは研究の側面から「ChatGPT で自然言語処理は終わるのか?」という議題が挙げられています。
こちらについては言語処理学会第29回年次大会(NLP2023)で緊急パネル会が開催されるそうなので、こちらの開催を待ちたいと思います。
宣伝ですが、弊社は今年も言語処理学会第29回年次大会(NLP2023)のゴールドスポンサーになっています。
ひとつは教育や芸術という側面から「ChatGPT が人間の創造性を上回る知識活動を行うのではないか?」という議題が挙げられています。
第62回大学等におけるオンライン教育とデジタル変革に関するサイバーシンポジウム(教育機関DXシンポ)にて、
京都大学の黒橋教授が教育における ChatGPT との向き合い方について言及されていたので引用させていただきます。
黒橋+’23 – ChatGPT の仕組みと社会へのインパクト (NII 教育機関DXシンポ)
- 電卓や機械翻訳の利用と同様で、学習初期には一定程度の制限が必要だが、ある段階からは積極的に利用して批判的思考を身につけることが重要(Digital Native → AI Native)
- AI生成文の自動検出(watermark など)の技術も進むだろうが、本質的対策とはならないだろう
- 創造性:一般化やアナロジーの能力は未知。広範な知識の対応付けが可能になれば「創造」に近いことが起こる可能性がある
また東京大学の松尾教授が第2回 自民党AIの進化と実装に関するプロジェクトチームの発表にて、「ChatGPT ができること」について、オリジナルのアウトプットが「人間」か「AI」かという軸で自然言語におけるユースケースを列挙されています。
著者の浅はかな所感ですが、一企業の toB 向け開発単位に限定すると、ユーザが 『Hallucination: a response’s factual correctness cannot be fully verified from the knowledge-snippet even if it is true in the real world. – Dziri+’22 (NAACL)』 問題を無視できない場合は、オリジナルのアウトプットを ChatGPT に依存させることは望ましくないかなと感じています。
実際に ChatGPT からは議員らしい文章が生成されていますが、生成内容に対して裏付けとなる文章が提示できていないため、納得した感で終わってしまいそうです。
さいごに
ChatGPT API を用いたロールプレイ型ブレインストーミングの第一歩として、保守派・革新派の役割を付与した意見のフィードバックシステムを作成しました。
今回は ChatGPT API の発表からスピード感を持って記事を作成したため、内容もシンプルなものとなっています。
展望としては以下のようなものを考えています:
- ステークホルダー別などの選択可能な役割を増やすことで、ステークホルダーマネジメントや発表資料の添削などを行う。
- ソクラテス思考法などの工夫を採用すべく対話形式にユーザの意見を深ぼるために、不足箇所をフォローアップするための自問自答を行う Self-Ask (Press+’22)などを導入する。
- LangChain であれば Tools などを利用して Google 検索などを行い、実際の例やデータを示す。
- LangChain の LLMSummarizationCheckerChain や Self-Critique などを利用して、生成された文章に対する事実確認や予測しない動作に対する確認を行う。
- mermaid 記法などを使用して、意見に対する支持や攻撃などの可視化を行う。
参考
ChatGPT について- 松尾+’23 – AIの進化と日本の戦略 (第2回AI新時代の日本の戦略 – 自民党)
- 黒橋+’23 – ChatGPT の仕組みと社会へのインパクト (NII 教育機関DXシンポ)
- オミータ+’22 – 話題爆発中のAI「ChatGPT」の仕組みにせまる! (Qiita)
- Lambert+’22 – Illustrating Reinforcement Learning from Human Feedback (RLHF) (HuggingFace Blog)
- Rajani+’22 – What Makes a Dialog Agent Useful? (HuggingFace Blog)
- Turovsky+’23 – Framework for evaluating Generative AI use cases (Linked in)
- Brockman+’23 – Introducing ChatGPT and Whisper APIs (OpenAI)
- 逆瀬川+’23 – ChatGPT APIを使ってAIキャラクターを作ってみる! (Qiita)
- npaka+’23 – ChatGPT API の使い方 (note)
- masa_kazama+’23 – ChatGPTに自社データを組み込んで新しい検索体験を模索してみました (note)
- Wilson+’22 – 10 の効果的なブレーンストーミングの手法 (wework ideas)
- 深津+’23 – ChatGPTにギルガメッシュ王の人格を与えるには? (note)
- 深津+’23 – エヴァのMAGIシステムをGPT3で作ってみた (note)
- 深津+’23 – 続:エヴァのMAGIシステムをGPT3で作ってみた。【秘密結社会議編】 (note)
- 深津+’23 – ChatGPTに感情回路を埋め込んだら、やべぇ感じになった (note)
- 馬田+’21 – 解像度を上げる 🔬 (SpeakerDeck)
著者:宮脇峻平(データサイエンス部) [プロフィール]
最終更新日: 2023.03.03