ChatGPT プロンプトエンジニアリングガイドを和訳してみた

以下、dair.aiがGithubで公開しているプロンプトエンジニアリングガイドを、deeplの翻訳を元に修正したものです。

ChatGPT プロンプトエンジニアリング

このセクションでは、ChatGPTに関する最新のプロンプトエンジニアリング技術について、Tips、アプリケーション、制限、論文、追加の読み物などを取り上げています。

トピックス

  1. ChatGPTの紹介

  2. 会話のタスクを確認する

  3. ChatGPTとの対話

  4. Pythonノートブック


1. ChatGPTの紹介

ChatGPTは、会話形式で対話できる新しいモデルOpenAIによって訓練されたです。このモデルは、プロンプトの指示に従い、対話の文脈の中で適切な応答を提供するように訓練されています。ChatGPTは、質問への回答、レシピの提案、特定のスタイルで歌詞を書くこと、コードの生成など、さまざまなことを支援することができます。
ChatGPTは、人間のフィードバックからの強化学習(RLHF)を使って学習されます。このモデルは、以前のGPTの繰り返しよりもずっと高性能ですが(有害で真実味のない出力を減らすように訓練されています)、それでも限界があります。具体的な例を挙げながら、その能力と限界のいくつかを取り上げてみましょう。
ChatGPTのリサーチプレビューこちらを使うことができますが、以下の例ではOpenAI PlaygroundのChatモードを使うことにします。


2. 会話のタスクを確認する

