チャットGPTの潜在能力を引き出すためのプロンプトエンジニアリングのマスタリング

Mastering Prompt Engineering to unleash the potential of Chat GPT.

ベストプラクティスを探索し、より良い結果のためにプロンプトを向上させる

Photo by Léonard Cotte on Unsplash

プロンプトエンジニアリングは、ChatGPTや他の大規模言語モデルのおかげで、風のように私たちの生活の一部になりました。完全に新しい分野ではありませんが、現在人気が高まっています。それは言うまでもなく、今がプロンプトエンジニアリングのスキルを向上させ、より良いプロンプトエンジニアリングを行うための最適な時期だと思います。

プロンプトエンジニアリングとは何かわからない場合は、ChatGPTに尋ねてみましょう!

Google Trendsのデータによると、「プロンプトエンジニアリング」は過去数ヶ月間で検索興味のピークに達しました。 「プロンプトエンジニアリング」を検索したユーザーは、「コース」「学習」「給与」などの追跡トピックに興味を持っていました🤑。「プロンプトエンジニアリングコース」のクエリ数が急増しています。

Google Trends in the past 12 months for “prompt engineering” . A value of 100 represents the highest level of popularity for the term. Here I’ve filtered for the past 12 months, but you can adjust it.

単純な日常的なクエリ、レシピのインスピレーションを見つけるため、Webユーザーインターフェイス(例:ChatGPT UI)を使用して次の旅行を計画するためにプロンプトエンジニアリングを利用している場合、または大規模言語モデルAPIにアクセスするアプリケーションを開発している場合(例:ChatGPT API)、プロンプトの作成スキルを向上させると、応答の品質が大幅に向上します。プロンプトエンジニアリングを理解することは、大規模言語モデルの機能と制限に関する有用な洞察を提供します。

この記事では、私が得た洞察について掘り下げ、主要な概念を示すいくつかの例を提供します。さあ、始めましょう!💬 🤖

プロンプトエンジニアリングの始め方

プロンプトエンジニアリングは、大規模言語モデル(LLM)を最大限に活用するために重要な役割を果たしています。プロンプトがうまく書かれていると、応答がより正確で関連性が高く、有用になります。

以下は、プロンプトを書く際に考慮すべき常識的なガイドラインです。

  • 🔖明確で具体的に: モデルに期待することを明確に伝え、具体的な指示を提供してください。
  • 🔖必要なコンテンツと望ましい出力スタイルを含める: 必要なすべての情報を含め、応答の形式やスタイルを指定してください。
  • 🔖可能な限り例を提供する: 例を含めることで、モデルが望ましい応答構造を理解するのに役立ちます。

考慮すべき重要な点もあります。

  • 📍応答にはエラーが含まれる可能性があります
  • 📍同じプロンプトへの応答は異なる場合があります
  • 📍モデルの知識は、トレーニングデータが収集された時期に基づいています(例:ChatGPTの知識の切り捨て日は2021年9月です)

5つの超強力なプロンプトパターン

ここでは、LLMsとやり取りする際に従うことができる5つの非常に重要なプロンプトパターンをカバーします。

1. 人物パターン

人物パターンを使用すると、ChatGPTに特定のパーソナとして振る舞わせ、特定のタスクを実行するように依頼できます。

ChatGPTによるドイツ語学習計画(素晴らしい!)

このパターンを逆にエンジニアリングし、ChatGPTに「私がPersona Xであると仮定して、私の言語学の学位を持っていると思って、私のためにドイツ語学習計画を作成してください。」と頼むこともできます。

2. 質問の改良パターン

質問の改良パターンを使用することで、ChatGPTに「フォローアップ質問を生成し、それらの回答を使用して初期質問に正確に回答するように」と依頼できます。

質問の改良パターンを使用したプロンプトライティング

この方法を使用すると、ChatGPTが回答を作成する際に考慮する要因を知ることができ、初期のプロンプトに含まれなかった追加の文脈を提供することができます。

3. テンプレートパターン

テンプレートを提供し、ChatGPTにそのテンプレートに従って回答を生成するよう指示することができます。たとえば、『大規模言語モデル』のWikipediaページからいくつかの段落を提供し、ChatGPTにその段落を使用してテンプレートに従って5つの質問と回答を生成させます。

マークダウンを使用して、***単語***を強調表示するなど、テキストをフォーマットできます

4. ゼロショットプロンプティング

大規模言語モデルは指示に従い、プロンプトからパターンを学習することができるため、ゼロショット学習の例として、ディズニーランドの顧客レビューデータセットから例を取り上げ、モデルに特定のレビューの感情を判断させることができます。

上記のように、回答は「ポジティブ」です。

5. 考えの鎖プロンプティング

数学の問題など、最終的な回答だけでなく、段階的な説明を提供することを目的とした考えの鎖プロンプティング。

以下の例では、ChatGPTにトリック質問を投げかけ、最初は回答で間違いを com/medium/1*QQPj4XHMLRONl5V4Fpcg9Q.png”/>

