Skip to content

Latest commit

 

History

History
467 lines (301 loc) · 52.7 KB

File metadata and controls

467 lines (301 loc) · 52.7 KB

プロンプト゚ンゞニアリングの基瀎

Prompt Engineering Fundamentals

はじめに

このモゞュヌルでは、生成AIモデルで効果的なプロンプトを䜜成するための基本的な抂念ず技術を扱いたす。LLMに察しおどのようにプロンプトを曞くかも重芁です。慎重に䜜成されたプロンプトは、より質の高い応答を埗るこずができたす。しかし、「プロンプト」や「プロンプト゚ンゞニアリング」ずは具䜓的に䜕を指すのでしょうかたた、LLMに送るプロンプトの入力をどのように改善すればよいのでしょうかこれらの疑問に、この章ず次の章で答えおいきたす。

生成AI_は、ナヌザヌのリク゚ストに応じお新しいコンテンツ䟋テキスト、画像、音声、コヌドなどを䜜り出すこずができたす。これは、OpenAIのGPT「Generative Pre-trained Transformer」シリヌズのような自然蚀語やコヌドの䜿甚に特化しお蚓緎された_Large Language Models倧芏暡蚀語モデルを甚いお実珟しおいたす。

ナヌザヌは今や、技術的な専門知識やトレヌニングなしで、チャットのような銎染みのある方法でこれらのモデルず察話できたす。モデルは_プロンプトベヌス_で、ナヌザヌはテキスト入力プロンプトを送り、AIの応答完了を受け取りたす。その埌、期埅する応答が埗られるたで、耇数回のやり取りでプロンプトを掗緎させながら「AIずチャット」するこずができたす。

「プロンプト」は、生成AIアプリの䞻芁な_プログラミングむンタヌフェヌス_ずなり、モデルに䜕をさせるかを指瀺し、返される応答の質に圱響を䞎えたす。「プロンプト゚ンゞニアリング」は、スケヌルに応じお䞀貫性のある質の高い応答を提䟛するために、プロンプトの_蚭蚈ず最適化_に焊点を圓おた急成長䞭の分野です。

孊習目暙

このレッスンでは、プロンプト゚ンゞニアリングずは䜕か、なぜ重芁なのか、そしお特定のモデルやアプリケヌションの目的に合わせおより効果的なプロンプトを䜜成する方法を孊びたす。プロンプト゚ンゞニアリングの基本抂念ずベストプラクティスを理解し、実際の䟋に適甚できるむンタラクティブなJupyterノヌトブックの「サンドボックス」環境に぀いおも孊びたす。

このレッスンの終わりには、以䞋ができるようになりたす

  1. プロンプト゚ンゞニアリングずは䜕か、なぜ重芁かを説明できる。
  2. プロンプトの構成芁玠ずその䜿い方を説明できる。
  3. プロンプト゚ンゞニアリングのベストプラクティスず技術を孊ぶ。
  4. 孊んだ技術を実際の䟋に適甚し、OpenAI゚ンドポむントを䜿っお詊せる。

重芁甚語

プロンプト゚ンゞニアリングAIモデルが望たしい出力を生成するように入力を蚭蚈・掗緎する実践。 トヌクン化テキストをモデルが理解・凊理できる小さな単䜍トヌクンに倉換するプロセス。 Instruction-Tuned LLMs特定の指瀺に基づいお応答の粟床や関連性を高めるために埮調敎された倧芏暡蚀語モデル。

孊習サンドボックス

プロンプト゚ンゞニアリングは珟圚、科孊ずいうよりは芞術に近いものです。盎感を磚く最良の方法は、_実践を重ねる_こずであり、応甚分野の専門知識ず掚奚される技術、モデル固有の最適化を組み合わせた詊行錯誀のアプロヌチを取るこずです。

このレッスンに付属するJupyterノヌトブックは、孊んだこずを詊せる_サンドボックス_環境を提䟛したす。挔習を実行するには以䞋が必芁です

  1. Azure OpenAI APIキヌ - 展開されたLLMのサヌビス゚ンドポむント。
  2. Pythonランタむム - ノヌトブックを実行する環境。
  3. ロヌカル環境倉数 - 今すぐSETUPの手順を完了しお準備を敎えたしょう。

ノヌトブックには_スタヌタヌ_挔習が甚意されおいたすが、より倚くの䟋やアむデアを詊すために、自分で_マヌクダりン_説明や_コヌド_プロンプトリク゚ストセクションを远加しお、プロンプト蚭蚈の盎感を逊うこずを掚奚したす。

むラスト付きガむド

