はじめに
DeepLearning.AIからPrompt Engineeringの講座「ChatGPT Prompt Engineering for Developers」が公開されました。なんとAndrew Ng氏(スタンフォード大学)とIsa Fulford氏(OpenAI)が講師。そして無料。
対象は初心者から上級者まで、計1時間ほどの動画で、実際に動かせる教材もセットになっており、教材の内容に目を通すだけでも参考になりました。サイト上では「期間限定無料」となっていたので、早めに覗いてみてください(2023/5/3時点)
以下、各パートのキーワードとメモです。 詳細はぜひぜひDeepLearning.AIの講座 をご覧ください!
※印の部分が個人的な感想で、それ以外はレッスン内容の抜粋です。
(追記)始める前に
@segavvy さんの記事。始め方や画面の説明、日本語で見るコツが書かれていて、講座のイメージがつかめます。
Introduction
教材なしの動画のみ。
要約、推論、変換、拡張などの一般的なユースケースについて、プロンプトのベストプラクティスを紹介します。
LLMを使用したチャットボットの構築をガイドします。
Guidelines
最初のレッスンではまず、プロンプトの2つの原則について、解説されています。
原則1:明確で具体的な指示を書く
原則2:モデルに "考える "時間を与える
原則1:明確で具体的な指示を書く
戦術1:区切り文字を使って、入力の異なる部分を明確に示す
戦術2:構造化されたアウトプットを求める(JSON、HTMLのような)
戦術3:条件が満たされているかどうかをモデルに確認させる
戦術4:"Few-Shot"のプロンプティング
原則2:モデルに "考える "時間を与える。
戦術1:タスクを完了するために必要なステップを指定する
戦術2:結論を急ぐ前に、まずモデル自身が解決策を導き出すよう指示する
Iterative
反復的なプロンプトの開発について紹介しています。
「アイディアを出す→プロンプトを実行する→結果を分析する」のサイクルが重要です。
マーケティングコピーを生成する過程を解説しながら、反復的なプロンプト開発を実演しています。
なぜ期待する出力が得られないのかを、分析することが大切。
Summarizing
このレッスンでは、特定のトピックに焦点を当てたテキストの要約を行います。
ECサイトのレビューを対象に、様々な要約をしています。
- 単語/文/文字数制限で要約する
- 出荷・配送に関して要約する
- 価格と価値にこだわって要約する
- 配送に関する情報を抽出する
- 複数の製品レビューをまとめる
Inferring
製品のレビューやニュース記事から感情やトピックを推測します。
- センチメント(肯定的/否定的)
- レビュアーは怒っているか
- レビューから製品名と会社名を抽出する
- 上の3つのタスクを同時に行う(センチメント推測、怒っているか、製品名と会社名の抽出)
- ニュース記事の5つのトピックを推測
- 指定した5トピックがニュース記事に含まれるか判断する
(※Watson NLU的なこともできちゃうのか~。どのくらいできちゃうのか、これは別途試してみないと)
Transforming
翻訳、スペルチェック、文法チェック、トーン調整、フォーマット変換などのテキスト変換タスクに大規模言語モデルを使用する方法について説明します。
-
翻訳
ChatGPTは、多くの言語のソースを用いてトレーニングされています。このため、モデルには翻訳の能力が備わっています。この能力の使い方の例を紹介します。
文章の言語を特定、英文をスペイン語・フランス語・海賊風英語に翻訳、オフィシャルな言い回しと仲間内での言い回し -
ユニバーサル翻訳機
多国籍の大手eコマース企業のIT担当者に集まってくるさまざまな問い合わせを、言語を特定して、英語と韓国語に翻訳。 -
トーン変換
スラングからビジネスレターに翻訳。
(※「ジョーだ、このスタンドランプの仕様を調べてくれ」がどう変わるのかぜひ見ていただきたい) -
フォーマット変換
フォーマット間の変換を行います。プロンプトには入力形式と出力形式を記述する必要があります。
例ではJsonからHTMLのテーブル形式に変換しています。 -
スペルチェック/文法チェック
よくある文法やスペルの問題と、LLMの回答を紹介しています。モデルに「校正」または「校正と修正」を指示する方法の例を示しています。
Expanding
各顧客のレビューに合わせたカスタマー サービス メールを生成します。
長い顧客からのネガティブ(これもChatGPTが判断)なレビューに対して、指示に従って返信メールを生成します。
temperatureについての解説と、回答メール生成での活用を紹介しています。
temperatureは回答のランダム性を表しており、temperature=0の時は同じ入力なら同じ回答を出力。数値が大きくなるほど同じ入力に対して異なる結果が出力されます。
Chatbot
チャット形式を利用して、特定のタスクや行動に合わせてパーソナライズまたは特化されたチャットボットとの会話を拡張する方法を探ります。
ChatCompletion APIにどのようなmessageを送ればよいのか、仕組みと合わせて解説しています。
ユースケースはピザレストランのオーダー受付ボット。
(※そういえばかつてWatson Assistantのサンプルもビザの注文受付だった。アメリカでは鉄板ユースケースなのか)
まとめ
「for Developers」とある通り、アプリケーション開発のための迅速なエンジニアリングのベストプラクティスを学ぶということで、これからSemantic Kernelでツール開発に取り掛かろうとしていた私にはうってつけのコンテンツでした。
安定したフォーマットで回答を得るコツやイテレーティブなプロンプトの開発について学べました。
LLMを使ったアプリケーション開発を考えているエンジニアの方は、一度見ておいて損はない気がします。
すぐに動かせるPythonコード付きで、至れり尽くせりでした。ありがとうございます!