上記のように、回答が間違っています。正しいのは9個のグミであり、8個ではありません。これを解決するために、プロンプトを改善し、ChatGPTがより多くのアセスメントを行うことができるテンプレートに従うようにします。

ChatGPTは、推論の手順を書く必要がある場合、正しい答えを見つけることができます。

オープンエンドな応答では、目的地しか見えません。しかし、考えの連鎖によるプロンプティングを行うことで、旅程を理解することができます。🤓

データアプリケーションを構築するためのChatGPT APIの利用

1. テキストの要約と情報の抽出

要約情報は、特定の詳細や重要なポイントを抽出する必要がある場合には、時間を節約するためのテクニックです。 ChatGPT APIを利用することで、大量のテキストの要約を生成するためにその機能を活用することができます。

例えば、ディズニーランドのレビューデータセットは42,000件のレビューで構成されているため、要約を利用することで評価プロセスを簡素化することができます。ただし、1つのレビューで実証しますが、この方法は簡単にスケーリングして、より大量のテキストを処理することができます。

ChatGPT APIを使用するには、OpenAIアカウントにログインして、右上隅の「APIキーを表示」セクションからAPIキーを生成する必要があります。 APIキーを作成したら、安全な場所に保存し、表示しないようにする必要があります。

# openaiをインストール pip install openaiimport osimport openai# APIキーを安全に保存OPENAI_API_KEY = "sk-XXXXXXXXXXXXXXXXXXXXXXXX"openai.api_key = OPENAI_API_KEY

次に、プロンプトを取得し、そのプロンプトに対する完了を返すヘルパー関数を生成します。

# プロンプトに対する完了を返すためのヘルパー関数def get_completion(prompt, model="gpt-3.5-turbo"):     messages = [{"role": "user", "content": prompt}]    response = openai.ChatCompletion.create(        model=model,        messages=messages,        temperature=0, # 応答のランダム性の度合い    )    return response.choices[0].message["content"]

# 1つのレビューを入力してプロンプトを書き、ヘルパー関数を使用して応答を生成しますreview = """Have been to Disney World, Disneyland Anaheim and Tokyo Disneylandbut I feel that Disneyland Hong Kong is really too small to becalled a Disneyland. It has way too few rides and attractions.Souvenirs, food and even entrance tickets are slightly moreexpensive than other Disneyland as well. Basically, this park isgood only for small children and people who has never been to Disney.The food choices were acceptable, mostly fast food, and not too expensive.Bottled water, however, was VERY expensive but they do have waterfountains around for you to refill your water bottles. The parade waspretty good. It was crowded not a problem but what was the problem wasthe people were just so rude, the pushing and shoving cutting in linesfor the rides, gift shops, food stands was just to much to take. forgettrying to see one of the shows its a free for all for seats, i don't seehow Disney can let this happen, it was by far the worst managed Disneyproperty."""

# プロンプトを書き、ヘルパー関数を使用して応答を生成しますprompt = f"""    下記のレビューを30単語で要約してください。    レビュー: ```{review}```    """response = get_completion(prompt)print(response)

香港ディズニーランドは、アトラクションが少なく、小さすぎる。食べ物やお土産、入場券は他のディズニーランドよりも少し高い。このパークは、小さな子供とディズニー未経験者にしか適していません。混雑しており、不愉快な人々が多く、管理が悪い。

要約は、プロンプトで要求した通りに、かなり素晴らしく、30単語程度です。必要に応じて、要約の特定の要素に焦点を当てることもできます。例えば価格や価値などです。

prompt = f"""    下記のレビューを10単語で要約し、価格と価値に焦点を当ててください。    レビュー: ```{review}'''    """response = get_completion(prompt)print(response)

アトラクションが少なく、高価で混雑したディズニーランド。

ターゲットの要約を生成することで、初期のレビューをより意味のある、効果的な声明に変換しました。🍄

さらに、JSON形式で関連情報を抽出して、他のシステムとの統合を容易にします。プロンプトのキーのテンプレートを定義します。

prompt = f"""    次の項目をレビューから特定してください:     - 感情(ポジティブまたはネガティブ)    - レビューされたディズニーパーク    - レビュワーは失望しているか?(trueまたはfalse)    - レビュワーは幸せを表現しているか?(trueまたはfalse)    "Sentiment", "Park", "Anger", "Happiness"をキーとするJSONオブジェクトとして回答をフォーマットしてください。    AngerとHappinessの値はブール値としてフォーマットしてください。    回答は短くしてください。    レビュー: ```{review}```    """response = get_completion(prompt)print(response)

{ “Sentiment”: “negative”, “Park”: “香港ディズニーランド”, “Anger”: true, “Happiness”: false }

それはかなり素晴らしいです!

2. テキストを翻訳する

要約を作成できる場合は、テキストを異なる言語に翻訳することもできます。前の例に基づいて、英語、イタリア語、ドイツ語で要約を生成するようにリクエストします。

