HUOXIU

大規模なモデルテンプレートに効果的なプロンプトを作成するにはどうすればよいでしょうか。コンテスト優勝者が共有する経験談(基礎)。

編集者注:近年、プロンプトエンジニアリングを通して大規模モデルのポテンシャルを最大限に引き出す方法が注目を集めています。プロンプトエンジニアリングの手法を用いて大規模モデルを効果的かつコスト効率よく活用する方法への注目が高まっています。


本日お勧めする記事では、プロンプト エンジニアリングは芸術と科学を融合した分野であり、技術的背景の理解と創造性および戦略的思考の応用の両方が必要であると主張しています。


このシリーズの記事では、シンガポールで開催された第1回GPT-4プロンプトエンジニアリングコンペティションで著者が使用した戦略と手法について詳しく説明します。具体的には、CO-STARフレームワークを用いたプロンプトの構築、区切り文字を用いた意味単位の定義、システムプロンプトを利用した行動制約の追加、データセット分析におけるGPT-4のみの利用などです。これらの手法はすべて例を通して検証されており、プロンプトエンジニアリングの重要性を実証しています。


この記事は、初心者向けのプロンプトテクニックを紹介するシリーズの第1弾です。上級者向けの戦略については、次の記事で詳しく説明しますので、お楽しみに!

著者 | シーラ・テオ

編纂者:岳陽

先月、私はシンガポール政府技術庁(GovTech)が主催し、400人を超える優秀な参加者を集めたシンガポール初のGPT-4プロンプトエンジニアリングコンテストで賞を受賞するという栄誉に浴しました。

プロンプトエンジニアリングは、芸術と科学を融合させた分野です。テクノロジーの理解だけでなく、創造性と戦略的思考も求められます。以下は、私が学習中に学んだプロンプトエンジニアリングの戦略をまとめたものです。これらの戦略は、あらゆる大規模言語モデル(LLM)を要件を正確に実行し、さらにはそれを超える成果へと導くことができます。

著者注:

この記事を執筆するにあたり、オンラインで広く議論され、文書化されている従来のプロンプトエンジニアリング手法を避けるよう努めました。その代わりに、この記事の目的は、私が実験を通して得た新たな知見と、特定の手法に対する異なる理解を紹介することです。この記事を楽しんでいただければ幸いです。

このシリーズの記事には以下の内容が含まれており、🔵 は初心者に適した迅速なテクニック、🔴 は高度な戦略を示しています (詳細は近日中に公開されます)。

1. [🔵] CO-STAR フレームワークを使用してプロンプトを構築します。

2. [🔵] 区切り文字を使用してプロンプトをセクションに分割します。

3. [🔴] LLMガードレールを使用してシステムプロンプトを作成します。 (翻訳者注:「ガードレール」とは、大規模言語モデルによって生成されたコンテンツが特定の標準または要件に準拠していることを保証し、不正確、不適切、または有害な情報の生成を防止するために使用される保護メカニズムまたは制限を指します。)

4. [🔴] LLM のみを使用してデータセットを分析する (プラグインやコードは不要) – このセクションでは、GPT-4 を使用して実際の Kaggle データセットを分析する実用的な例を紹介します。

01 [🔵] CO-STARフレームワークを使用してプロンプトを構築する

LLMから最適な回答を得るには、効果的な質問文の構成が不可欠です。シンガポール政府科学技術庁のデータサイエンス・人工知能チームが考案したCO-STARフレームワークは、質問文を作成するための便利なテンプレートとして機能します。このフレームワークは、LLM回答の有効性と関連性に影響を与えるすべての主要な側面を考慮しており、LLM回答を効果的に最適化します。

CO-STARフレームワーク — 著者による画像

その動作原理は次のとおりです。

  • (C) コンテキスト: タスクの背景情報を提供します。
    これにより、LLM は議論が行われている特定の状況を理解し、応答が適切であることを保証できます。
  • (O) 目的: LLM に実行させたいタスクを決定します。
    目標とタスクを明確に定義することで、LLM は特定のタスクの達成に応答を集中させることができます。
  • (S) スタイル: LLM プログラムに必要なライティング スタイルを指定します。
    著名人の文体、あるいはビジネスアナリストやCEOといった特定分野の専門家の文体に設定できます。これにより、LLMはユーザーのニーズに合った適切な表現で回答できるようになります。
  • (T)トーン: ユーザーのプロンプトに応答する際の大規模モデルの態度を決定する必要があります。
    これにより、LLMの応答が、求められる感情や状況(例えば、フォーマル、ユーモラス、共感など)に合致したものになります。
  • (A) オーディション:回答の受信者を決定します。
    LLM の回答を回答者の身元(分野の専門家、初心者、子供など)に合わせて調整し、必要なコンテキストで適切かつ理解しやすいものにします。
  • (R) 応答: LLM 応答の形式を提供します。
    この機能により、LLMは下流のタスクに必要な形式で出力できます。例えば、リスト、JSON(JavaScript Object Notation)、専門的なレポートなどです。JSON出力は、下流のLLMレスポンスをプログラムで操作するほとんどのLLMアプリケーションに最適です。

