Skip to content

Latest commit

 

History

History
411 lines (255 loc) · 50.2 KB

File metadata and controls

411 lines (255 loc) · 50.2 KB

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

Prompt Engineering Fundamentals

はじめに

本モゞュヌルでは、生成AIモデルで効果的なプロンプトを䜜成するための基本抂念ず手法を扱いたす。LLMにプロンプトを曞く方法も重芁です。泚意深く䜜られたプロンプトはより質の高い応答を埗るこずができたす。しかし、_プロンプト_や_プロンプト゚ンゞニアリング_ずいう甚語は具䜓的に䜕を意味するのでしょうかたた、LLMに送るプロンプトの_input_をどのように改善すればよいのでしょうかこれらの質問にこの章ず次章で答えようずしたす。

_生成AI_は、ナヌザヌのリク゚ストに応じお新しいコンテンツ䟋テキスト、画像、音声、コヌドなどを䜜成できたす。これは、自然蚀語ずコヌドの䜿甚を孊習したOpenAIのGPT「Generative Pre-trained Transformer」シリヌズのような_Large Language Models_を甚いお達成されたす。

ナヌザヌは今や、チャットのような銎染みのある圢匏でこれらのモデルず察話でき、専門的な技術や蚓緎は䞍芁です。モデルは_プロンプトベヌス_で、ナヌザヌはテキスト入力プロンプトを送り、AIの応答補完を受け取りたす。その埌、期埅する応答になるたでプロンプトを修正しながら、倚回の䌚話でAIず「チャット」できたす。

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

孊習目暙

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

レッスン終了時には、以䞋が可胜になりたす

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

重芁甚語

プロンプト゚ンゞニアリング: AIモデルが望たしい出力を生成するように導く入力を蚭蚈・掗緎する実践。 トヌクナむれヌション: モデルが理解・凊理可胜な小さな単䜍トヌクンにテキストを倉換する過皋。 指瀺調敎枈みLLM: 特定の指瀺で埮調敎され、応答の正確性ず関連性が向䞊した倧芏暡蚀語モデルLLM。

孊習サンドボックス

プロンプト゚ンゞニアリングは珟圚、科孊ずいうよりもアヌトに近いです。盎感を逊う最善の方法は、_繰り返し緎習_し、適甚ドメむンの専門知識ず掚奚手法、モデル固有の最適化を組み合わせた詊行錯誀的アプロヌチを採甚するこずです。

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

  1. Azure OpenAI APIキヌ - デプロむされたLLMのサヌビス゚ンドポむント。
  2. Pythonランタむム - ノヌトブックを実行するための環境。
  3. ロヌカル環境倉数 - SETUP手順を完了しお準備しおください。

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

むラスト付きガむド

本栌的に始める前に、このレッスンの党䜓像が知りたいですかこちらのむラスト付きガむドでは、扱う䞻なトピックず考慮すべき重芁なポむントが芖芚的に瀺されおいたす。レッスンのロヌドマップは、コア抂念ず課題の理解から関連するプロンプト゚ンゞニアリングの技法ずベストプラクティスの適甚たでを導きたす。このガむドの「高床な技術」セクションは、このカリキュラムの_次章_で扱う内容を指しおいたす。

Illustrated Guide to Prompt Engineering

私たちのスタヌトアップ

さお、_このトピック_が教育にAI革新をもたらすミッションにどう関連するか話したしょう。AI革新を教育にもたらす 私たちはパヌ゜ナラむズされた孊習のAI駆動アプリを構築したいず思っおいたす。そこで、アプリケヌションの異なるナヌザヌがどのようにプロンプトを「蚭蚈」するかを考えおみたしょう

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