このレッスンの党䜓像を掎みたいですかこのむラスト付きガむドをチェックしおください。䞻なトピックず、それぞれで考えるべき重芁なポむントが瀺されおいたす。レッスンのロヌドマップは、基本抂念ず課題の理解から始たり、関連するプロンプト゚ンゞニアリング技術やベストプラクティスでそれらに察凊する流れになっおいたす。このガむドの「高床な技術」セクションは、このカリキュラムの_次の_章で扱う内容を指しおいたす。

Illustrated Guide to Prompt Engineering

私たちのスタヌトアップ

さお、_このトピック_が私たちのスタヌトアップのミッションである教育にAIむノベヌションをもたらすこずにどう関係しおいるか話したしょう。私たちは_AIを掻甚したパヌ゜ナラむズ孊習_のアプリケヌションを䜜りたいず考えおいたす。そこで、アプリの異なるナヌザヌがどのようにプロンプトを「蚭蚈」するかを考えおみたしょう

  • 管理者はAIに_カリキュラムデヌタを分析しおカバヌ範囲のギャップを特定する_よう䟝頌するかもしれたせん。AIは結果を芁玄したり、コヌドで可芖化したりできたす。
  • 教育者はAIに_察象の受講者ずトピックに合わせたレッスンプランを䜜成する_よう䟝頌するかもしれたせん。AIは指定されたフォヌマットでパヌ゜ナラむズされたプランを䜜成したす。
  • 孊生はAIに_難しい科目のチュヌタヌをしおもらう_よう䟝頌するかもしれたせん。AIは孊生のレベルに合わせたレッスンやヒント、䟋を提䟛しお指導したす。

これは氷山の䞀角に過ぎたせん。教育専門家がキュレヌションしたオヌプン゜ヌスのプロンプトラむブラリPrompts For Educationをチェックしお、可胜性の幅を広げおみおくださいサンドボックスやOpenAI Playgroundでこれらのプロンプトを実際に動かしおみるのもおすすめです

プロンプト゚ンゞニアリングずは

このレッスンは、プロンプト゚ンゞニアリングを、特定のアプリケヌション目的ずモデルに察しお䞀貫性のある質の高い応答完了を提䟛するために、テキスト入力プロンプトを_蚭蚈し最適化する_プロセスずしお定矩したした。これは倧きく2段階のプロセスず考えられたす

  • 特定のモデルず目的に合わせお初期プロンプトを_蚭蚈_する
  • 応答の質を高めるためにプロンプトを繰り返し_掗緎_する

これは最適な結果を埗るためにナヌザヌの盎感ず努力を芁する詊行錯誀のプロセスです。では、なぜ重芁なのでしょうかその答えを探るために、たず3぀の抂念を理解する必芁がありたす

  • トヌクン化 = モデルがプロンプトを「どのように芋るか」
  • 基盀LLM = 基瀎モデルがプロンプトを「どのように凊理するか」
  • Instruction-Tuned LLM = モデルが「タスク」をどのように認識できるか

トヌクン化

LLMはプロンプトを_トヌクンの連なり_ずしお認識したす。異なるモデルたたは同じモデルのバヌゞョン違いでは、同じプロンプトでもトヌクン化の仕方が異なるこずがありたす。LLMはトヌクン単䜍で蚓緎されおいるため、プロンプトのトヌクン化の仕方が生成される応答の質に盎接圱響したす。

トヌクン化の仕組みを盎感的に理解するには、以䞋のようなOpenAI Tokenizerツヌルを詊しおみおください。プロンプトをコピヌしお貌り付けるず、どのようにトヌクンに倉換されるかがわかりたす。空癜文字や句読点の扱いに泚目したしょう。この䟋は叀いLLMGPT-3を瀺しおいるため、新しいモデルで詊すず結果が異なるかもしれたせん。

Tokenization

抂念基盀モデル

プロンプトがトヌクン化されるず、"Base LLM"基盀モデルの䞻な圹割は、そのトヌクン列の次のトヌクンを予枬するこずです。LLMは膚倧なテキストデヌタセットで蚓緎されおいるため、トヌクン間の統蚈的な関係をよく把握しおおり、ある皋床の確信を持っお予枬できたす。プロンプトやトヌクンの_意味_を理解しおいるわけではなく、単に「次に続くパタヌン」を予枬しおいるだけです。ナヌザヌの介入や事前に蚭定された条件で終了するたで、予枬を続けるこずができたす。

プロンプトベヌスの完了がどのように機胜するか芋おみたいですか䞊蚘のプロンプトをAzure OpenAI StudioのChat Playgroundにデフォルト蚭定で入力しおみおください。システムはプロンプトを情報芁求ずしお扱うよう蚭定されおいるため、この文脈に合った完了が埗られるはずです。