1.1 CO-STARの実用的応用

CO-STARフレームワークがなぜ役立つのか、実例を挙げてご紹介します。あなたはソーシャルメディアマネージャーで、会社の新製品を宣伝するためのFacebook投稿の作成に助けが必要な状況を想定してみましょう。

CO-STAR を使用しないプロンプトは次のようになります。

会社の新製品を宣伝するFacebook投稿をお願いします。会社名はAlphaで、製品はBetaという超高速ヘアドライヤーです。

GPT-4の出力結果は次のとおりです。

Alpha の革新的な Beta ヘアドライヤーをご紹介します。

- 長くて面倒なヘアドライヤーとはおさらば!Alphaは、ヘアケア技術における最新のイノベーション、Betaを発表できることを誇りに思います。

- 超高速乾燥:Betaは、先進的でパワフルなモーターを搭載し、乾燥時間を半分に短縮します。より早く準備を整えて、好きなことにもっと時間を費やしましょう!

今すぐ購入: [商品ページへのリンク]

コンテンツは十分でしたが、出力は非常に一般的であり、他の製品と比較して、会社の視聴者の共感を得るために必要な微妙な差別化とターゲットを絞った訴求力が欠けていました。

以下は CO-STAR フレームワークの使用例です。この使用例では、ターゲット タスクに関する追加情報、特に以前のクイック プロンプトに欠けていた STYLE、TONE、AUDIENCE などの情報をプロンプトに追加するように通知します。

# コンテクスト #

会社の新製品を宣伝したいと思っています。会社名は「アルファ」で、製品は「ベータ」という超高速ヘアドライヤーです。


#客観的#

人々が製品リンクをクリックして購入するように促す Facebook 投稿を作成してください。


#スタイル#

ダイソンなど、同様の製品を宣伝している成功した企業の文章スタイルに従ってください。


#トーン#

説得力のある


#観客#

当社のFacebookユーザープロフィールは、主に高齢者層です。この層がヘアケア製品に求めるものに合わせて投稿を調整してください。


# 応答 #

Facebook の投稿は、簡潔ながらもインパクトのあるものでした。

CO-STAR フレームワークを使用することで、GPT-4 応答はよりターゲットを絞った効果的なものになります。

賢い世代のための超高速ヘアドライヤー、Alpha Beta で、気楽なエレガンスを手に入れましょう。


アルファベータで、シンプルで効果的なヘアケアの喜びを再発見してください。私たちの最新のイノベーションは、単なるヘアドライヤーではありません。素早く、優しく、そして

人生のより良いものを大切にする人のための信頼できるヘアスタイリング。


- 簡単で直感的な操作:複雑なガジェットとはお別れしましょう。Alpha Betaは

快適さとシンプルさを重視したデザインで、

手間のかからないテクノロジー。

- 時間節約テクノロジー:お客様のお時間は貴重です。だからこそ、Alpha Betaは乾燥時間を大幅に短縮し、人生の喜びを味わう時間を増やします。


アルファベータで毎日を素敵なヘアデーに。

今日の洗練さとシンプルさ。

[ここに製品リンク]

CO-STAR フレームワークは、タスクに関連するすべての重要な情報を LLM に体系的に提供し、ニーズに基づいてカスタマイズされ最適化された回答を提供できるようにガイドします。

02 [🔵] 区切り文字を使用してプロンプトをセクションに分割する

DALL·E 3によって生成された画像

区切り文字は、LLMがプロンプトを複数の部分に分割し、どの部分が意味の単位を構成するかを判断するために使用する特別なトークンです。これは、プロンプト全体が長いトークンの文字列としてLLMに入力されるため重要です。プロンプトの特定の部分を分割し、それぞれ異なる処理を施すことで、区切り文字はトークンのシーケンス全体に論理的な構造を提供します。

単純なタスクの場合、区切り記号はLLM応答の質に影響を与えない可能性があることは注目に値します。しかし、タスクが複雑になるほど、区切り記号がLLM応答に与える影響は大きくなります。

2.1特殊文字を区切り文字として使用する

区切り文字は、通常は一緒に現れないような特別な文字の並びで構いません。例えば、

  • ###
  • ===
  • >>>

選択された特殊文字の数と種類は、LLM がそれらを通常の句読点ではなくコンテンツ区切りとして解釈できるほど十分に一意である限り、重要ではありません。

次の例は、プロンプトでこのタイプのセパレーターを使用する方法を示しています。

<<<CONVERSATIONS>>>内の各会話の感情を次のように分類します。

「ポジティブ」または「ネガティブ」。他の前置きテキストなしで感情の分類を指定します。


###


会話例


[エージェント]: おはようございます。本日はどのようなご用件でしょうか?

[顧客]: この製品はひどいです。宣伝されていたものとは全く違います!

[顧客]: 非常にがっかりしており、全額返金を期待しています。


[エージェント]: おはようございます。本日はどのようなご用件でしょうか?

[顧客]: こんにちは。あなたの製品にとても感銘を受けたとお伝えしたかったのです。

製品。期待以上でした!