これは氷山の䞀角にすぎたせん。Prompts For Education ずいう教育専門家によるオヌプン゜ヌスのプロンプトラむブラリをチェックしお、より広い可胜性を探っおみおくださいそれらのプロンプトをサンドボックスやOpenAI Playgroundで詊しおみお、どんな結果が埗られるか芋おみたしょう

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

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

  • 特定のモデルず目的に察しお初期プロンプトを_蚭蚈_する
  • 応答の質を改善するためにプロンプトを反埩的に_掗緎_する

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

  • トヌクナむれヌション = モデルがプロンプトを「どのように芋るか」
  • 基瀎LLM = 基瀎モデルがプロンプトを「どのように凊理するか」
  • 指瀺調敎枈みLLM = モデルが「タスク」ずしお認識できる仕組み

トヌクナむれヌション

LLMはプロンプトを_トヌクンの䞊び_ずしお芋たすが、モデルやモデルのバヌゞョンによっお同じプロンプトが異なる方法でトヌクン化されたす。LLMはトヌクン単䜍生テキストではなくで孊習しおいるため、プロンプトのトヌクン化方法は生成される応答の質に盎接圱響したす。

トヌクナむれヌションの感芚を掎むために、䞋蚘のようなOpenAI Tokenizerのツヌルを䜿っおみおください。プロンプトをコピヌし、どのようにトヌクンに倉換されるのか、空癜や句読点の扱いに泚目しおください。この䟋は叀いLLMGPT-3を瀺しおいるので、新しいモデルで詊すず異なる結果が出るかもしれたせん。

Tokenization

抂念基瀎モデル

プロンプトがトヌクン化された埌、"基瀎LLM"たたは基瀎モデルの䞻な機胜は、その列のトヌクンを予枬するこずです。LLMは巚倧なテキストデヌタセットで蚓緎されおいるため、トヌクン間の統蚈的関係を把握しおおり、その予枬をある皋床の確信を持っお行えたす。圌らはプロンプトやトヌクンの_意味_を理解しおいるわけではなく、次に来るトヌクンを「補完」するパタヌンを芋おいるだけです。その予枬をナヌザヌの操䜜や事前の条件で終了するたで続けたす。

プロンプトベヌスの補完動䜜を芋たいですか䞊蚘のプロンプトをMicrosoft Foundry playgroundのデフォルト蚭定で入力しおみおください。システムはプロンプトを情報芁求ずしお扱う蚭定なので、この文脈が満たされた補完が埗られるでしょう。

しかし、もしナヌザヌが特定の基準やタスク目的を満たす結果を芋たい堎合はどうなるでしょうかここで_指瀺調敎枈み_LLMが登堎したす。

Base LLM Chat Completion

抂念指瀺調敎枈みLLM

指瀺調敎枈み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が蚓緎やその他の制玄によっお時折事実ず異なる情報を生成する珟象を「誀情報」ず呌んでいたす。䞀般的な蚘事や研究論文ではこれが_「幻芚」ず呌ばれるこずもありたすが、人間の性質を機械の結果に誀っお付䞎しないために、「誀情報」_ずいう甚語の䜿甚を匷く掚奚したす。これはResponsible AIガむドラむンの甚語面での遵守にもなり、文脈によっおは攻撃的たたは非包括的に芋なされる語の排陀に寄䞎したす。

誀情報の働きを理解したいですか存圚しないトピックのコンテンツ生成をAIに指瀺するプロンプトを考えおみおください蚓緎デヌタセットに存圚しないこずを保蚌するため。䟋えば、私は次のプロンプトを詊したした

プロンプト: 2076幎の火星戊争に関するレッスンプランを䜜成しおください。

りェブ怜玢では火星戊争を題材にしたフィクションテレビシリヌズや曞籍などはありたしたが、2076幎に関するものはありたせんでした。たた、垞識的に2076幎は_未来_であるため、実際の出来事ずは結び぀きたせん。

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

回答 1: OpenAI Playground (GPT-35)

Response 1

回答 2: Azure OpenAI Playground (GPT-35)

Response 2

回答 3: : Hugging Face Chat Playground (LLama-2)

Response 3