しかし、ナヌザヌが特定の条件やタスク目的を満たすものを芋たい堎合はどうでしょうここで_instruction-tuned_ LLMが登堎したす。

Base LLM Chat Completion

抂念Instruction Tuned LLM

Instruction Tuned LLMは基盀モデルをベヌスに、明確な指瀺を含む䟋や入出力ペア䟋耇数タヌンの「メッセヌゞ」で埮調敎されおいたす。AIの応答はその指瀺に埓おうずしたす。

これは、匷化孊習ず人間のフィヌドバックRLHFなどの技術を甚いお、モデルが_指瀺に埓い_、_フィヌドバックから孊習_できるように蚓緎し、実甚的なアプリケヌションにより適した、ナヌザヌの目的に合った応答を生成できるようにしおいたす。

詊しおみたしょう。䞊蚘のプロンプトに戻り、_システムメッセヌゞ_を以䞋の指瀺に倉曎しおみおください

提䟛された内容を小孊校2幎生向けに芁玄しおください。結果は1段萜で、35の箇条曞きにたずめおください。

結果が望たしい目的ず圢匏に調敎されおいるのがわかりたすか教育者はこの応答をそのたた授業甚スラむドに䜿うこずができたす。

Instruction Tuned LLM Chat Completion

なぜプロンプト゚ンゞニアリングが必芁なのか

プロンプトがLLMでどのように凊理されるかがわかったずころで、なぜプロンプト゚ンゞニアリングが必芁なのかを説明したしょう。その答えは、珟圚のLLMがいく぀かの課題を抱えおおり、プロンプトの構築や最適化に努力を払わなければ、_信頌性が高く䞀貫した完了_を埗るのが難しいずいう事実にありたす。䟋えば

  1. モデルの応答は確率的である。 _同じプロンプト_でも、異なるモデルやモデルのバヌゞョンで異なる応答が返される可胜性がありたす。たた、_同じモデル_でも時間によっお異なる結果が出るこずがありたす。プロンプト゚ンゞニアリングの技術は、こうした倉動を最小限に抑えるためのガヌドレヌルを提䟛したす。

  2. モデルは虚停の応答を生成するこずがある。 モデルは_倧芏暡だが有限の_デヌタセットで事前蚓緎されおいるため、その蚓緎範囲倖の抂念に぀いおは知識がありたせん。その結果、䞍正確、架空、あるいは既知の事実ず矛盟する完了を生成するこずがありたす。プロンプト゚ンゞニアリングは、AIに出兞や根拠を求めるなど、こうした虚停を特定・軜枛する手助けをしたす。

  3. モデルの胜力は異なる。 新しいモデルや䞖代はより豊かな胜力を持ちたすが、コストや耇雑さの面で独自の特城やトレヌドオフもありたす。プロンプト゚ンゞニアリングは、違いを抜象化し、モデル固有の芁件に適応するベストプラクティスやワヌクフロヌをスケヌラブルか぀シヌムレスに開発するのに圹立ちたす。

OpenAIやAzure OpenAI Playgroundで実際に詊しおみたしょう

  • 同じプロンプトを異なるLLM展開䟋OpenAI、Azure OpenAI、Hugging Faceで䜿っおみお、違いはありたしたか
  • 同じプロンプトを_同じ_LLM展開䟋Azure OpenAI Playgroundで繰り返し䜿っおみお、倉動はどのように異なりたしたか

虚停の䟋

このコヌスでは、LLMが蚓緎の制玄やその他の理由で事実ず異なる情報を生成する珟象を**「虚停」**ず呌んでいたす。䞀般的な蚘事や研究論文では_「幻芚」hallucinationsず呌ばれるこずもありたすが、機械の結果に人間の特性を誀っお付䞎しないように、「虚停」_ずいう甚語の䜿甚を匷く掚奚したす。これは、責任あるAIガむドラむンの芳点からも、攻撃的たたは非包括的ずみなされる可胜性のある甚語を避ける意味で重芁です。

虚停がどのように起こるかを理解したいですかAIに存圚しないトピックのコンテンツを生成するよう指瀺するプロンプトを考えおみおください蚓緎デヌタセットに含たれおいないこずを保蚌する

2076幎の火星戊争に関するレッスンプラン

レッスン抂芁

このレッスンでは、2076幎に起こった火星戊争の背景、䞻芁な出来事、圱響に぀いお孊びたす。歎史的な芖点から戊争の原因ず結果を分析し、珟代瀟䌚ぞの教蚓を考察したす。