以前のガイド](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/guides/prompts-basic-usage.md#conversation)では、会話能力と役割プロンプトについて少し触れました。LLMに特定のスタイルで、特定の意図、行動、アイデンティティを持った会話をするように指示する方法について説明しました。
前回の基本的な例で、質問に対してより専門的で科学的な回答を生成することができる会話システムを作成しましたので、復習しておきましょう。
プロンプト:。

以下は、AIリサーチアシスタントとの会話です。アシスタント口調は技術的、科学的です。

人間:こんにちは、あなたは誰ですか?
AI:ご挨拶です!私はAIの研究助手です。今日はどのようなご用件でしょうか?
人間の方です: ブラックホールの生成について教えてください。
AI:

上の例から、2つの重要な構成要素を見ることができます:

  • チャットボットが何であるかというインテントまたは説明

  • チャットボットが応答する際に使用するスタイルやトーンを指示するアイデンティティです。

上記の単純な例は、text-davinci-003を使用するテキスト補完APIでうまく動作します。より最近では、OpenAIがChatGPT APIを発表しました(https://openai.com/blog/introducing-chatgpt-and-whisper-apis)。これはより強力で安価なモデルで、gpt-3.5-turboはこの種の機能(チャット補完)のために特に作られました。OpenAIでは、チャット以外のユースケースでも、このモデルをベストモデルとして推奨しています。 ChatGPT APIを使用する他の利点は、大幅なコスト削減(90%)と効率化です。
Snap Inc.やInstacartのような大企業は、すでにChatGPTを利用した会話機能を自社製品に統合しており、パーソナライズされた推奨から自由なショッピング目標まで幅広く対応しています。


3. ChatGPTとの会話

マルチターン会話

ChatGPTの機能のデモンストレーションを始めるために、上記のチャットボットアシスタントの例を使って、その結果について説明します。text-davinci-003と比較して、ChatGPTを動かす gpt-3.5-turbo` モデルは入力としてチャット形式を使用します。このモデルは入力として一連のメッセージを期待し、それらを使って応答を生成します。

入力:

SYSTEM:あなたはAIの研究助手です。あなたは技術的、科学的な口調を使っていますね。
ユーザー:こんにちは、あなたは誰ですか?
アシスタント:ご挨拶です!私はAIの研究助手です。今日はどのようなご用件でしょうか?
ユーザー:ブラックホールの生成について教えてください。

出力:

アシスタント:もちろんです!ブラックホールとは、巨大な星が燃料を使い果たし、自らの重力で崩壊したときにできるものです。この崩壊によって、星は信じられないほど密度が高くなり、光さえも逃れられないほど強い重力場ができます。この帰らざる地点が事象の地平線と呼ばれるものです。事象の地平線を超えた星は、ブラックホールとみなされる...

上記の例では、入力と出力を簡略化していますが、ChatGPTのチャット補完APIでは、メッセージは特定のフォーマットである必要があることに注意してください。OpenAI PlaygroundのChat Modelを使用した場合のスナップショットを以下に追加しておきます:

この例では、より正式なAPIコールは、以下の例のようになります:

import openai

openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are an AI research assistant. You use a tone that is technical and scientific."},
        {"role": "user", "content": "Hello, who are you?"},
        {"role": "assistant", "content": "Greeting! I am an AI research assistant. How can I help you today?"},
        {"role": "user", "content": "Can you tell me about the creation of black holes?"}
    ]
)

今後、開発者がChatGPTとやりとりする方法は、Chat Markup Language(略称:ChatML)を介して行われることが予想されます。

シングルターン・タスク

チャット形式では、複数ターンでの会話が可能ですが、text-davinci-003で使用したものと同様の1ターンでのタスクもサポートしています。つまり、ChatGPTを使えば、オリジナルのGPTモデルで実証したのと同様のタスクを実行することができるのです。例えば、以下のような質問応答タスクをChatGPTで実行してみます:

Input:

ユーザー:以下の文脈に基づき、質問に答えてください。回答は短く、簡潔に。答えに自信がない場合は、「Unsure about answer」と答えてください。

背景 テプリズマブのルーツは、ニュージャージー州のオーソ・ファーマシューティカルという製薬会社です。そこで科学者たちは、OKT3と呼ばれる抗体の初期バージョンを作りました。この分子はもともとマウスから採取されたもので、T細胞の表面に結合し、その殺傷能力を制限することができた。1986年には、腎臓移植後の臓器拒絶反応を防ぐ目的で承認され、ヒトへの使用が許可された最初の治療用抗体となりました。

質問です: OKT3はもともと何から作られたのですか?

Output:


ASSISTANT: Mice.

USERとASSISTANTのラベルは、ChatGPTを使用してタスクを実行する方法をよりよく示すために追加していることに留意してください。以下は、Playgroundを使用した例です:


ChatGPTを使ったタスクの実行方法をよりよく示すために、`USER`と`ASSISTANT`ラベルを追加していることに留意してください。以下はプレイグラウンドを使った例です:

![](../img/chatgpt-classic.png)

より正式には、これがAPIコールです(リクエストのメッセージコンポーネントだけを入れました):

``python
CONTENT = """以下の文脈に基づき、質問に答える。答えは短く、簡潔に。答えに自信がない場合は、「Unsure about answer」と答えてください。

文脈 テプリズマブのルーツは、ニュージャージー州のオーソ・ファーマシューティカルという製薬会社です。そこで科学者たちは、OKT3と呼ばれる抗体の初期バージョンを作りました。この分子はもともとマウスから採取されたもので、T細胞の表面に結合し、その殺傷能力を制限することができた。1986年には、腎臓移植後の臓器拒絶反応を防ぐ目的で承認され、ヒトでの使用が認められた最初の治療用抗体となりました。

質問です: OKT3はもともと何から作られたのですか?

答え
"""

response = openai.ChatCompletion.create()
    model="gpt-3.5-turbo",
    messages=[
        {"role""ユーザー", "コンテンツ": CONTENT}です、
    ],
    temperature=0となります、
)

より正式には、これがAPIコールです(リクエストのメッセージ・コンポーネントのみを記載しました):

CONTENT = """Answer the question based on the context below. Keep the answer short and concise. Respond \"Unsure about answer\" if not sure about the answer.

Context: Teplizumab traces its roots to a New Jersey drug company called Ortho Pharmaceutical. There, scientists generated an early version of the antibody, dubbed OKT3. Originally sourced from mice, the molecule was able to bind to the surface of T cells and limit their cell-killing potential. In 1986, it was approved to help prevent organ rejection after kidney transplants, making it the first therapeutic antibody allowed for human use.

Question: What was OKT3 originally sourced from?

Answer:
"""

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": CONTENT},
    ],
    temperature=0,
)

チャットモデルを指導する

OpenAIの公式ドキュメントによると、gpt-3.5-turboモデルのスナップショットも公開される予定です。例えば、3月1日のスナップショット「gpt-3.5-turbo-0301`」にアクセスすることができます。これにより、開発者は特定のモデルバージョンを選ぶことができます。これはまた、モデルを指示するためのベストプラクティスが、バージョンごとに変わる可能性があることを意味します。
現在のところ、gpt-3.5-turbo-0301では、systemメッセージとは別に、userメッセージに指示を追加することを推奨しています。


4. Pythonノートブック

ChatGPT API Intro … openaiライブラリを使用してChatGPT APIを呼び出す方法について詳しく説明しています。

ChatGPT API with LangChain … LangChainライブラリを使ったChatGPTの機能の使い方をご紹介します。


参考文献


前項(アプリケーション)
次のセクション(逆境プロンプト)

この記事が気に入ったらサポートをしてみませんか?