prompt = f"""    次のレビューを要約することがあなたのタスクです。    以下のレビューを最大10語で要約してください。    英語、イタリア語、ドイツ語で要約を印刷してください。    レビュー:```{review}```    """response = get_completion(prompt)print(response)

要約:英語:香港ディズニーランドはアトラクションが少なくて高価です。イタリア語:香港ディズニーランド è piccolo con poche attrazioni e costoso. ドイツ語:香港ディズニーランド ist klein mit wenigen Attraktionen und teuer。

3. テキストを拡張する

拡張は、小さなテキストピースを利用し、大規模な言語モデルの機能を活用して、より詳細なテキストを生成することを指します。たとえば、顧客レビューを入力すると、詳細な返信メールを作成し、指摘された問題に対処することができます。フォーマットや内容のガイドラインを提供できます。

prompt = f"""    顧客への返信メールを書くことがあなたのタスクです。    カスタマーのメールを「.」で区切ってください。    レビューに感謝する返信を生成してください。        ガイドライン:    - センチメントがポジティブまたはニュートラルである場合、お客様に感謝し、    特定の詳細に言及してフィードバックをお伝えします。    - センチメントがネガティブである場合、不快な体験について    誠実に謝罪し、責任を引き受け、連絡先情報を提供します。    - お客様の時間とレビューに感謝し、特定のポイントに言及して    親密さを構築します。    - ネガティブな体験については、誠実に謝罪し、責任を引き受けます。\     カスタマーサービスの連絡先情報を提供します。    - 簡潔で思慮深いトーンを目指します。    - 「AIカスタマーエージェント」としてプロフェッショナルに終了します。    顧客レビュー:```{review}```    """    response = get_completion(prompt)print(response)

尊敬するお客様
香港ディズニーランドでのご体験を共有していただき、誠にありがとうございます。 お客様のフィードバックに感謝申し上げますが、訪問がお客様の期待に添えなかったことをお詫び申し上げます。アトラクションや乗り物の数が少なく、また、お土産や食事、チケットの価格が高いことで、ご不便をおかけしたことを深くお詫び申し上げます。これらの要因は、公園での全体的な体験に影響を与える可能性があることを理解しています。お客様が食事について満足していたこと、そしてパレードが楽しめたことを聞いてうれしく思います。また、混雑や不快な行動など、いくつかのお客様からのフィードバックについても、真剣に受け止め、公園の管理を改善し、すべてのお客様にとってより楽しい体験を提供するために取り組んでいきます。ご不明な点や追加のフィードバックがある場合は、弊社のカスタマーサービスチームまでお気軽にお問い合わせください([連絡先情報を挿入])。 お客様のフィードバックに価値をおくとともに、今後、より良い体験を提供できることを願っています。 この度は、貴重なレビューをありがとうございました。敬具、AIカスタマーエージェントより

素晴らしい仕事、AIカスタマーエージェント!✉️

まとめ

この記事では、Web UIとAPIの両方を使用してプロンプトエンジニアリングのベストプラクティスを探求しました。パーソナパターン、質問の改良、テンプレート、ゼロショット、連想プロンプティングなど、いくつかの有効なプロンプトパターンについて説明しました。さらに、ChatGPT APIを活用することで、シークレットキーの生成や、テキストの要約、翻訳、拡張の能力について探求しました。

このチュートリアルが、大規模な言語モデルを使用して創造性と生産性を高めることにインスピレーションを与え、アイデアを生み出し、新しい洞察を得たり、複雑な問題を解決したり、日々の業務を多くのレベルで強化するのに役立つことを願っています。可能性は無限大です!🤖✨

🍓このような記事を読んでサポートしていただける場合は、VoAGIメンバーになることを検討してください! VoAGIメンバーは、すべてのライターからの記事に完全アクセスできます。私の紹介リンクを使用すると、直接私の執筆をサポートできます。

🍓すでにメンバーで、私の記事を読むことに興味がある場合は、通知を受け取るように購読するか、VoAGIでフォローしてください。ご質問や提案がある場合は、お知らせください。

この記事の後にお勧めする追加リソース:

この記事を書く前に、私はPrompt Engineeringの習得に焦点を当てた2つのオンラインコースを修了しました。最初のコースは、DeepLearning.AIが提供するChatGPT Prompt Engineering for Developersで、特にAPIを使用している開発者の方には非常に役立つリソースです。2番目のコースは、Courseraが提供するPrompt Engineering for ChatGPTで、Web UI上でプロンプトを書いている場合に本当に役立ちます。この記事のほとんどの学びは、これら2つの貴重なリソースから得られました。興味がある場合は、ぜひ参考にしてみてください!

参考文献

  1. Prompt EngineeringのGoogleトレンド
  2. ディズニーランドの顧客レビューデータセット、ライセンス:CC0:パブリックドメイン
  3. DeepLearning.AIが提供するChatGPT Prompt Engineering for Developersコース
  4. Courseraが提供するPrompt Engineering for ChatGPT
  5. ヘッダー写真はUnsplashのLéonard Cotte氏によるものです
  6. その他の画像は著者によるものです

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more