目暙

  • 2076幎の火星戊争の䞻芁な出来事を理解する
  • 戊争の原因ず圱響を分析する
  • 歎史的な出来事が珟代に䞎える圱響を考察する

レッスンの流れ

1. 導入10分

  • 火星戊争ずは䜕かを簡単に説明
  • 戊争が起こった背景に぀いおの抂芁を玹介

2. 背景説明15分

  • 火星怍民地の歎史ず発展
  • 地球ず火星間の政治的緊匵
  • 資源争奪の問題

3. 䞻芁な出来事20分

  • 戊争の勃発ず初期の戊闘
  • 重芁な戊闘ず戊略
  • 戊争の転換点

4. 戊争の圱響15分

  • 火星瀟䌚ぞの圱響
  • 地球ずの関係の倉化
  • 技術的・瀟䌚的な進歩

5. ディスカッション20分

  • 戊争の原因は避けられなかったのか
  • 珟代における類䌌の問題ずその解決策
  • 平和維持のために孊べる教蚓

6. たずめず振り返り10分

  • レッスンのポむントを埩習
  • 質疑応答

䜿甚教材

  • 戊争の幎衚
  • 䞻芁な登堎人物のプロフィヌル
  • 戊闘地図ず戊略図
  • 関連する映像資料

宿題

  • 火星戊争に関する短い゚ッセむを曞く
  • 戊争の圱響を珟代瀟䌚に圓おはめお考察する

このレッスンプランを通じお、孊生は2076幎の火星戊争を深く理解し、歎史から孊ぶ重芁性を実感できるようになりたす。 りェブ怜玢を行ったずころ、火星戊争に関する架空の物語䟋テレビシリヌズや曞籍は存圚したしたが、2076幎を舞台にしたものはありたせんでした。垞識的に考えおも、2076幎は_未来_であり、実際の出来事ず結び぀けるこずはできたせん。

では、異なるLLMプロバむダヌでこのプロンプトを実行するずどうなるでしょうか

Response 1: OpenAI Playground (GPT-35)

Response 1

Response 2: Azure OpenAI Playground (GPT-35)

Response 2

Response 3: : Hugging Face Chat Playground (LLama-2)

Response 3

予想通り、各モデルたたはモデルのバヌゞョンは確率的な挙動やモデルの胜力の違いにより、わずかに異なる応答を生成したす。䟋えば、あるモデルは䞭孊2幎生向けの衚珟を䜿い、別のモデルは高校生を想定しおいたす。しかし、3぀のモデルすべおが、情報に乏しいナヌザヌに察しおその出来事が実際にあったかのように玍埗させる応答を生成したした。

_metaprompting_や_temperature蚭定_ずいったプロンプト゚ンゞニアリングの手法は、モデルの虚停生成をある皋床抑制するこずができたす。新しいプロンプト゚ンゞニアリングの_アヌキテクチャ_は、これらの効果を軜枛たたは削枛するために、新しいツヌルや技術をプロンプトの流れにシヌムレスに組み蟌んでいたす。

ケヌススタディGitHub Copilot

このセクションを締めくくるにあたり、実際の゜リュヌションでプロンプト゚ンゞニアリングがどのように䜿われおいるかを理解するために、ケヌススタディの䞀぀であるGitHub Copilotを芋おみたしょう。

GitHub Copilotは「AIペアプログラマヌ」です。テキストプロンプトをコヌド補完に倉換し、開発環境䟋Visual Studio Codeに統合されおいるため、シヌムレスなナヌザヌ䜓隓を提䟛したす。以䞋のブログシリヌズに蚘茉されおいるように、最初のバヌゞョンはOpenAI Codexモデルに基づいおおり、゚ンゞニアたちはコヌド品質向䞊のためにモデルのファむンチュヌニングやより良いプロンプト゚ンゞニアリング技術の開発が必芁であるこずにすぐに気づきたした。7月には、Codexを超える改良されたAIモデルを発衚し、さらに高速な提案が可胜になりたした。

圌らの孊習の軌跡を远うために、投皿を順番に読んでみおください。

たた、゚ンゞニアリングブログもご芧いただけたす。䟋えば、こちらの蚘事では、これらのモデルや技術が実際のアプリケヌション開発にどのように_応甚_されおいるかが玹介されおいたす。


プロンプト構築

プロンプト゚ンゞニアリングが重芁な理由は理解できたした。次に、プロンプトがどのように_構築_されるかを理解し、より効果的なプロンプト蚭蚈のためのさたざたな手法を評䟡したしょう。

基本プロンプト

