Slide 1

Slide 1 text

ChatGPT Prompt Engineering for Developers 受講体験記(15分版) nikkie, 2023/05社内勉強会で発表

Slide 2

Slide 2 text

今回のモチベーション ● DeepLearning.AIの短期コース「ChatGPT Prompt Engineering for Developers」、非常に勉強になったのでご紹介 ○ developer向け=どうアプリケーションにするか( researcher向けではない) ● 受講者の体験ベースで共有 ● 勉強会(30分枠)の後半はハンズオンタイム(各自興味あるとこ触ってみる)にした く、文字が多いページは一部に絞ると思います

Slide 3

Slide 3 text

https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/

Slide 4

Slide 4 text

ChatGPT Prompt Engineering for Developers メタデータ ● Beginner to Advanced ● 英語動画(英語書き起こしあり)+ サンプルコード ● 1時間半 ● Free for a limited time(期間限定無料) ● 講師:Andrew Ng先生、OpenAIのIsa Fulfordさん ● 5/2時点で20万人受講登録したらしい(Ng先生ツイート)

Slide 5

Slide 5 text

どんな講座なの? ● Learn prompt engineering best practices for application development ○ 「アプリケーション開発のためのプロンプトエンジニアリングのベストプラクティスを学べる 」 ● Gain hands-on practice writing and iterating on prompts yourself using the OpenAI API ○ 環境構築や前準備不要 でプロンプトエンジニアリングを試せる ○ 受講者にはAPIキーすらいらないところが、まさに In partnership with OpenAI!!

Slide 6

Slide 6 text

講座画面(Learn for freeからサインインした先)

Slide 7

Slide 7 text

書き起こし (英語)はこ こから

Slide 8

Slide 8 text

環境変数OPENAI_API_KEYに有 効なキーを設定するコード。 OpenAIのAPIキーの取得不要で始 められます

Slide 9

Slide 9 text

受講者の声(N=1) ● DeepLearning.AIの「ChatGPT Prompt Engineering for Developers」を視聴し終 えました。LLM時代の見取り図 得たり!勝ったなガハハ! - nikkie-ftnextの日記 ● 見取り図 ○ プロンプトエンジニアリングのベストプラクティス ■ 入力の構造化の仕方 ■ 出力も構造化して機械可読できるようにする! ○ 1つのモデルで解けるタスクの全体感 ■ これはたしかに”自然言語処理の終わり ”だ ■ しかもインターフェースが自然言語=誰でも使える

Slide 10

Slide 10 text

講座の内容 (1時間半) ● Introduction (6:28) ● Guidelines for Prompting (17:35) ● Iterative Prompt Development (13:19) ● Summarizing (7:33) ● Inferring (12:01) ● Transforming (12:42) ● Expanding (6:49) ● Building a Chatbot (12:25) ● Conclusion (2:28)

Slide 11

Slide 11 text

Introduction ● https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/1/introduction ● この講座はInstruction Tuned LLMのベストプラクティスにフォーカス ○ 開発者向けInstruction Tuned LLMの使い方 ● 2種類のLLM (Large Language Model) ○ Base LLM: 次の語を予測 ■ What is the capital of France? -> 同様の質問文を生成 ○ Instruction Tuned LLM: Base LLM + RLHF ■ What is the capital of France? -> フランスの首都を返せる

Slide 12

Slide 12 text

Guidelines for Prompting ● https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/2/guidelines ● 2つの原則 (principle) 1. Write clear and specific instructions ■ 「明確で具体的な指示」、 clearはshortではない(むしろ長くなる) 2. Give the model time to "think" ■ 「モデルに"考える"時間を与える」 ● いくつかの戦術 (tactic) ○ (次スライドに抜粋)

Slide 13

Slide 13 text

Guidelines for Prompting(承前)全容はAppendixへ 1. Write clear and specific instructions:4つの戦術を紹介 2. Give the model time to "think”:2つの戦術を紹介 ● いくつかの戦術 (tactic) (hallucination対策の追加戦術) ○ 雑にまとめると、入力も出力も構造化する ○ 入力の構造化 ■ 処理対象のテキストを delimiterで区切る(1-1。兼プロンプトインジェクション対策) ■ タスクを解くのに必要な手順を明確にする( 2-1。例:まず要約して、次に翻訳して) ○ 出力の構造化 ■ JSONで返すようお願い(1-2。Pythonのjson.loadsできる) ■ 出力フォーマットを指定( 2-1。出力に表記ゆれがなくなる ->後続処理で扱いやすい) ■ タスクに必要な仮定をチェックさせてから解かせる( 1-3。早期リターンのイメージ)

Slide 14

Slide 14 text

Iterative Prompt Development ● https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/3/iterative ● プロンプトを反復的に(Iterative)カイゼンしていくアプローチ ○ タスクを解いてもらうプロンプトには一発では至れない ○ IMO:これもまたフィードバックループだ! ● 商品の説明を生成するタスクで、反復的にプロンプトをカイゼンする例 ○ 生成された説明が長すぎる -> 語数の上限指定 ○ 誤った詳細にフォーカス -> フォーカスする箇所を指定 ● プロンプトを決めるまではtemperatureは0 ○ ヘルパー関数の実装でしれっと指定されている ○ たしかに仮説検証しやすそう(「いまのプロンプトのこの部分がいけないんじゃないか」) ○ temperatureについてはExpandingが分かりやすい

