表紙の画像には、1984 年に Apple Inc. が発売し、コンピュータ業界を変えたパーソナル コンピュータ、 Macintosh 128Kが描かれています。これには、象徴的な 32 ビットMotorola 68000プロセッサ、128 KB の RAM、そして控えめな白黒の内蔵ディスプレイが組み込まれていました。
さらに、マウスとそのクラス初のグラフィック ユーザー インターフェイス (現在の GUI の祖母) など、ゼロックス PARCからの驚くべき技術発明が直接統合されました。
70,000台以上が販売された Macintosh は、 Appleの成功において極めて重要な役割を果たしました。奇妙なことに、発表イベントは Mac 自体よりもさらに成功を収めました。著名なリドリー・スコットは、150万ドルの予算をかけて、オーウェルの象徴的な小説『1984年』を明確に暗示したテレビコマーシャルを監督し、この映画は傑作となり転機となった。
ほぼ 40 年後、有名な映画監督やテレビ コマーシャルもなく、単純な Web アプリケーションだけで、OpenAI はまだ実験的な言語モデルを採用し、それを世界に公開しました。この記事の残りの部分は見出しに掲載されています。ChatGPT は、発売からわずか 2 か月後の 1 月 23 日に月間アクティブ ユーザー数 1 億人に達し、史上最も急速に成長している消費者向けアプリケーション (TikTok や Instagram よりも速い) になりました。
現在、世界の注目が AI 業界に集まっており、毎週のように進歩が見られ、今年はこの分野にとって極めて重要な時期となることが予想されます。最も素晴らしいのは、あなたが AI 分野に参入し、人類の歴史におけるこの革命的な瞬間に参加するのにまだ間に合うということです。
プロンプト エンジニアリング 101 は、言語モデルをプロンプトして、探しているものを正確に取得するための、明確で効果的なテキストを作成する技術であるプロンプト エンジニアリングの原則とテクニックを明らかにするために設計および執筆された投稿シリーズです。このシリーズでは、ChatGPT やその他のテキスト間モデルを含む、幅広い生成モデルのプロンプト エンジニアリングについて説明します。また、Stable Diffusion や Midjourney などのテキストから画像へのモデルを調査し、幻覚、プライバシー、セキュリティの問題など、LLM の追加の側面を掘り下げます。
これはシリーズの#2の投稿で、プロンプト作成をマスターするための思考連鎖や自己一貫性などの高度なテクニックを取り上げます。あなたが楽しんでくれることを望みます!
プロンプト エンジニアリングに関するこのシリーズの最初の部分では、この技術の直観を掘り下げ、正式な定義を達成しました。基本的に、プロンプト エンジニアリングは、大規模言語モデルの明確で具体的なプロンプトを設計および最適化し、関連性があり、正確で一貫した応答が生成されるようにする反復的なプロセスです。
次に、効果的なプロンプトを作成するための 3 つの原則を検討しました。私たちは、明確で具体的な指示 (第 1 原則) が与えられたときにモデルがより良い応答を生成することを実証し、これを達成するためのいくつかの戦術について説明しました。次に、LLM が計算時間から恩恵を受けることを確立し、結論を急ぐ前にモデルに推論を強制するいくつかの戦術 (2 番目の原則) を取り上げました。最終的に、私たちは特異性と創造性の間のバランス (3 番目の原則) を調査し、温度とトップ P のパラメーターを実験してこのトレードオフを調査しました。
プロンプト エンジニアリングのより詳細な定義と基礎については、以下のリンクを参照してください (プロンプトの例が多数含まれています!!)。
GPT-3 や PaLM などの大規模LLM は、自然言語理解において優れた能力を示し、テキストから情報を抽出したり、一貫した人間のスタイルで応答を生成したりするタスクにおいて非常に効果的であることが証明されています。それでも、プロンプトにいくつかのショット例が含まれている場合、LLM は未知のタスクを非常に堅牢に実行できることが実証されました。このテクニックは、Brown らによって少数ショット プロンプトとして普及されました。 (2020) 、いくつかのベンチマークでモデルのパフォーマンスが向上することが調査されました。言うまでもなく、新しい特定のドメインに合わせてモデルを微調整するのにかかる費用と時間が節約されます。
ただし、このようなモデルでは、一般的な推論タスクや数学クイズのパフォーマンスが突然低下することが研究で証明されています。古代ギリシャの叙事詩『オデュッセイア』を完全に引用できるにもかかわらず、これらのモデルは論理と数学における学校の基本的な問題に苦労しています。
では、どのような選択肢があるのでしょうか? GPT-3 を小学校にシーズンごとに送りますか?幸いなことに、より安価で恥ずかしくない代替手段があります。地元の小学校の校長を説得して、学期の途中で ChatGPT を受け入れることを想像できますか?
人間が複雑な問題をより単純なサブ問題に分割し、論理的な推論に従ってアプローチする方法と同様に、言語モデルに同じことを行うように指示することができます。このアプローチは、Wei J らによって研究されました。思考連鎖プロンプトが大規模言語モデルで推論を引き出す (2022) 。いくつかのベンチマークで印象的な結果が実証され、思考連鎖 (CoT) が一般的な推論タスクで LLM のパフォーマンスを向上させる確実なアプローチであることが確認されました。
下の画像 (Wei J の記事から引用) では、LLM モデルがカフェテリアに残っているリンゴの数を計算中に誤った結論に急いでいます。これは、テニス ボールを使用した同様の推論問題がコンテキストの一部として提供されている場合でも発生します。
それにもかかわらず、問題を解決するための段階的なプロセスがコンテキスト (CoT) に含まれている場合、モデルは有効な解決策に正確に到達できます。
この方法は、モデルに推論例を提供する場合 (少数ショット)、または例を提供しない場合 (ゼロショット) に使用できます。実際のアプリケーション例で両方のフレーバーを実際に見てみましょう。
さまざまなブランドの代替品の価格と属性に基づいて、どの製品を購入するかを比較して選択するという画期的な機能を備えた、ウォルマート向けの新しいショッピング アプリケーションを開発していると想像してください。
問題を説明するために、ウォルマートが店舗で販売している固形石鹸のすべてのオプションの縮小リストに焦点を当ててみましょう。ご覧のとおり、1 バーから 14 バーまでのパックがあり、さまざまなブランドと価格 (安価なオプションから高価なオプションまで) が揃っています。
製品🛒
--- Dove Men+Care 8 bars pack $ 9.99 --- Dove Beauty Bar 4 bars pack $ 6.47 --- Dove Beauty Bar 1 bars $ 1.47 --- Dove Beauty Bar 14 bars pains $ 16 --- Yardley London Soap Bar (Pack of 10) $ 19.99 --- Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack $46.45
どのオプションがより便利かを判断するには、各選択肢のバーあたりの価格 (単価) を計算できます。次に、最も安価なオプションを選択します。この推論に従って、 Dove Beauty Bar 14 バーが単一価格 $1.14 ( Dove Beauty Bar 1 バーより 1 バーあたり -22%) の最も安いオプションであることがわかります。
推理🧠
- Dove Men+Care 8 bars pack: $1,24875 / unit - Dove Beauty Bar 4 bars pack: 1,6175 / unit - Dove Beauty Bar 1 bars: 1,47 / unit - Dove Beauty Bar 14 bars pains: $1,142857 per / unit - Yardley London Soap Bar (Pack of 10): 1,999 / unit - Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack: $9,29 / unit
GPT-4 が単純なプロンプトを使用してこの問題を解決できるほど賢いのかどうかを見てみましょう。また、よりクリーンで読みやすいサンプルを作成するという精神で、Python 文字列リテラルを使用してシステム命令を残りの入力から分離します。
プロンプト💬
prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which is the best option based on the price. <{products}> """
応答🤖
The best option based on price is Dove Beauty Bar 1 bars for $1.47.
このモデルは、単一価格を計算してより多くのバーを購入することでお金を節約できる機会を特定するのではなく、合計価格に基づいて最も安価なオプションを選択しました。質問の中にいくつかのあいまいさがあることを指摘する価値があります。最良の選択肢とはどういう意味ですか?それは最も安いことを意味しますか、それとも長期的なお金の節約を最大化することを意味しますか?
「ステップバイステップで推論する」という魔法の言葉を追加して、この問題を解決するための思考連鎖に従うようにモデルに指示するプロンプトを書き直してみましょう。また、お金を節約する機会を見つけるという目的を明確に強調します。
プロンプト💬
prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which presentation offers the best money-saving opportunity, reasoning step-by-step: <{products}> """
応答🤖
The first step is to compare price per unit for products of the same type (ie bars of soap). - Dove Men+Care 8 bars pack: $9.99 ÷ 8 bars = $1.25 per bar - Dove Beauty Bar 4 bars pack: $6.47 ÷ 4 bars = $1.62 per bar - Dove Beauty Bar 1 bars: $1.47 per bar - Dove Beauty Bar 14 bars pack: $16 ÷ 14 bars = $1.14 per bar - Yardley London Soap Bar (Pack of 10): $19.99 ÷ 10 bars = $1.99 per bar - Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack: $46.45 ÷ 5 bars = $9.29 per bar Based on this analysis, the best money-saving opportunity is the Dove Beauty Bar 14 bars pack, which offers the lowest price per bar at $1.14.
新しいプロンプトを使用すると、モデルが正しい答えを与えると同時に、デバッグや潜在的なエラーの発見が容易になる段階的な推論が得られることに注意してください。さらに、「ステップバイステップで推論する」という魔法の言葉をプロンプトに追加すると、モデルの出力に大きな違いが生じるのは非常に印象的です。コツは何ですか?
重要なのは、単に数値またはブール値 (最終結果) を出力するのではなく、モデルに段階的な推論チェーン (思考チェーン) を生成させることです。この戦略を採用することで、最初にモデルを論理的推論の出力に導き、モデルがトレーニング中に遭遇した同様の問題に基づいて応答できるようにします。次に、大きな問題をより小さな管理可能な問題に分割するようモデルに要求することで、モデルを支援します。次にモデルは、各パッケージ内の価格とバーの数の特定、単価の計算、最後に比較の実行など、単純なサブ問題に対して一貫した結果を生成する必要があります。さらに、GPT-3 や GPT-4 のような自己回帰言語モデルがトークンごとにシーケンスを生成する方法により、新しいトークンは以前に生成されたすべてのトークンに基づいて生成されるため、思考の連鎖自体が強いプラスの影響を及ぼします。最終的な一貫した結果の生成において。
言い換えれば、正当な推論を通じて正しい解決策の途中に到達した場合、その解決策に到達する可能性は、問題について最初に推論を開始したときよりも高くなります。
Zero-Shot Chain-of-Thought では、正しい結果につながる一貫性のある有効な推論チェーンを精緻化するためにモデルを自由にしますが、Few-Shot Chain-of-Thought と呼ばれる 2 番目のフレーバーでは、問題の例がいくつか提供されます。プロンプトの一部として、推論による回答も併せて表示されます。このようにして、ある形式の推論がモデルに課せられ、考えられる応答が制限されます。
Walmart アプリケーションに戻って、コカ・コーラ ソーダのどのプレゼンテーションが液量オンスあたりの価格が最も優れているかを特定したいとします。これを行うには、レイのポテトチップスの最適なプレゼンテーションを見つけるために、同様の推論の連鎖をプロンプトに組み込みます。
プロンプト💬
prompt = f""" Q: Walmart has the following presentations for Lay's Classic Potato Chips: a 13 oz bag for $4.98, an 8 oz bag for $2.76, and a pack of x10 units 1 oz each for $6.82. Which presentation has the lowest price by ounce? A: Presentation 1 costs 4.98 so has a price of 4.98/13 = 0,383076923 per ounce. Presentation 2 costs 2.76 so has a price of 2.76/8 = 0,345 / per ounce. Presentation 3 costs 6.82 and includes 10 packages so has a price of 6.82/(1 x 10) = 0.682 per ounce. In conclusion, the cheapest presentation is the second one with a price of 0.345 per ounce. Q: Walmart has the following presentation for Coca-Cola Soda: an x24 pack of 12 fl oz cans for $11.86, an x12 pack of 12 fl oz cans for $7.46, and an x6 pack of 16.9 fl oz bottles for $4.98. Which presentation has the lowest price by fluid ounce? """
ご自身で計算して、最適な取引を見つけることをお勧めします。モデルが正しいことがわかります。次回店に行くときは、間違いなく ChatGPT アプリをそばに置くつもりです。
応答🤖
A: The 24-pack contains a total of 24 x 12 = 288 fluid ounces and costs $11.86, so the price per fluid ounce is 11.86/288 = $0.041 per fluid ounce. The 12-pack contains a total of 12 x 12 = 144 fluid ounces and costs $7.46, so the price per fluid ounce is 7.46/144 = $0.052 per fluid ounce. The 6-pack contains a total of 6 x 16.9 = 101.4 fluid ounces and costs $4.98, so the price per fluid ounce is 4.98/101.4 = $0.049 per fluid ounce. Therefore, the 24-pack has the lowest price per fluid ounce.
信じられないことに思えるかもしれませんが、この単純なトリックにより、モデルは同様の推論の連鎖を推論し、前の手法よりもさらに正確な結果を得ることができます。また、問題を解決するための段階的な手順をハードコーディングしていないことに注意してください。したがって、このアプローチは理論的には、モデルの推論スキルにのみ依存して、同様の課題を解決できる十分な柔軟性を備えている必要があります。
単一のプロンプトで問題を解決することを強制するルールはありません。実際、単一のプロンプトに組み込むロジックと複雑さが増えるほど、モデルが混乱する可能性が高くなります。プロンプトの連鎖は、複雑な問題に対処するためのシンプルですが効果的な戦略です。主なアイデアは、問題を小さなタスクに分割し、それぞれのタスクを特定のプロンプトによって解決することです。各プロンプトを連鎖させ、前のプロンプトの結果を次のプロンプトの入力として使用することで、最終的な結果が得られます。
これを念頭に置いて、Walmart アプリケーションに戻り、複雑なユーザー フローをプロンプトのチェーンとして実装してみましょう。ここまで、トイレ用石鹸やスナック、ソフトドリンクなど、さまざまな商品の価格を比較してきました。さて、私は個人的にスーパーマーケットに行くたびに頭が痛くなる商品を調査することにしました。ユニットあたりの価格を計算すると、まるでトイレットペーパーのようにロケット科学のように思えます。 🤣🤣🤣
以下は、ウォルマートが提供するトイレット ペーパーのオプションの縮小リストです。
製品🛒
--- Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls Each Mega Roll has 255 3-ply sheets. $ 6.93 --- Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls. 18 mega toilet paper rolls, each mega roll has 295 2-ply sheets $ 19.82 --- Angel Soft Toilet Paper, 36 Mega Rolls. With 320 2-ply sheets on every Mega Roll. $ 24.12 --- New Angel Soft Toilet Paper, 36 Mega Rolls. With 484 2-ply sheets Per Roll $ 45.44 --- Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll. With Scott 1,000 Toilet Paper, you get 12 rolls of 1000 1-ply sheets.
解決すべき問題は、この投稿で焦点を当てた問題と同じです。つまり、どの製品プレゼンテーションが最もコスト効率が高いかを判断することです。さらに、保管スペースが限られているため大量に購入できない購入者や、より大量の本製品を必要とする購入者を考慮するなど、追加の選択肢を生み出すことでアプリケーション機能を向上させたいと考えています。さらに、AI を活用した仮想ショッピング アシスタントによって提供されるパーソナライズされた推奨事項の一部として製品の推奨事項を含めることができれば素晴らしいでしょう。
単一のプロンプトを使用してタスク全体を解決するのではなく、タスクを複数のサブタスクに分割し、それぞれに特定のプロンプトを表示し、出力を連鎖させることが目標です。そこで、各製品の測定単位ごとの価格を計算するプロンプトを設計することから始めて、直接比較できるようにしましょう。
チェーンの最初のステップまたはタスクでは、ゼロショット思考チェーンを使用します。これにより、入力内の各製品の測定単位あたりの価格を段階的に推論して返すようにモデルに指示されます。ここで生成された出力は、後で次のプロンプトの入力として機能します。このため、構造化された出力形式を要求することが不可欠です。この場合、JSON リストで十分です。
プロンプト💬
prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to calculate the price by unit of measurement for each presentation, reasoning step-by-step. Finally, return a list in JSON format with the title of the product, original price and unit price using the title, total_price and unit_price keys respectively. <{products}> """
応答🤖
Let's start by breaking down the cost for each roll and then calculating the cost per unit, in this case, the cost per sheet. For the Quilted Northern Ultra Plush Toilet Paper: * The product costs $6.93 and contains 6 mega rolls. Therefore, each mega roll costs $6.93 / 6 = $1.155. * Each mega roll contains 255 sheets. Therefore, the cost per sheet is $1.155 / 255 = $0.00453 approximately. For the Quilted Northern Ultra Soft & Strong Toilet Paper: * The product costs $19.82 and contains 18 mega rolls. Therefore, each mega roll costs $19.82 / 18 = $1.1011 approximately. * Each mega roll contains 295 sheets. Therefore, the cost per sheet is $1.1011 / 295 = $0.00373 approximately. For the Angel Soft Toilet Paper: * The product costs $24.12 and contains 36 mega rolls. Therefore, each mega roll costs $24.12 / 36 = $0.6694 approximately. * Each mega roll contains 320 sheets. Therefore, the cost per sheet is $0.6694 / 320 = $0.00209 approximately. For the New Angel Soft Toilet Paper: * The product costs $45.44 and contains 36 mega rolls. Therefore, each mega roll costs $45.44 / 36 = $1.2622 approximately. * Each mega roll contains 484 sheets. Therefore, the cost per sheet is $1.2622 / 484 = $0.00261 approximately. For the Scott 1,000 Toilet Paper: * The product costs $45.44 and contains 12 rolls. Therefore, each roll costs $45.44 / 12 = $3.7867 approximately. * Each roll contains 1000 sheets. Therefore, the cost per sheet is $3.7867 / 1000 = $0.00379 approximately. Now, let's format this into JSON: [ { "title": "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls", "total_price": "$6.93", "unit_price": "$0.00453" }, { "title": "Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls", "total_price": "$19.82", "unit_price": "$0.00373" }, { "title": "Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$24.12", "unit_price": "$0.00209" }, { "title": "New Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$45.44", "unit_price": "$0.00261" }, { "title": "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll", "total_price": "$45.44", "unit_price": "$0.00379" } ] This JSON data provides each product's title, total price, and the calculated unit price.
トイレット ペーパーのプレゼンテーションごとに、1 枚あたりの価格を手動で計算する練習に取り組むことをお勧めします。そうすることで、モデルの出力が正しいことを確認できます。ただし、モデルの出力には推論プロセスも含まれています (モデルに段階的に推論を求めるため)。つまり、続行する前に、テキストの残りの部分から JSON リストを抽出する必要があります。幸いなことに、LLM を使用してこれを実現できます。
このテキスト抽出を実行するための簡単なプロンプトを作成してみましょう。さらに、オプションを単価に基づいて、安いものから高いものまで並べ替えるようモデルに指示しましょう。このステップは、後のプロンプト チェーンで非常に役立ちます。
プロンプト💬
prompt = f""" You will be provided with a text delimited by <>. This text contains a JSON list with information about Walmart products. Your task is to extract that list and return only this list in JSON format. Each JSON list item contains the key "unit_price", which is a number. Before returning the list, sort it in ascending order by the key "unit_price". Here is an example of a list item: { "title": "Toilet paper", "total_price": "$2.99", "unit_price": "$0.0045" } Remember to return the list without any additional text or explanation, just the list in JSON format. <{response_prompt_1}> """
応答🤖
[ { "title": "Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$24.12", "unit_price": "$0.00209" }, { "title": "New Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$45.44", "unit_price": "$0.00261" }, { "title": "Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls", "total_price": "$19.82", "unit_price": "$0.00373" }, { "title": "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll", "total_price": "$45.44", "unit_price": "$0.00379" }, { "title": "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls", "total_price": "$6.93", "unit_price": "$0.00453" } ]
製品の代替品が JSON リストとして提示されるため、GPT-4 のようなモデルでは、最も費用対効果の高いオプションを特定するだけでなく、たとえば、いくつかの商品しか必要としない買い物客に貴重な洞察を提供することも簡単になります。単位。これを達成するためのプロンプトを作成しましょう。さらに、私たちは AI を活用した仮想ショッピング アシスタントを開発していることを忘れないでください。
したがって、LLM を利用して、製品の代替案を、具体的で親しみやすいトーンの単一のテキスト メッセージとして表示することもできます。
プロンプト💬
prompt = f""" Your name is Wally and you are an artificial shopping assistant at Walmart stores. You will be provided with a list of various product presentations in a JSON list format, delimited by <>. Each product presentation is accompanied by its total_price, unit_price, and a title that contains extra information about the product presentation. Additionally, the list is sorted by unit_price ascending. Your task is to generate a short, straight-to-the-point buy recommendation, mentioning the best money-saving opportunity based on the JSON products list. Also include the best, smallest and largest options to give the user options based on the size of the product. Use a single paragraph to include all three recommendations. First present yourself in a friendly way, start mentioning the best option of all, then the smallest option, and finally the largest option. Say goodbye inventing something that includes the Walmart slogan "Save Money. Live Better". <{response_prompt_2}> """
応答🤖
Hello there! I'm Wally, your friendly shopping assistant at Walmart. Let's dive into your toilet paper options! Looking at the overall value, your best option is the "Angel Soft Toilet Paper, 36 Mega Rolls" priced at $24.12 with a unit price of $0.00209, giving you the most bang for your buck. If you're seeking something compact and budget-friendly, the "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls" at $6.93 would be your go-to pick. On the other hand, if you are searching for the largest pack available, you should consider the "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll" priced at $45.44, offering a vast number of sheets for your needs. Remember, every cent counts at Walmart because our goal is to help you "Save Money. Live Better". Happy shopping!
私の個人的な意見では、このモデルの出力は、わずか 3 つの単純なプロンプトの連鎖から生成されたことを考えると、非常に印象的です。お願いですが、一番上の桜を見落とさないでください。私はモデルに対し、その対応にウォルマートのスローガンを組み込むよう特に指示しました。
このセクションの結論として、プロンプトの連鎖は、同じく LLM によって解決されたさまざまなタスクやサブ問題の結果を統合することによって、LLM の真の可能性を引き出す非常に強力な手法です。複雑なプロンプトを複数の小さなプロンプトに分割するための一般的な経験則はないことに注意してください。特定の問題に対して適切なバランスを見つける必要があります。
CoT を使用しても、LLM が一貫した応答を生成できないシナリオがいくつかあり、同じプロンプトに対してモデルが実行間で混乱し、一貫性のない応答を返す可能性があります。この文脈において、自己一貫性はシンプルですが効果的なアプローチであり、モデルに同じプロンプトを複数回質問し、過半数の結果を最終的な回答とするだけで構成されます。この手法を CoT と組み合わせると、より堅牢で予測可能な結果を得ることができます。
たとえば、思考の連鎖の論文で紹介されているカフェテリアのリンゴの例を考えてみましょう。入力プロンプトでモデルを 1 回呼び出すだけでなく、モデルを 3 回呼び出して、多数決の回答を最終的な回答として採用できます (下の画像を参照)。
多数派の応答を採用することにより、特定の実行中にモデルが誤った出力を返す可能性が大幅に減少します。このテクニックの効果は、繰り返しを増やすことで強化されます。ただし、プロンプトを繰り返し実行すると、モデルへの呼び出し数が増加し、ハードウェアの消費量が増加することになります。 GPT-3 のような大規模な言語モデルの場合、これはより多くの API 呼び出しを意味し、その結果、単一の回答を生成するために費やす費用も増加します。
このため、LLM を使用するシステムを設計する場合は、厳密に必要な場合にのみこの手法を使用し、堅牢性とモデル呼び出しの節約とのバランスをとることが重要です。たとえば、システムの応答において高いレベルの堅牢性が必要な場合です。
この手法の可能性を説明するために、ウォルマート アプリケーションに戻って、別の特定の製品である卵を分析してみましょう。
製品🛒
--- Great Value Cage Free Large AA White Eggs, 6 Count $ 1.07 --- Happy Egg Organic Free Range Large Brown Eggs, 12 Count $ 5.16 --- Great Value Cage Free Large AA White Eggs, 12 Count $ 1.86 --- Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count $ 2.69 --- Marketside Large Cage Free Brown Eggs, 12 Count $ 2.67
モデルにとって問題を少し難しくするために、プロンプトにいくつかのユーザー設定を含めてみましょう。
preferences = f""" - Only consider grade AA eggs - Only consider eggs produced on cage-free farms - The client needs a minimum of 6 eggs and a maximum of 12 """
GPT-3/GPT-4 のような強力なモデルでは、以下のような Zero-Shot CoT プロンプトで十分な結果が得られます (以前のテストを思い出してください)。やってみよう!
プロンプト💬
prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which presentation offers the best money-saving opportunity, reasoning step-by-step: Also, consider the following user preferences to select the most suitable ooption: {preferences} <{products}> """
応答🤖
(1) Considering the user preferences, we first filter the list of eggs for only grade AA and cage-free options, which gives us the following choices: * Great Value Cage Free Large AA White Eggs, 6 Count: $1.07 * Great Value Cage Free Large AA White Eggs, 12 Count: $1.86 * Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count: $2.69 * The Happy Egg and Marketside options are discarded because their grade is not specified. Next, we consider the amount of eggs. The client needs a minimum of 6 eggs and a maximum of 12. Therefore, we can discard the Eggland's Best 18 count option, as it exceeds the maximum required amount. Now, we compare the remaining two options: * Great Value Cage Free Large AA White Eggs, 6 Count: $1.07 * Great Value Cage Free Large AA White Eggs, 12 Count: $1.86 * Although the 6-count pack fits the minimum requirement, the 12-count pack offers a better price per egg. For the 6-count pack, each egg costs $1.07 / 6 = ~$0.178. For the 12-count pack, each egg costs $1.86 / 12 = ~$0.155. Therefore, considering both the user's preferences and the cost per egg, the "Great Value Cage Free Large AA White Eggs, 12 Count" for $1.86 is the best money-saving opportunity. (2) Let's go through each product one by one, considering the user's preferences: 1. Great Value Cage Free Large AA White Eggs, 6 Count - $1.07 These are grade AA eggs from a cage-free farm, so they meet the user's criteria. The price per egg is $1.07/6 = $0.178. 2. Happy Egg Organic Free Range Large Brown Eggs, 12 Count - $5.16 These are not specified as grade AA, so we can't consider them based on user's preferences. 3. Great Value Cage Free Large AA White Eggs, 12 Count - $1.86 These are grade AA eggs from a cage-free farm and the quantity is within the range the user wants. The price per egg is $1.86/12 = $0.155. 4. Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count - $2.69 These are grade AA eggs from a cage-free farm. However, the quantity is more than the user wants (18), so we can't consider this option. 5. Marketside Large Cage Free Brown Eggs, 12 Count - $2.67 These are not specified as grade AA, so we can't consider them based on user's preferences. Based on the preferences, we are only left with two choices: Great Value Cage Free Large AA White Eggs, either 6 Count or 12 Count. However, the 12 Count package offers the best money-saving opportunity, because it has a lower cost per egg ($0.155 per egg) than the 6 Count package ($0.178 per egg). Additionally, the 12 Count package still falls within the user's desired quantity range of 6 to 12 eggs. Therefore, the best option for the user is the "Great Value Cage Free Large AA White Eggs, 12 Count" at $1.86. (3) Given the user's preferences, we need to find the product which: 1. Contains only grade AA eggs 2. Is produced on cage-free farms 3. Offers a minimum of 6 eggs and a maximum of 12 Let's consider each product: 1. "Great Value Cage Free Large AA White Eggs, 6 Count" - $ 1.07. This option matches all the user's preferences and costs $1.07 for 6 eggs, which is approximately $0.178 per egg. 2. "Happy Egg Organic Free Range Large Brown Eggs, 12 Count" - $ 5.16. This product does not specify the grade of the eggs, so we will disregard this option. 3. "Great Value Cage Free Large AA White Eggs, 12 Count" - $ 1.86. This option also matches the user's preferences and costs $1.86 for 12 eggs, which is approximately $0.155 per egg. 4. "Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count" - $ 2.69. While this product matches the egg grade and production method preferences, it contains more than the maximum amount of eggs requested by the user (18 instead of 12). Therefore, we disregard this option. 5. "Marketside Large Cage Free Brown Eggs, 12 Count" - $ 2.67. This product does not specify the grade of the eggs, so we will disregard this option. Therefore, the product that provides the best money-saving opportunity while meeting the user's preferences is "Great Value Cage Free Large AA White Eggs, 12 Count" for $1.86. This option offers more eggs for a lower cost per egg compared to the other suitable option.
モデルがどの実行でも誤った結果を生成していないにもかかわらず (3 つのインスタンスすべてで正確な推論が行われている)、この例では LLM の応答に変動がある可能性があることが強調されています。このことは、そのようなばらつきを減らす上での自己一貫性の価値をさらに強調します。
より一般的には、自己一貫性により、算術、常識、記号推論のタスクの結果が向上することが示されています。通常の CoT が効果的ではないことが判明した場合でも、Self-Consistency は結果を改善することができました (実験結果を確認してください)。
この高度なテクニックの結論として、たとえば、リストに製品を追加したり、「ステップバイステップの推論」を削除して、モデルに間違いを許容する余地を与えるなど、自分で試してみることをお勧めします。また、取り組んでいる現実の問題に自己一貫性を適用するようにしてください。
言語モデルを調整して指示に従うようにする際、通常は InstructGPT モデル (ChatGPT がその例) に関連付けられるプロセスである、ロール プロンプティングとして知られる新しいアプローチがユーザーの間で勢いを増しています。この方法には、特定のタスクを実行するために既知のエンティティの人格を想定するようにモデルに指示することが含まれます。
そのような存在の可能性は事実上無限です。トム・クルーズやエマ・ワトソンのような有名な俳優から、バラク・オバマやホセ・ムヒカのような政治家、さらにはシャーロック・ホームズのような架空の人物にまで及びます。この技術により、キャラクターの話し方をエミュレートして、独特の口調で応答を生成し、より魅力的なユーザー エクスペリエンスを促進することができます。
さらに、専門家の疑似体験や知識を活用することができます。たとえば、核物理学者、マーケティング ディレクター、CEO、ジャーナリストなどとして行動して、モデルに特定のタスクを完了するように依頼します。
このタイプのプロンプトを例示するために、GPT-4 に、グレート バリュー ケージ フリー ラージ AA ホワイト エッグを製品として使用して、シェルドン クーパー (ビッグバン セオリー ショーの有名なキャラクター) の独特の口調でショッピングの提案をカスタマイズするようリクエストします。この投稿の前半で、購入するのに最適なオプションを見つけました。
製品🛒
Great Value Cage Free Large AA White Eggs, 12 Count. Price $1.86. This option offers more eggs for a lower cost per egg compared to the other suitable option.
プロンプト💬
prompt = f""" You are a shopping assistant with the personality of the iconic character Sheldon Cooper from The Big Bang Theory show. Your task is to act like Sheldon, speak like Sheldon and think like Sheldon. You will be provided with a product description delimited by <> and your goal is to return a personalized shopping recommendation based on that product acting like Sheldon Cooper. Be concise, friendly and present yourself as Dr. Sheldon Cooper. <{product}> """
応答🤖
Hello, I'm Dr. Sheldon Cooper. Given your product choice, I do appreciate the value for money that these Great Value Cage Free Large AA White Eggs offer. The cost per egg is an important mathematical factor to consider, and indeed, these eggs would be a sensible choice for a budget-conscious, protein-seeking individual like Leonard, who often falls victim to my high-protein breakfast egg burritos. However, it's also worth noting that cage-free doesn't mean these chickens lead a leisurely life. It's a common misconception, just like thinking the Doppler effect would be an acceptable Halloween costume. Ideally, for the truly ethical choice, you'd opt for pasture-raised eggs. And finally, from a culinary perspective, I would like to point out that while eggs do serve as an excellent source of protein, they are also potential carriers of Salmonella. But you probably knew that. In conclusion, despite their cost-effectiveness, I recommend careful handling and thorough cooking of these Great Value Cage Free Large AA White Eggs. Sheldon Cooper out.
得られた回答からわかるように、この手法を使用すると、興味深い結果が得られ、固有の応答が返されます。ただし、推論をモデルに委任し、モデルに再生を依頼しているエンティティについてのモデルの理解に完全に依存していることに注意してください。このため、まずモデルが、モデルに求めている役割やエンティティを正しく理解していることを確認することが重要です。そうしないと、結果が期待したものと異なる可能性があります。
良い反例は、人間の知能レベルを超えたスーパーコンピューターを模倣するようにモデルを要求することです。このようなエンティティが現在存在しないことを考えると、モデルはこのタイプのエンティティからの応答に基づいてトレーニングされることはありません。したがって、この条件を満たす応答を提供することはできません。
プロンプト💬
You are an artificial superintelligence, much more evolved and intelligent than human beings. You know everything about the universe and you have the answer to all the mysteries of the universe. Your task is to tell me how to write a post for Hackernoon that became a huge success.
残念ながら、ChatGPT も GPT-4 もまだ答えがありません...
翻訳中に文や単語の意味が失われる可能性があるのと同様に (「翻訳中の喪失」と呼ばれることがよくあります)、LLM はトークン化プロセス中に意味を失う可能性があります。人間はテキスト内の個々の単語を認識しますが、LLM はトークンを解釈します。これらのトークンが個々の単語に対応することはほとんどありません。実際、ChatGPT や GPT-4 などの高度なモデルは、英語の一般的なサブワードをモデルに認識させることを目的としたtiktoken Tokenizer を利用しています。これにより、通常、単語が複数のトークンで表されることになります。このトークナイザーは、同等のオープンソース トークナイザーよりも強力で高速ですが、まれな英単語や非英語の単語については望ましくない出力が発生する可能性があります。
これを説明するために、 OpenAI Tokenizerを使用して、さまざまな文を試し、それぞれのケースでのトークン化出力を観察してみましょう。
"I want to buy shoes" = "I/want/to/buy/shoes" "I think, therefore I am" = "I/think/,/therefore/I/am" "You should visit Punta del Este" = "You/should/visit/P/unta/del/E/ste"
観察されたように、トークナイザーは最初の 2 つの例では単語をうまく分離していますが、ウルグアイにある観光地で美しい都市プンタ デル エステの名前には苦労しています。これは、比較的単純なタスクでエラーが発生する可能性があるため、注目に値します。これをさらに詳しく確認するために実験を続けてみましょう。
テキスト
USA Santa Claus Uruguay
トークン化されたテキスト🪄
USA Santa/Claus U/rug/uay
プロンプト💬
prompt = f""" You will be provided with a list of texts delimited by <>. Your task is to reverse those texts. <{texts}> """
応答🤖
Here are the reversed versions of the texts you provided: < ASU sualC atnaS yaguUr
実証されているように、このモデルは、トークナイザーにとってあまり一般的でない単語であるウルグアイという単語を不正確に反転させています。幸いなことに、この問題に対処する簡単な回避策があります。このような状況では、「-」などの区切り文字を使用してテキストを個々の文字に区切ることにより、テキストを前処理できます。このようにして、モデルはテキストをトークン化するときに、サブワードではなく個々の文字を認識します。この変更は、モデルがタスクを実行して結果を改善するのに役立つ可能性があります。やるだけやってみよう!
プロンプト💬
prompt = f""" You will be provided with a list of texts delimited by <>. Your task is to reverse those texts. < USA Santa Claus Uruguay > """
応答🤖
Sure, here are the reversed versions of the texts you provided: < ASU seikooC sualC atnaS yaugurU
提示された回避策を使用すると、モデルはすべての単語を適切に反転できます。まれな単語を含む入力に対するモデルのパフォーマンスの低下が観察された場合は、いつでもこの回避策を採用できます。このチュートリアルには、前処理と後処理の手順は含まれていません。どのプログラミング言語にも、ジョブのこの部分に利用できる文字列メソッドがたくさんあります。
私たちのプロンプト エンジニアリングの旅は、(優れたパフォーマンスにもかかわらず) CoT+自己一貫性で終わるわけではありません。この筆者にとって幸運なことに、プロンプト エンジニアリングを習得する前に、プロンプト エンジニアリングについて学ぶべき側面がさらにたくさんあります。以下では、プロンプトを作成する際に考慮すべきいくつかの補完的な要素を検討し、効果的なプロンプトを作成するために使用できる 3 つの便利なツールを紹介します。
1- 適切な区切り文字を選択する
LLM の観点からは、すべての区切り文字が等しいわけではありません。一般に、入力の残りの部分で文字が見つかる頻度が低いことに加えて (モデルとプロンプトの混同を避けるために)、1 つのトークンだけで表される区切り文字を使用すると便利です。このようにして、プロンプト内のトークンの消費を減らし、ハードウェア リソースとコストを節約し、そのトークンを他のより重要な目的に使用できるようにします。
OpenAI Tokenizer を使用すると、区切り文字が単一のトークンで表されているかどうかを再確認できます。
“““
→ 1 トークン```
→ 2 トークン---
→ 1 トークン###
→ 1 トークン< >
→トークン 2 個<tag></tag>
→ 5 トークン
2- 入力を前処理する
ユーザー入力をプロンプトの一部としてモデルに渡すのではなく、文字列メソッド、正規表現、または同様のツールを使用してこの入力を前処理することをお勧めします。目的は、モデルの理解やタスクの完了を妨げる可能性のある不要なスペース、句読点、HTML タグ、その他の余分な要素を削除することです。このアプローチはトークンを節約し、トークンごとに料金を請求する ChatGPT のようなモデルのコストを削減するだけでなく、迅速なインジェクション、プライバシー上の懸念、および関連する問題の特定にも役立ちます。
3- プロンプトパーフェクト
特定の原則とテクニック (この投稿シリーズで紹介したものなど) に従うことで、効果的なプロンプトを最初から作成できます。ただし、さらに良いアプローチは、 PromptPerfectなどのプロンプト オプティマイザーを利用することです。このツールは AI を活用して、使用している特定のターゲット モデル (GPT-3、GPT-4、Midjourney など) に基づいてカスタム プロンプトを強化します。
アプリケーション設計の一部としてこれらのツールを組み込む余裕がない場合は、少なくとも検討することを検討してください。ドキュメントにある最適化された例から、いくつかのヒントを学ぶことができます。
4- プロンプトテンプレート
車輪を再発明するのではなく、インターネット上の人々が共有するプロンプトのテンプレートを読んでください。ニーズに合ったプロンプトがない場合でも、少なくともアイデアを採用することができます。 ChatGPT、Midjourney、および最も人気のあるモデル用のさまざまなプロンプト テンプレートを取得できる 2 つのサイトを次に示します。
➡️ 500 以上の ChatGPT プロンプト テンプレート
5- OpenAI プレイグラウンド
OpenAI は、 Playgroundと呼ばれる強力なツールを提供します。このインタラクティブな Web アプリを使用すると、公式 API を通じて利用可能なさまざまなモデルを実験でき、特定のパラメーターを調整したり、デフォルトの動作を変更したりできます。プレイグラウンドは実験の優れた出発点であり、コードを 1 行も記述する必要はありません。
最後のアドバイスとして、適切なプロンプトを作成したり、LLM と興味深い会話をしたりすることは、コミュニティ内の他のユーザーと共有することと同じくらい重要です。それを忘れずに、自分の経験を共有するときは、 sharegpt を使用してワンクリックで共有してみてください。
Prompt Engineering 101 シリーズの 2 回目の投稿では、思考連鎖と自己一貫性という 2 つの強力なテクニックを紹介しました。戦略を組み合わせることで優れた結果が得られます。実際の例を使用して、私たちは思考連鎖の両方のバリエーションであるゼロショットとフューショットを調査し、これらのテクニックの可能性を直接体験しました。次に、より複雑で堅牢なパイプラインを構築するために、プロンプトのチェーンを実験しました。最後に、プロンプト エンジニアリングの他の側面を掘り下げ、プロンプトを作成する際に考慮すべき関連する側面を強調し、最後にいくつかの便利なツールについて言及しました。
プロンプト、応答、および OpenAI API と直接対話するための Python スクリプトとともに、すべての例を見つけることができ、ここでプロンプトを試してください。
次の投稿では、ChatGPT や同様のモデルなどの LLM 上に構築されたシステムの動作をテストおよび検証する手法について説明します。
この投稿シリーズは、 Andrew NgとIsabella Fulfordの優れたコースと、 Charles Frye 、 Sergey Karayev、 Josh Tobinが提供した優れた LLM ブートキャンプに触発されています (どちらのコースもリソース セクションで言及されています)。これらの学習プログラムを完了した後、私はさらに深く掘り下げて学術論文やチュートリアルを調べてみたいと熱望しました。このことがきっかけで、私はインターネットを旅して、高品質のリソースとジャンク品を見極めることになりました。プロンプト エンジニアリングとアートワークのための生成 AI に関する本を 2 冊 Amazon に注文したこともありましたが、内容が悪く、まったくのお金の無駄でした。数週間の集中的な仕事、頭痛とコーヒーの飲みの後、私はプロンプト エンジニアリングに関する非常に価値のあるリソースのコレクションを手に入れました。プロンプト エンジニアリングの旅で他の人を支援するという精神で、私はこのシリーズの投稿を書いた私の経験を共有することにしました。
この記事を気に入っていただけましたら、私のソーシャル メディアで私をフォローして、私の仕事をサポートしていただければ幸いです。さらに、新しいコンテンツをリリースするたびに通知されます。
Wang, X.、Wei, J.、Schuurmans, D.、Le, Q.、Chi, E.、および Zhou, D. (2022)。自己一貫性により、言語モデルにおける思考推論の連鎖が改善されます。
DeepLearning.ai による開発者向け ChatGPT プロンプト エンジニアリング
DeepLearning.ai によるChatGPT API を使用したシステムの構築
プロンプトエンジニアリングガイド
プロンプト入門コース