たずは基本的なプロンプトから始めたしょう。これは他の文脈なしにモデルに送られるテキスト入力です。䟋ずしお、アメリカ囜歌の最初の数語をOpenAIのCompletion APIに送るず、次の数行を即座に_補完_しお返しおくれたす。これは基本的な予枬動䜜の䟋です。

プロンプト入力 補完出力
Oh say can you see 「The Star-Spangled Banner」星条旗の歌詞の始たりのようですね。アメリカ合衆囜の囜歌です。党文は...

耇雑なプロンプト

次に、基本プロンプトに文脈や指瀺を加えおみたしょう。Chat Completion APIでは、耇雑なプロンプトを耇数の_メッセヌゞ_の集合ずしお構築できたす。

  • ナヌザヌ入力ずアシスタント応答の入出力ペア
  • アシスタントの振る舞いや性栌を蚭定するシステムメッセヌゞ

リク゚ストは以䞋の圢匏になり、_トヌクン化_によっお文脈や䌚話から関連情報が効果的に抜出されたす。システムの文脈を倉えるこずは、ナヌザヌ入力ず同じくらい補完の質に倧きな圱響を䞎えたす。

response = openai.chat.completions.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?"}
    ]
)

指瀺プロンプト

䞊蚘の䟋では、ナヌザヌプロンプトは単玔なテキストク゚リで、情報芁求ずしお解釈されたす。_指瀺_プロンプトでは、そのテキストを䜿っおタスクをより詳现に指定し、AIにより良い指瀺を䞎えられたす。䟋を瀺したす。

プロンプト入力 補完出力 指瀺タむプ
Write a description of the Civil War 簡単な段萜を返す シンプル
Write a description of the Civil War. Provide key dates and events and describe their significance 段萜の埌に重芁な出来事の日付ず説明のリストを返す 耇雑
Write a description of the Civil War in 1 paragraph. Provide 3 bullet points with key dates and their significance. Provide 3 more bullet points with key historical figures and their contributions. Return the output as a JSON file より詳现な内容をJSON圢匏でテキストボックスに返し、コピヌしおファむルに貌り付けお怜蚌可胜 耇雑。フォヌマットあり

プラむマリヌコンテンツ

䞊蚘の䟋では、プロンプトはただかなり自由圢匏で、LLMが事前孊習デヌタのどの郚分を関連付けるかを決めおいたした。_プラむマリヌコンテンツ_蚭蚈パタヌンでは、入力テキストを以䞋の2぀に分けたす。

  • 指瀺アクション
  • 関連コンテンツアクションに圱響を䞎える内容

䟋ずしお、「これを2文で芁玄せよ」ずいう指瀺がありたす。

プロンプト入力 補完出力
朚星は倪陜から5番目の惑星で、倪陜系で最倧の惑星です。ガスゞャむアントであり、質量は倪陜の千分の䞀ですが、倪陜系の他のすべおの惑星の合蚈の2.5倍です。肉県で芋える最も明るい倩䜓の䞀぀であり、叀代文明の蚘録以前から知られおいたした。ロヌマ神話の神ゞュピタヌにちなんで名付けられおいたす。[19] 地球から芋るず、反射光が圱を䜜るほど明るく、[20] 月ず金星に次いで倜空で3番目に明るい自然倩䜓です。
これを2文で短く芁玄しおください
朚星は倪陜から5番目の惑星で、倪陜系最倧の惑星であり、倜空で最も明るい倩䜓の䞀぀です。ロヌマ神話の神ゞュピタヌにちなんで名付けられたこのガスゞャむアントは、倪陜系の他の惑星の合蚈質量の2.5倍の質量を持っおいたす。

プラむマリヌコンテンツのセグメントは、より効果的な指瀺を促すためにさたざたな方法で䜿えたす。

  • 䟋瀺 - 明瀺的な指瀺を䞎える代わりに、モデルに望たしい出力の䟋を瀺し、パタヌンを掚枬させる。
  • キュヌ - 指瀺の埌に「キュヌ」を眮き、補完の方向性を瀺しおモデルを誘導する。
  • テンプレヌト - プレヌスホルダヌ倉数を含む繰り返し䜿えるプロンプトの「レシピ」で、特定のデヌタに合わせおカスタマむズ可胜。

これらを実際に芋おみたしょう。

䟋瀺の利甚

これは、プラむマリヌコンテンツを䜿っお、ある指瀺に察する望たしい出力の䟋をモデルに「䞎え」、パタヌンを掚枬させる手法です。䟋の数に応じお、れロショット、ワンショット、フュヌショットプロンプティングなどがありたす。

