ChatGPTを開発しているOpenAIが、開発者向けにChatGPTのプロンプトエンジニアリングの講義動画を出した。
プロンプトエンジニアリングとは、AIに特定の問いや指示をどのように与えるかを工夫することである。
魔法使いが魔法の呪文を言って、魔法をうまく機能させるように、エンジニアはAIに対する「呪文」(これがプロンプト)を設計する。
この呪文の設計が、すなわちプロンプトエンジニアリングだ。
そして、このプロンプトエンジニアリングによって、AIは私たちが求める回答や行動を取ることができる。
※この記事では便宜上プロンプトエンジニアリングをプロンプト開発とも言い換えています
この講義動画は、DeepLearning.AIというAI分野に特化した教育系スタートアップが、OpenAIと共同で制作したものだ。
約90分ほどで、簡単なChatGPTのプロンプトエンジニアリングを学ぶことができる。
DeepLearning.AIへのアカウント登録は必要だけれど、講義動画は無料。
動画は英語になるものの、流し見をするだけでもChatGPTを使ってできることや、プロンプトエンジニアリングについて感覚を持つことができるので、興味があったり時間があったりする人には、おすすめしたい動画だ。
今回は動画内容の大まかな要約を講義動画内の各章ごとに、書いていく。
なおエンジニア向けの講義動画の要約だが、エンジニアでない人向けに書いているので、専門知識がなくても大丈夫(なはず)。
よろしくお願いします!
DeepLearning.AIへの登録手順
講義動画を見るために、まずはDeepLearning.AIへの登録が必要。
登録手順をここで説明する。
簡単にできるので、やってみてほしい。
まずは、下↓のDeepLearning.AIの開発者向けChatGPTプロンプトエンジニアリングにアクセスする。
アクセスしたら、画像内↓の”Learn for Free”をクリックする。
クリックすると、DeepLearning.AIのログイン画面に移る。
アカウントを持っていたらメールとパスワードを打ち込んでログイン。
今回登録する場合は、下の赤字の”Create account!”をクリック。
“Create account!”をクリックすると、メールを登録する画面に移る。
メールを入力。
登録メールを送りました!=”The registration email is sent!”と画面表示が変わる。
メールを確認すると、DeepLearning.AIからメールが来ている。
それを開いて、赤いボタンの「アカウントを有効にする」=”Activate your account”をクリック。
クリックすると、アカウント登録の画面に変わり、名前=”Name”とパスワード=”Password”を登録する。
これでアカウント登録が完了。
もしかすると、人によっては↓の「404」と書かれたエラー画面が出るかもしれないけれど、気にせず開発者向けChatGPTプロンプトエンジニアリングに戻って、”Learn for Free”をクリックしてもらいたい。
そうすると先のログイン画面に変わって、設定したメールとパスワードで講義動画にアクセスできるはずだ。
講義のコースが表示されたら完了!これで講義動画を見ることができる!
動画内容要約
講義動画を見ることができるようになったところで、動画の各章ごとに大まか要約を共有したい。
動画内容は9つのパートに分かれている。
※↑ボックス内の各章の()内の日本語は意訳です。
講義動画のまとめスライド
9つのパートの内訳。
①Introduction(はじめに)と②Guidelines(ガイドライン)、③Iterative(反復作業)は主に座学。
④Summarizing(要約)、⑤Inferring(推論)、⑥Transforming(変換)、⑦Expanding(拡張)、⑧Chatbot(チャットボット)は実践になっている。
⑨Conclusion(締め)は①〜⑧のまとめを簡単に話している。
要約するべき内容も特にないので、この記事では取り上げない。
それでは①〜⑧の要約を共有していく。
①Introduction(はじめに)
Introduction(はじめに)では、この講義の紹介とChatGPTの基礎となるAIの大規模言語モデル、LLMについて話している。
LLM(大規模言語モデル)にはテキストから次のテキストを予測するBaseLLMと、人の質問や指示のに従おうとするInstruction Tuned LLMがある。
Instruction Tuned LLMはRLHF(人間のフィードバックからの強化学習)により、有益(Helpful)で、正直(Honest)で、無害(Harmless)なテキストを生成するようになっている。
②Guidelines(ガイドライン)
Guidelines(ガイドライン)では、プロンプトエンジニアリングのガイドラインとなる、2つの原則(プリンシパル)とその実践方法を説明している。
なおこのGuidelines(ガイドライン)以降は右側に講義動画、左側に講義資料がある画面構成になっている。
そのため、講義動画を見て分からないところは講義資料で確認しながら、進めていくことができる。
2つの原則とは、1つは明確なプロンプトを書くこと、もう1つはモデルに考える時間を与えることだ。
これはChatGPTのプロンプトエンジニアリングの基本的な考え方なので、とても重要。
1、明確なプロンプトを書く
プロンプトは明確に書く必要がある。
よく誤解されがちだが、明確に書くこと=短く書くことではない。
大抵の場合、むしろ長く書く方が明確になる場合が多い。
その上で、””や<>などの区切りを使う、構造が整理されたHTMLやJSONなどでアウトプットを出す、条件が満たされているかを確認する、プロンプトをいくつか出すといった、4つの実践方法がある。
2、モデルに考える時間を与える
モデルには十分に考える時間を与えることで、より精度の高い回答を引き出すことができる。
具体的には、ステップ1〜NまでAIがタスクを実行するまでの手順を具体化する、モデルに独自にソリューションを試すことも指示するといった、2つの実践方法がある。
③Iterative(反復作業)
Iterative(反復作業)では、プロンプトを何回も試しては改善していく反復作業が大事であり、その具体的な方法を紹介している。
機械学習の開発モデルを見ると、アイディア→実装→実験結果→エラー分析のプロセスを繰り返し回していくことが大事であり、プロンプトの開発においても同じことが言える。
このことから、ネットで見るような「うまくいくプロンプト集ベスト30」のような記事はあまり信用しにくい。
なぜなら、うまくいくプロンプトはアプリケーションごとに違うからであり、何かフォーマットや定型文があって、それを使えばうまくいくようなものはないからだ。
それぞれのアプリケーションに最適なプロンプトがある。
必ずしもプロンプトを知っていることが大事なのではなく、良い形でIterative process(反復作業)を行なっていくことが大事である。
④Summarizing(要約)
Summarizing(要約)では、テキストを要約するプロンプトを色々と紹介している。
テキストを要約すると言っても、要約の目的や要約内容の活用方法によって作るべきプロンプトも変わってくるので、その点を意識してプロンプトを開発する必要がある。
口コミ要約
顧客の口コミを要約する設定のデモ。
その際に、社内の各部署に関連する口コミ内容の要約ができる。
例えば、配送を担当する部署に関連する口コミと価格を担当する部署に関連する口コミだ。
配送を担当する部署に関連する口コミ
「商品は早く届いたけど、値段に見合うものではないと感じた」と書かれている。
価格を担当する部署に関連する口コミ
「商品は良かったけど、価格が高すぎる」と書かれている。
抽出
指定した内容の口コミを抽出することもできる。
出荷と配送に関する口コミを抽出した
青くハイライトされている部分が抽出部分で、「商品が思ったよりも早く届いた」。
大量のレビューの要約
ウェブサイトで多くの商品を扱っていたり、商品のレビューが大量にある場合など、対象の口コミを指定すると、その分の口コミを要約してくれる。
デモでは3つの商品の長文の口コミを要約している。
元の口コミ(赤字部分)。長い。。。
その1
その2
口コミの要約画像
⑤Inferring(推論)
⑤Inferring(推論)では、AIがテキストの内容を分析して、感情を読み取ったりする。
動画内のデモではまずランプの口コミの感情をAIが判別している。
まずは上のIn[5]:では口コミがポジティブかネガティブかで、ポジティブと判断している。
次に下のIn[6]:では口コミから読み取れる感情を「ハッピー、満足、素晴らしい、印象的、中身のある」と判断している。
他にも架空の記事からトピックの抽出、設定したいくつかのトピックがそれぞれ架空の記事に合致するかの判断、特定のワードに反応した場合のアラートを出すプロンプトなどをデモでは見せている。
架空の記事から5つのトピックを抽出するプロンプト
設定したトピックと記事との合致を0=合致していない、1=合致で判断しているプロンプト
“nasa”のワードに反応して記事のアラートを出すプロンプト
⑥Transforming(変換)
⑥Transforming(変換)では、インプットとなるテキストを別のコンテンツに変換または翻訳するプロンプトを紹介している。
例えば、言語の翻訳をしたり、テキストの文法やてにをはを修正したり、HTMLやJSONに変えたりする。
まずデモとして「こんにちは、料理用のミキサーを注文したいです」を英語からスペイン語に翻訳している。
また、テキストが書いてあり、それが何語かを判別している。
複数言語への同時翻訳も行っている。
「枕を注文したいですか?」英文をフォーマル、カジュアルに分けてスペイン語に翻訳をしている。
複数言語を応用した複数言語から別の複数言語の翻訳もしている。
デモではフランス語、スペイン語、イタリア語、ポーランド語、中国語の文章をそれぞれ英語と韓国語に翻訳している。
他にもHTMLやJSONへの変換、または文章の校正ができる。
HTML形式で顧客の名前と連絡先を抽出
抽出したHTMLをJSONフォーマットに変換
黄色の太枠部分が最初の文章校正で、次にIn[27]:で校正箇所を赤字でハイライトしている。
⑦Expanding(拡張)
⑦Expanding(拡張)では、短い言い回しや単語から長い文章を生成するプロンプトを紹介している。
例えばメールやエッセイなどだ。
デモでは、口コミのレビューの感情を読み取り、感情がポジティブであれば御礼メール、ネガティブであればお詫びメールとともにカスタマーサービスの案内をするメールを書くように設定して、AIがメールを生成している。
LLM(大規模言語モデル)にあるパラメーターのうち、Temperture(テンパチャー)はその設定の強弱によって、テキストの次に生成する言葉の幅のランダム度合いを設定できる。
弱い設定ほどランダムではなくなり一番皆が考えそうな回答を生成し、強い設定ほどランダムでよりバラエティに富んだ回答を生成する。
Temperture0.7=ランダム度合いが強い設定で生成した、先ほどの口コミに対するAIのメール
その1
その2
⑧Chatbot(チャットボット)
⑧Chatbot(チャットボット)では、独自のカスタマイズチャットボットの開発の仕方を簡単にではあるが、紹介している。
チャットボットの役割も整理して動画内で説明している。
“system”では開発者がAIにどのような回答をして欲しいかを設定する。例えば、「天気を聞かれたら答えなさい。それ以外の質問には分かりませんと答えなさい」など。
“assistant”ではチャットボットが実際の回答をする。例えば、下の”user”の質問の場合だと「晴れです」など
“user”ではユーザーが質問をする。例えば、「今日の午後の天気を教えてください」など
デモではピザの注文ボットを見せている。
注文ボットの設定画面
↑注文ボットの設定:顧客への挨拶をしてから注文、ピックアップかデリバリー、注文を確認しながら追加がないかを聞いて、もしデリバリーであれば住所を聞く。最後に支払いをしてもらう。オプションやトッピング、サイズなどを明確にする。チャットの回答では短く、会話的でフレンドリーにする。
実際のデモでのチャット例。値段やトッピング、追加などを確認しながら注文を進めていく
まとめ:動画を見るだけでも参考になるのでおすすめ
この記事でどこまで伝わったかは分からないが、動画内のデモを見ると、プロンプトエンジニアリングでは、従来のプログラミングよりも柔軟かつ簡単にアプリケーションを作れそうな感じが伝わってくる。
ChatGPTというLLM(大規模言語モデル)の言語理解の性能を活用することで、自然言語による開発を可能にしているのだ。
たとえ開発内容が分からなくても、動画を見るだけですごく参考になるので、おすすめだ。
もしかすると、魔法使いになりたい!と思い呪文設計(プロンプトエンジニアリング)を始めるかもしれない。
最後まで読んでくれて、ありがとう!
ではまた!