Slide 15

Slide 15 text

LLMで解けるタスクの一覧(講座の内容スライドを編集) ● Introduction ● Guidelines for Prompting ● Iterative Prompt Development ● Summarizing ● Inferring ● Transforming ● Expanding ● Building a Chatbot ● Conclusion

Slide 16

Slide 16 text

Summarizing ● https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/4/summarizing ● 商品レビューを要約する例(パンダのおもちゃ) ● 目的を伝えた上で要約をお願い ○ 送料についてフィードバックを得たい ○ 値段についてフィードバックを得たい ○ IMO:LLMとペアになって、動的に要約を得るアプリケーションの可能性あるのでは? ● summarizeの代わりにextract

Slide 17

Slide 17 text

Inferring ● https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/5/inferring ● 分類や抽出など推論できる! ○ 感情分析(ポジ/ネガ) ○ 名前の抽出 ● 興味深かったテクニック ○ 感情分析「positiveかnegativeの1語で回答してください」 -> 表記ゆれしない ○ 感情/トピックを最大 5つ抽出(カンマ区切りで返して) ○ 候補トピックのリストを渡し、それぞれ 0/1で返させる(zero-shotでマルチラベル分類!) ○ 複数タスクを1プロンプトにまとめて お願いできる(JSONで構造化して返してもらう)

Slide 18

Slide 18 text

Transforming ● https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/6/transforming ● テキストの変換 ● 言語間の変換 ○ 翻訳 ○ (言語も検出できる) ● 言語内の変換 ○ トーン(フォーマル・インフォーマル) ○ 文法誤り訂正、スペル訂正 ○ JSONやHTMLなどの相互変換

Slide 19

Slide 19 text

Expanding ● https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/7/expanding ● 短いテキストから長いテキストを生成(拡張) ● temperatureの説明、分かりやすい ○ temperature 0では確率最大の語しか出なくなる(=再現性) ● Ng先生「please use it only in a responsible way and in a way that helps people」 ○ スパムのような負の側面にも言及

Slide 20

Slide 20 text

Building a Chatbot ● https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/8/chatbot ● ここまでのプロンプトに対してチャット形式 ○ ここまでは1 mesageだった(role=userのプロンプトのみ) ○ 複数のmessageによるcontextをOpenAI APIに送ってチャット ● 脱線:プロンプトエンジニアリング手法にはrole=systemを使うものもある ○ 参考例:TypeScriptではじめるChatGPT API:入門から一歩進んだテクニックまで - Uzabase for Engineers ○ この講座としてはrole=userの1 messageっぽい ■ delimiterを使うことでプロンプトインジェクション対策できているということかも! ○ 現状(2023/05)はいくつかの流派あり(うまくいくなら何でも正義のように感じる)

Slide 21

Slide 21 text

受講体験記まとめ(ただしN=1) ● ChatGPT Prompt Engineering for Developersはいいぞ(無料のうちにぜひ) ● プロンプトエンジニアリングの原則や戦術を学べた ● LLMで解けるタスクの全体感を掴めた ● 開発者向けというのはそのとおりで、LLMの出力を構造化し、後続のプログラムで 扱いやすくする! ○ IMO:アプリケーション開発でちょっと賢い機能が Web APIを使って簡単に追加できる時代になって しまった ● 広く開発者におすすめ

Slide 22

Slide 22 text

ご清聴ありがとうございました ● ぜひ手を動かしましょう。Enjoy! ● https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-de velopers/ 以降はAppendixです

Slide 23

Slide 23 text

Guidelines for Promptingで紹介された戦術(tactics)一覧 1. Write clear and specific instructions a. Use delimiters to clearly indicate distinct parts of the input(区切り文字) b. Ask for a structured output(出力形式指定) c. Ask the model to check whether conditions are satisfied(手順を含んでいたら形式変換。いな かったら「手順の提供なし」と出力) d. "Few-shot" prompting(正解を数例与える。例:子供とおじいさんの対話例を 1例与えて、例と一貫 したスタイルでLLMに回答をお願いする) 2. Give the model time to "think” a. Specify the steps required to complete a task(手順明示) b. Instruct the model to work out its own solution before rushing to a conclusion(生徒の回答を採 点するようなタスクのような場合も、採点前に一度 LLMに解いてもらう) ● hallucination対策の追加戦術 ○ First find relevant information, then answer the question based on the relevant information(関 連する情報を見つけ、それをもとに回答してもらう)

Slide 24

Slide 24 text

Appendix: 同種の共有 ● はてなブックマークで見かけたもの ● ChatGPT Prompt Engineering for Developersまとめ|mah_lab / 西見 公宏 ● 開発者のためのチャットGPTプロンプトエンジニアリング講座が公開されていたの で眺めてみた - Qiita ● Andrew Ng先生+ChatGPT本家のプロンプト開発講座が無料で公開されていま す! - Qiita