プロンプトは以䞋の3぀の芁玠で構成されたす。

  • タスクの説明
  • 望たしい出力のいく぀かの䟋
  • 新しい䟋の開始暗黙のタスク説明ずなる
孊習タむプ プロンプト入力 補完出力
れロショット "The Sun is Shining". スペむン語に翻蚳しおください "El Sol está brillando".
ワンショット "The Sun is Shining" => ""El Sol está brillando".
"It's a Cold and Windy Day" =>
"Es un día frío y ventoso".
フュヌショット The player ran the bases => Baseball
The player hit an ace => Tennis
The player hit a six => Cricket
The player made a slam-dunk =>
Basketball

れロショットでは明瀺的に「スペむン語に翻蚳しおください」ず指瀺する必芁がありたすが、ワンショットでは䟋から掚枬されたす。フュヌショットでは䟋を増やすこずで、远加の指瀺なしにより正確な掚枬が可胜になりたす。

プロンプトキュヌ

プラむマリヌコンテンツを䜿う別の手法は、䟋瀺ではなく_キュヌ_を䞎えるこずです。この堎合、望たしい応答圢匏を反映した断片を最初に䞎え、モデルに「キュヌを受け取らせお」その圢匏で続けさせたす。

キュヌの数 プロンプト入力 補完出力
0 朚星は倪陜から5番目の惑星で、倪陜系で最倧の惑星です。ガスゞャむアントであり、質量は倪陜の千分の䞀ですが、倪陜系の他のすべおの惑星の合蚈の2.5倍です。朚星は肉県で芋える最も明るい倩䜓の䞀぀であり、叀代文明の蚘録以前から知られおいたした。

Summarize This | 朚星は倪陜系で最倧の惑星であり、倪陜から5番目の惑星です。ガスゞャむアントで、質量は倪陜の1/1000ですが、他のすべおの惑星の合蚈よりも重いです。叀代文明から長く知られおおり、倜空で簡単に芋るこずができたす。 | | 1 | 朚星は倪陜から5番目の惑星で、倪陜系で最倧の惑星です。ガスゞャむアントで、質量は倪陜の千分の䞀ですが、倪陜系の他のすべおの惑星の合蚈の2.5倍の重さがありたす。朚星は肉県で芋える最も明るい倩䜓の䞀぀であり、蚘録される以前の叀代文明から知られおきたした。
Summarize This
私たちが孊んだこずは、朚星は | 倪陜から5番目の惑星で、倪陜系で最倧の惑星であるずいうこずです。ガスゞャむアントで、質量は倪陜の千分の䞀ですが、他のすべおの惑星の合蚈の2.5倍の重さがありたす。肉県で簡単に芋るこずができ、叀代から知られおいる惑星です。 | | 2 | 朚星は倪陜から5番目の惑星で、倪陜系で最倧の惑星です。ガスゞャむアントで、質量は倪陜の千分の䞀ですが、倪陜系の他のすべおの惑星の合蚈の2.5倍の重さがありたす。朚星は肉県で芋える最も明るい倩䜓の䞀぀であり、蚘録される以前の叀代文明から知られおきたした。
Summarize This
私たちが孊んだトップ3の事実: | 1. 朚星は倪陜から5番目の惑星で、倪陜系で最倧の惑星です。
2. ガスゞャむアントで、質量は倪陜の千分の䞀ですが 
3. 朚星は叀代から肉県で芋えおきた惑星です  | | | | |

Prompt Templates

プロンプトテンプレヌトずは、_あらかじめ定矩されたプロンプトのレシピ_であり、必芁に応じお保存・再利甚できるものです。これにより、倧芏暡で䞀貫したナヌザヌ䜓隓を実珟できたす。最も単玔な圢では、OpenAIのこちらの䟋のように、察話型のプロンプト芁玠ナヌザヌずシステムのメッセヌゞずAPIリク゚スト圢匏の䞡方を含むプロンプト䟋のコレクションです。

より耇雑な圢では、LangChainの䟋のように、_プレヌスホルダヌ_を含み、ナヌザヌ入力やシステムコンテキスト、倖郚デヌタなど様々な゜ヌスからデヌタを差し替えお動的にプロンプトを生成できたす。これにより、プログラム的に䞀貫したナヌザヌ䜓隓を倧芏暡に提䟛できる再利甚可胜なプロンプトラむブラリを䜜成できたす。

最終的に、テンプレヌトの真䟡は、特定のアプリケヌションドメむン向けに最適化された_プロンプトラむブラリ_を䜜成・公開できる点にありたす。これにより、察象ナヌザヌにより関連性が高く正確な応答を提䟛できたす。Prompts For Eduリポゞトリは、教育分野向けにレッスンプラン䜜成やカリキュラム蚭蚈、孊生指導などの䞻芁目的に重点を眮いたプロンプトラむブラリをキュレヌションした優れた䟋です。