###


出力例


ネガティブ


ポジティブ


###


<<<

[エージェント]: こんにちは!サポートへようこそ。本日はどのようなご用件でしょうか?

[お客様]: こんにちは!注文品が届きましたのでお知らせします。

素晴らしいですね!

[エージェント]: それは嬉しいですね!ご購入にご満足いただけて大変嬉しく思います。

他に何かお手伝いできることはございますか?

[お客様]: いいえ、それだけです。ただ、ポジティブなフィードバックをお伝えしたかっただけです。ありがとうございます。

素晴らしいサービスに感謝します!


[エージェント]: こんにちは。お問い合わせいただきありがとうございます。本日はどのようなご用件でしょうか?

[お客様]: 最近購入した商品にとてもがっかりしました。全く期待外れでした。

[エージェント]: 申し訳ございません。もう少し詳しく教えていただけますか?

[お客様]: 商品の品質が悪く、到着も遅れました。本当に残念です。

この経験には満足していません。

>>>

上記の例では、区切り文字 ### を使用してコンテンツを区切っており、「EXAMPLE CONVERSATIONS」と「EXAMPLE OUTPUTS」という見出しは大文字で他のコンテンツと区別されています。感情分析が必要な対話は「<<<CONVERSATIONS>>>」内にグループ化され、プロンプトの下部で説明テキストなしでLLMに直接提供されます。しかし、「<<<」と「>>>」という区切り文字があるため、LLMはこれらの対話に対して感情分析を実行する必要があることを認識しています。

以下は GPT-4 からの出力です。感情分析の結果のみが他の雑多なコンテンツなしで直接出力されており、まさに私たちが要求したとおりです。

ポジティブ

ネガティブ

2.2 XMLタグを区切り文字として使用する

XMLタグを区切り文字として使用する方法もあります。XMLタグは山括弧で囲まれたタグで、開始タグと終了タグが含まれます。例えば、`<tag>`と`</tag>`です。大規模言語モデル(LLM)は多くのXML形式のWebコンテンツで学習されており、この形式を理解することを学習しているため、このアプローチは非常に効果的です。

以下は同じプロンプトですが、構造を構築するために XML タグを区切り文字として使用しています。

以下の会話の感情を、与えられた例を用いて2つのクラスに分類してください。感情の分類は、他の要素を考慮せずに記述してください。

前文のテキスト。


<クラス>

ポジティブ

ネガティブ

</クラス>


<会話の例>

[エージェント]: おはようございます。本日はどのようなご用件でしょうか?

[顧客]: この製品はひどいです。宣伝されていたものとは全く違います!

[顧客]: 非常にがっかりしており、全額返金を期待しています。


[エージェント]: おはようございます。本日はどのようなご用件でしょうか?

[顧客]: こんにちは。あなたの製品にとても感銘を受けたとお伝えしたかったのです。

製品。期待以上でした!

</会話の例>


<例クラス>

ネガティブ


ポジティブ

</example-classes>


<会話>

[エージェント]: こんにちは!サポートへようこそ。本日はどのようなご用件でしょうか?

[お客様]: こんにちは!注文品が届きましたのでお知らせします。

素晴らしいですね!

[エージェント]: それは嬉しいですね!ご購入にご満足いただけて大変嬉しく思います。

他に何かお手伝いできることはございますか?

[お客様]: いいえ、それだけです。ただ、ポジティブなフィードバックをお伝えしたかっただけです。ありがとうございます。

素晴らしいサービスに感謝します!


[エージェント]: こんにちは。お問い合わせいただきありがとうございます。本日はどのようなご用件でしょうか?

[お客様]: 最近購入した商品にとてもがっかりしました。期待していたものと違っていました。

まったく予想通りだ。

[エージェント]: 申し訳ございません。もう少し詳しく教えていただけますか?

手伝ってもらえますか?

[お客様]: 商品の品質が悪く、到着も遅れました。本当に残念です。

この経験には満足していません。

</会話>

XMLタグでは、説明文で使用している名詞と同じ名詞を使用することをお勧めします。上記のプロンプトで提供している説明は以下の通りです(この記事では、「説明」とは、前述のプロンプトで示されている具体的な手順またはルールを指します)

以下の会話の感情を、与えられた例を用いて2つのクラスに分類してください。感情の分類は、他の要素を考慮せずに記述してください。

前文のテキスト。


指示書では「会話」、「クラス」、「例」という用語を使用しました。そのため、区切り文字として使用できるXMLタグは、`<conversations>`、`<classes>`、`<example-conversations>`、`<example-classes>`です。これにより、LLMは指示書と区切り文字として使用されるXMLタグの関係を理解できるようになります。


同様に、これらの区切り文字を使用することで、命令を明確かつ秩序正しく分割することができ、GPT-4 が要件に応じて正確に回答を生成できるようになります。

ポジティブ

ネガティブ


読んでくれてありがとう!


次回の記事では、LLMガードレールを用いたシステムプロンプトの作成方法や、LLMプロンプトワードを用いたデータセットの分析方法など、高度なテクニックをご紹介します。それでは次回!

終わり