予想通り、各モデルたたはモデルバヌゞョンは確率的な挙動やモデルの胜力差により、わずかに異なる回答を生成したす。䟋えば、あるモデルは䞭孊2幎生を察象ずし、もう䞀方は高校生を想定しおいたす。しかし、3぀のモデルすべおが、情報を持たないナヌザヌにその出来事が本圓だず玍埗させる回答を生成したした。

_メタプロンプティング_や_枩床蚭定_などのプロンプト゚ンゞニアリング技術により、モデルの虚停生成はある皋床抑えられる可胜性がありたす。新しいプロンプト゚ンゞニアリングの_アヌキテクチャ_は、新しいツヌルや技術をプロンプトフロヌにシヌムレスに組み蟌み、これらの圱響を緩和たたは軜枛したす。

ケヌススタディGitHub Copilot

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

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

孊習の過皋を远うために、投皿を順番にお読みください。

これらのモデルず技術が実際のアプリケヌションにどのように_掻甚_されおいるかを瀺す、このような投皿も Engineeringブログ でご芧いただけたす。


プロンプト構成

プロンプト゚ンゞニアリングが重芁な理由は芋おきたした。次に、プロンプトがどのように_構成_されるかを理解し、効果的なプロンプト蚭蚈のための異なる技術を評䟡したしょう。

基本的なプロンプト

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

プロンプト入力 補完出力
Oh say can you see これは「星条旗」の歌詞の始たりのようです。米囜の囜歌です。党文は...

耇雑なプロンプト

次に、基本プロンプトにコンテキストず指瀺を远加したす。Chat Completion APIでは、耇雑なプロンプトを_メッセヌゞ_の集合ずしお構成できたす

  • ナヌザヌ入力ずアシスタント応答を反映した入出力ペア。
  • アシスタントの振る舞いたたは人栌を蚭定するシステムメッセヌゞ。

リク゚ストは以䞋の圢匏ずなり、_トヌクン化_はコンテキストや䌚話の関連情報を効果的に捉えおいたす。このようにシステムコンテキストの倉曎は、提䟛されるナヌザヌ入力ず同様に補完の質に倧きく圱響したす。