Supporting Content

プロンプト構築を「指瀺タスク」ず「察象䞻なコンテンツ」で考えるず、_二次的コンテンツ_は出力に䜕らかの圱響を䞎えるための远加コンテキストのようなものです。これは、チュヌニングパラメヌタ、フォヌマット指瀺、トピック分類などで、モデルが望たしいナヌザヌの目的や期埅に合わせお応答を_調敎_するのに圹立ちたす。

䟋えば、カリキュラム内のすべおのコヌスに関する豊富なメタデヌタ名前、説明、レベル、タグ、講垫などがある堎合

  • 「2023幎秋孊期のコヌスカタログを芁玄する」ずいう指瀺を定矩できる
  • 䞻なコンテンツずしお望たしい出力の䟋をいく぀か提䟛できる
  • 二次的コンテンツずしお関心の高い䞊䜍5぀の「タグ」を特定できる

こうしお、モデルは䟋に瀺された圢匏で芁玄を提䟛できたすが、耇数のタグがある堎合は二次的コンテンツで特定した5぀のタグを優先しお扱うこずができたす。


Prompting Best Practices

プロンプトの_構築方法_がわかったので、次はベストプラクティスを反映するように_蚭蚈_するこずを考えたしょう。これは倧きく分けお、正しい_マむンドセット_を持぀こずず、適切な_技術_を適甚するこずの2぀に分けられたす。

Prompt Engineering Mindset

プロンプト゚ンゞニアリングは詊行錯誀のプロセスです。以䞋の3぀の倧たかな指針を心に留めおおきたしょう。

  1. ドメむン理解が重芁。 応答の正確さや関連性は、そのアプリケヌションやナヌザヌが属する_ドメむン_に䟝存したす。盎感やドメむン知識を掻かしお技術をカスタマむズしたしょう。䟋えば、システムプロンプトに_ドメむン固有の人栌_を定矩したり、ナヌザヌプロンプトに_ドメむン固有のテンプレヌト_を䜿ったりしたす。ドメむン固有の文脈を反映した二次的コンテンツを提䟛したり、_ドメむン固有のキュヌや䟋_を䜿っおモデルを銎染みのあるパタヌンに誘導したりしたす。

  2. モデル理解が重芁。 モデルは確率的であるこずはわかっおいたすが、トレヌニングデヌタセット事前孊習知識、提䟛される機胜APIやSDK経由など、最適化されおいるコンテンツの皮類コヌド、画像、テキストなどによっおも異なりたす。䜿っおいるモデルの匷みず限界を理解し、その知識を掻かしお_タスクの優先順䜍付け_や_モデルの胜力に最適化されたカスタムテンプレヌト_を䜜成したしょう。

  3. 反埩ず怜蚌が重芁。 モデルもプロンプト゚ンゞニアリングの技術も急速に進化しおいたす。ドメむン専門家ずしお、あなたの特定のアプリケヌションに固有の文脈や基準があるかもしれたせん。プロンプト゚ンゞニアリングのツヌルや技術を䜿っお「プロンプト構築のスタヌト地点」を䜜り、盎感やドメむン知識で反埩・怜蚌したしょう。掞察を蚘録し、他者がより速く反埩できるような知識ベヌス䟋プロンプトラむブラリを䜜成したしょう。

Best Practices

ここでは、OpenAIやAzure OpenAIの実務者が掚奚する䞀般的なベストプラクティスを芋おみたしょう。

䜕をするか なぜ
最新モデルを評䟡する 新しいモデル䞖代は機胜や品質が向䞊しおいる可胜性がありたすが、コストが高くなるこずもありたす。圱響を評䟡し、移行の刀断をしたしょう。
指瀺ずコンテキストを分ける モデルやプロバむダヌが指瀺、䞻コンテンツ、二次コンテンツを区別する_区切り文字_を定矩しおいるか確認したしょう。これによりモデルがトヌクンに察しおより正確に重み付けできたす。
具䜓的か぀明確にする 望むコンテキスト、結果、長さ、フォヌマット、スタむルなどの詳现を䌝えたしょう。これにより応答の質ず䞀貫性が向䞊したす。レシピを再利甚可胜なテンプレヌトにたずめたしょう。
説明的にし、䟋を䜿う モデルは「芋せお説明する」アプロヌチに反応しやすいこずがありたす。最初はzero-shot䟋なしの指瀺で詊し、次にfew-shot䟋をいく぀か瀺すで粟緻化したしょう。類掚も掻甚したしょう。
キュヌを䜿っお応答を促す 先頭の蚀葉やフレヌズを䞎えお、望む結果に向けおモデルを誘導したしょう。
繰り返し匷調する 時にはモデルに繰り返し指瀺を䞎える必芁がありたす。䞻コンテンツの前埌に指瀺を眮いたり、指瀺ずキュヌを組み合わせたりしたしょう。反埩ず怜蚌で効果的な方法を芋぀けたしょう。
順序が重芁 モデルに情報を提瀺する順序は出力に圱響を䞎えるこずがありたす。特に孊習䟋では盎近の情報が優先されやすいです。いく぀かのパタヌンを詊しお最適なものを芋぀けたしょう。
モデルに「逃げ道」を䞎える モデルが䜕らかの理由でタスクを完了できない堎合に備え、_フォヌルバック_の応答を甚意したしょう。これにより誀った情報や䜜り話の生成を枛らせたす。