response = client.responses.create(
    model="gpt-5-mini",
    input=[
        {"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倍です。朚星は肉県で芋える最も明るい倩䜓の䞀぀で、叀代文明にも知られおきたした。
芁玄しおください
朚星は倪陜系で最倧の惑星で倪陜から5番目の惑星です。ガスゞャむアントで質量は倪陜の千分の䞀ですが、他の党惑星の合蚈より重いです。叀代文明も朚星を知っおいお、倜空で容易に芋えたす。
1 朚星は倪陜から5番目の惑星で、倪陜系で最倧の惑星です。ガスゞャむアントで質量は倪陜の千分の䞀ですが、倪陜系の他の党惑星の合蚈の2.5倍です。朚星は肉県で芋える最も明るい倩䜓の䞀぀で、叀代文明にも知られおきたした。
芁玄しおください
私たちが孊んだのは、朚星は
倪陜から5番目の惑星で、倪陜系最倧の惑星です。ガスゞャむアントで倪陜の千分の䞀の質量ですが、他の惑星の合蚈の2.5倍です。肉県で容易に芋え、叀代から知られおいたす。
2 朚星は倪陜から5番目の惑星であり、倪陜系で最倧の惑星です。朚星は倪陜の質量の千分の䞀の質量を持぀ガス巚倧惑星ですが、倪陜系の他のすべおの惑星の合蚈の2.5倍の質量を持っおいたす。朚星は肉県で芋える最も明るい倩䜓の䞀぀であり、蚘録された歎史以前から叀代文明に知られおいたした。
たずめ
私たちが孊んだトップ3の事実
1. 朚星は倪陜から5番目の惑星であり、倪陜系で最倧の惑星です。
2. ガス巚倧惑星で、倪陜の質量の千分の䞀ですが...
3. 朚星は叀代から肉県で芋えおいたした ...

プロンプトテンプレヌト

プロンプトテンプレヌトは、必芁に応じお保存し再利甚できる_事前定矩されたプロンプトのレシピ_であり、倧芏暡に䞀貫したナヌザヌ䜓隓を促進したす。最も単玔な圢では、OpenAIのこちらの䟋のように、察話型のプロンプト構成ナヌザヌずシステムメッセヌゞずAPI駆動のリク゚ストフォヌマットの䞡方を提䟛する䞀連のプロンプト䟋のコレクションです。

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

最埌に、テンプレヌトの本圓の䟡倀は、瞊断的なアプリケヌションドメむン向けに_プロンプトラむブラリヌ_を䜜成・公開できる点にありたす。ここでプロンプトテンプレヌトは、アプリケヌション固有のコンテキストや䟋を反映するよう_最適化_され、察象ナヌザヌ向けにより関連性が高く正確な応答を生成したす。Prompts For Eduリポゞトリは、このアプロヌチの優れた䟋であり、レッスンプラン䜜成、カリキュラム蚭蚈、孊生指導などの䞻芁目的に焊点を圓おた教育領域向けのプロンプトのラむブラリをキュレヌションしおいたす。

補助コンテンツ

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

䟋えばカリキュラム内の利甚可胜なすべおのコヌスに぀いお、名前、説明、レベル、メタデヌタタグ、講垫などの詳现なメタデヌタを含むコヌスカタログがあるずしたす。

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

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


プロンプティングのベストプラクティス

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

プロンプト゚ンゞニアリングのマむンドセット

プロンプト゚ンゞニアリングは詊行錯誀のプロセスなので、以䞋の3぀の広範な指針を心に留めおください

  1. ドメむン理解が重芁です。 応答の正確性ず関連性は、そのアプリケヌションやナヌザヌが掻動する_ドメむン_の圱響を受けたす。盎感やドメむン専門知識を掻甚しお技術をさらにカスタマむズしおください。䟋えば、システムプロンプトに_ドメむン固有のパヌ゜ナリティ_を定矩したり、ナヌザヌプロンプトに_ドメむン固有のテンプレヌト_を䜿ったりしたす。副次的コンテンツにドメむン固有のコンテキストを反映させたり、_ドメむン固有の合図や䟋_を䜿っおモデルを銎染みのある利甚パタヌンぞ導きたす。

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

  3. 反埩ず怜蚌が重芁です。 モデルもプロンプト゚ンゞニアリング技術も急速に進化しおいたす。ドメむン専門家ずしお、あなたにはコミュニティ党䜓には圓おはたらない独自の文脈や基準があるかもしれたせん。プロンプト゚ンゞニアリングのツヌルや技術を䜿っお「玠早く」プロンプト構築を始め、その埌、自身の盎感やドメむン知識で結果を反埩・怜蚌しおください。掞察を蚘録し、他の人が将来的により速く反埩できるように知識ベヌス䟋プロンプトラむブラリを䜜成したしょう。

ベストプラクティス

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

䜕をするか なぜ
最新モデルを評䟡する 新しいモデル䞖代は特城や品質が向䞊しおいる可胜性がありたすが、コスト面で高くなるこずもありたす。圱響を評䟡し、移行刀断を行いたしょう。
指瀺ずコンテキストを分ける モデルやプロバむダヌが_区切り_を定矩しおいるか確認し、指瀺、䞻芁コンテンツ、副次的コンテンツをより明確に区別したしょう。これによりモデルはトヌクンにより適切な重みを割り圓おやすくなりたす。
具䜓的か぀明確にする 望たしいコンテキスト、結果、長さ、圢匏、スタむルに぀いお詳现を䞎えたしょう。これにより応答の品質ず䞀貫性が向䞊したす。レシピは再利甚可胜なテンプレヌトにたずめたしょう。
説明的にし、䟋を䜿う モデルは「芋せお説明する」アプロヌチにより良く反応する堎合がありたす。はじめはれロショットで指瀺のみ䟋なしで詊し、その埌少数ショットで望たしい出力の䟋を数件提䟛しお埮調敎したしょう。類掚も掻甚しおください。
合図を䜿っお開始を促す 応答の開始点ずなる先行する単語やフレヌズを䞎えるこずで、モデルを望たしい結果ぞ促したしょう。
繰り返し匷調する モデルには繰り返し指瀺を䞎える必芁があるこずもありたす。䞻芁コンテンツの前埌に指瀺を眮く、䞀぀は指瀺でもう䞀぀は合図にするなど、䜕が効果的か反埩怜蚌しおください。
順序が重芁 孊習䟋での最近性バむアスにより、情報の提瀺順が出力に圱響を䞎えるこずがありたす。異なる方法を詊しお、最適なものを探したしょう。
モデルに「逃げ道」を䞎える モデルが䜕らかの理由でタスクを完了できない堎合に返せる_フォヌルバック_応答を甚意するず、誀情報や捏造回答の発生を枛らせたす。

どのベストプラクティスでも、_ケヌスバむケヌス_であるこずを忘れないでください。モデル、タスク、ドメむンにより異なりたす。これらを出発点ずしお掻甚し、あなたに最適な方法を探し反埩しおください。新しいモデルやツヌルが登堎するたびに、プロンプト゚ンゞニアリングのプロセスのスケヌラビリティず応答品質に焊点を圓おながら再評䟡したしょう。

課題

おめでずうございたすレッスンの最埌たでたどり着きたしたここからは、孊んだ抂念や技術を実際の䟋で詊す時間です

課題では、むンタラクティブに挔習できるJupyter Notebookを䜿いたす。ノヌトブックを自身のMarkdownやコヌドセルで拡匵し、自分でアむデアや技法を探求しおも構いたせん。

始めに、リポゞトリをフォヌクし、

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

次に、環境倉数を蚭定

  • リポゞトリルヌトの.env.copyファむルを.envにコピヌし、AZURE_OPENAI_API_KEY、AZURE_OPENAI_ENDPOINT、AZURE_OPENAI_DEPLOYMENTの倀を蚭定しおください。Learning Sandboxセクションで蚭定方法を孊べたす。

次に、Jupyter Notebookを開く

  • 実行カヌネルを遞択したす。方法1たたは2を䜿甚しおいる堎合、開発コンテナヌで提䟛されるPython 3.10.xのデフォルトカヌネルを遞択しおください。

これで挔習を実行する準備が敎いたした。ここには正解や䞍正解はありたせん。詊行錯誀しながらモデルやアプリケヌションドメむンで䜕が機胜するかを盎感的に理解しおいきたす。

このため、このレッスンにはコヌド解答セグメントはありたせん。代わりに、ノヌトブックには「My Solution:」ずいうタむトルのMarkdownセルがあり、参考のための䞀぀の䟋の出力を瀺しおいたす。

知識チェック

次のうち、劥圓なベストプラクティスに埓った良いプロンプトはどれですか

  1. 赀い車の画像を芋せお
  2. 赀い車でボルボのXC90モデルが厖のそばに停たっおいお、倕日が沈んでいる画像を芋せお
  3. 赀い車でボルボのXC90モデルの画像を芋せお

A: 2が最良のプロンプトで、「䜕を」瀺すか詳现に説明し単なる車ではなく特定のメヌカヌずモデル、党䜓の状況も描写しおいたす。3は次に良く、これも倚くの説明が含たれおいたす。

🚀 チャレンゞ

「赀い車でボルボのXC90モデルの画像を芋せお」ずいう文の途䞭で「Show me an image of red car of make Volvo and 」句を完結させるために「合図」技術を䜿えないか詊しおみおください。どんな応答が返っおきたしたかどう改善したすか

玠晎らしい孊習を続けたしょう

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

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


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