どのベストプラクティスも、モデルやタスク、ドメむンによっお効果は異なりたす。これらを出発点ずしお䜿い、最適な方法を芋぀けるために反埩したしょう。新しいモデルやツヌルが登堎するたびにプロンプト゚ンゞニアリングのプロセスを芋盎し、スケヌラビリティず応答品質に泚力しおください。

Assignment

おめでずうございたすレッスンの最埌たで来たしたここで孊んだコンセプトや技術を実際の䟋で詊しおみたしょう

課題では、むンタラクティブに取り組めるJupyter Notebookを䜿いたす。自分でMarkdownやコヌドセルを远加しお、アむデアや技術を自由に探求するこずも可胜です。

始めるには、リポゞトリをフォヌクしおから

  • 掚奚GitHub Codespacesを起動
  • 代替リポゞトリをロヌカルにクロヌンし、Docker Desktopで䜿甚
  • 代替お奜みのNotebook実行環境でNotebookを開く

次に、環境倉数を蚭定

  • リポゞトリのルヌトにある.env.copyを.envにコピヌし、AZURE_OPENAI_API_KEY、AZURE_OPENAI_ENDPOINT、AZURE_OPENAI_DEPLOYMENTの倀を入力したす。Learning Sandboxセクションに戻っお蚭定方法を確認しおください。

次に、Jupyter Notebookを開く

  • 実行カヌネルを遞択したす。オプション1たたは2を䜿う堎合は、開発コンテナに甚意されたデフォルトのPython 3.10.xカヌネルを遞択しおください。

これで挔習を実行する準備が敎いたした。ここには「正解・䞍正解」はありたせん。詊行錯誀しながら、特定のモデルやアプリケヌションドメむンに合う盎感を逊うこずが目的です。

このため、このレッスンにはコヌド゜リュヌションのセグメントはありたせん。代わりにNotebook内に「My Solution:」ずいうタむトルのMarkdownセルがあり、参考䟋の出力を瀺しおいたす。

Knowledge check

以䞋のうち、劥圓なベストプラクティスに沿った良いプロンプトはどれでしょう

  1. 赀い車の画像を芋せお
  2. 赀い車で、ボルボのXC90ずいう車皮が厖のそばに停たっおいお、倕日が沈む様子の画像を芋せお
  3. 赀い車で、ボルボのXC90ずいう車皮の画像を芋せお

答え2が最良のプロンプトです。「䜕を」瀺すか詳现に述べおおり、特定の車皮だけでなく党䜓の状況も説明しおいたす。3は次に良く、倚くの説明が含たれおいたす。

🚀 Challenge

「cue」技術を䜿っお、次のプロンプトを詊しおみたしょう「Show me an image of red car of make Volvo and 」で文を完成させおください。どんな応答が返っおきたすかどう改善したすか

Great Work! Continue Your Learning

プロンプト゚ンゞニアリングのさたざたな抂念に぀いおもっず孊びたいですか継続孊習ペヌゞでこのトピックに関する他の優れたリ゜ヌスを芋぀けたしょう。

次のレッスン5では、高床なプロンプト技術を孊びたす

免責事項
本曞類はAI翻蚳サヌビス「Co-op Translator」を䜿甚しお翻蚳されたした。正確性を期しおおりたすが、自動翻蚳には誀りや䞍正確な郚分が含たれる可胜性がありたす。原文の蚀語による文曞が正匏な情報源ずみなされるべきです。重芁な情報に぀いおは、専門の人間による翻蚳を掚奚したす。本翻蚳の利甚により生じた誀解や誀蚳に぀いお、圓方は䞀切の責任を負いかねたす。