ChatGPT

ChatGPT Prompt Engineering

ChatGPT提示工程

In this section, we cover the latest prompt engineering techniques for ChatGPT, including tips, applications, limitations, papers, and additional reading materials.

在本節中,我們介紹了最新的ChatGPT提示工程技術,包括技巧、應用、限制、論文和其他閱讀材料。

⚠️

This section is under heavy development.

⚠️

本節目前仍在大力開發中。

Topics:

主題:



ChatGPT Introduction

ChatGPT 簡介

ChatGPT is a new model trained by OpenAI (opens in a new tab) that has the capability to interact in a conversational way. This model is trained to follow instructions in a prompt to provide appropriate responses in the context of a dialogue. ChatGPT can help with answering questions, suggesting recipes, writing lyrics in a certain style, generating code, and much more.

ChatGPT是一個由OpenAI訓練的新模型,具有以對話方式互動的能力。該模型經過訓練,可以按照提示指示提供適當的回應,以符合對話的上下文。ChatGPT可以幫助回答問題、建議食譜、以特定風格撰寫歌詞、產生程式碼等等。

ChatGPT is trained using Reinforcement Learning from Human Feedback (RLHF). While this model is a lot more capable than previous GPT iterations (and also trained to reduce harmful and untruthful outputs), it still comes with limitations. Let's cover some of the capabilities and limitations with concrete examples.

ChatGPT是使用人類反饋的強化學習(RLHF)進行訓練的。雖然這個模型比以前的GPT迭代模型更加強大(並且還經過訓練以減少有害和不真實的輸出),但它仍然有一些限制。讓我們透過具體的例子來介紹一些能力和限制。

You can use the research preview of ChatGPT here but for the examples below we will use the Chat mode on the OpenAI Playground.

您可以在此處使用ChatGPT的研究預覽[chat.openai.com],但在下面的示範中,我們將使用OpenAI Playground上的“Chat”模式。


Reviewing The Conversation Task

審查對話任務

In one of the previous guides, we covered a bit about conversation capabilities and role prompting. We covered how to instruct the LLM to have a conversation in a specific style, with a specific intent, behavior, and identity.

在之前的指南中,我們介紹了一些關於對話能力和角色提示的內容。我們介紹了如何指示LLM以特定的風格、特定的意圖、行為和身份進行對話。

Let's review our previous basic example where we created a conversational system that's able to generate more technical and scientific responses to questions.

讓我們回顧一下我們之前的基本範例,我們建立了一個對話系統,能夠對問題產生更多技術和科學方面的回答。

Prompt:

提示:

The following is a conversation with an AI research assistant. The assistant tone is technical and scientific.

Human: Hello, who are you?
AI: Greeting! I am an AI research assistant. How can I help you today?
Human: Can you tell me about the creation of black holes?
AI:

From the example above, you can see two important components:

從上面的例子中,您可以看到兩個重要的元件:

  • the intent or explanation of what the chatbot is
  • the identity which instructs the style or tone the chatbot will use to respond

  • 聊天機器人的意圖或解釋
  • 指示聊天機器人回應時使用的風格或語調的身份

The simple example above works well with the text completion APIs that uses text-davinci-003. More recently, OpenAI announced the ChatGPT APIs (opens in a new tab), which is a more powerful and cheaper model called gpt-3.5-turbo was specifically built for this type of functionality (chat completions). In fact, OpenAI recommends this as their best model even for non-chat use cases. Other benefits of using the ChatGPT APIs are significant cost reduction (90%) and efficiency.

以上簡單的範例適用於使用 text-davinci-003 的文字完成 API。最近,OpenAI 宣佈了 ChatGPT APIs (opens in a new tab),這是一個更強大且更便宜的模型,名為 gpt-3.5-turbo,專門為這種功能(聊天完成)而建立。事實上,OpenAI 即使對於非聊天使用案例,也推薦此為其最佳模型。使用 ChatGPT APIs 的其他好處是顯著的成本降低(90%)和效率。

Big companies like Snap Inc. and Instacart are already integrating conversational features powered by ChatGPT on their products that range from personalized recommendations to open-ended shopping goals.

像Snap Inc.和Instacart這樣的大公司已經在他們的產品中整合了由ChatGPT提供支援的對話功能,這些產品從個性化推薦到開放式購物目標不等。


Conversations with ChatGPT

與ChatGPT的對話

Multi-turn Conversations

多回合對話

To begin demonstrating the capabilities of ChatGPT, we will use the chatbot assistant example above and discuss the results. Compared to text-davinci-003, the gpt-3.5-turbo model that powers ChatGPT uses a chat format as input. The model expects a series of messages as input and uses those to generate a response.

開始展示 ChatGPT 的能力,我們將使用上面的聊天機器人助手示範並討論結果。與 text-davinci-003 相比,驅動 ChatGPT 的 gpt-3.5-turbo 模型使用聊天格式作為輸入。該模型期望一系列訊息作為輸入,並使用這些訊息產生回復。

Input:

輸入:

SYSTEM: You are an AI research assistant. You use a tone that is technical and scientific.
USER: Hello, who are you?
ASSISTANT: Greeting! I am an AI research assistant. How can I help you today?
USER: Can you tell me about the creation of black holes?

Output:

輸出:

ASSISTANT: Of course! Black holes are created when a massive star runs out of fuel and collapses under its own gravity. This collapse causes the star to become incredibly dense, with a gravitational field so strong that not even light can escape it. This point of no return is known as the event horizon. Once a star crosses the event horizon, it is considered a black hole...

Note that in the example above, I have simplified the input and output but the ChatGPT chat completion API requires messages to be in a specific format. I have added a snapshot below of how this example would look using the Chat Mode in the OpenAI Playground:

請注意,上面的示範中,我簡化了輸入和輸出,但 ChatGPT 聊天完成 API 要求訊息以特定格式呈現。我在下面新增了一個快照,展示了在 OpenAI Playground 中使用 聊天模式 的示範。

CHATGPT1

CHATGPT1
(This content is already in Markdown syntax, so it will not be translated.)

The more formal API call for our example would look something like the example below:

我們的範例中,更正式的 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?"}
    ]
)

In fact, the way developers interact with ChatGPT in the future is expected to be done via the Chat Markup Language (opens in a new tab) (ChatML for short).

事實上,未來開發者與ChatGPT互動的方式預計將透過聊天標記語言 (opens in a new tab)(簡稱ChatML)完成。

Single-turn tasks

單輪任務

The chat format enables multi-turn conversations but it also supports single-turn tasks similar to what we used with text-davinci-003. This means we can use ChatGPT to perform similar tasks as what we have demonstrated for the original GPT models. For example, let's try to perform the following question answering task using ChatGPT:

聊天格式支援多回合對話,但也支援類似於我們使用的 text-davinci-003 的單回合任務。這意味著我們可以使用 ChatGPT 執行與我們為原始 GPT 模型示範的類似任務。例如,讓我們嘗試使用 ChatGPT 執行以下問答任務:

Input:

輸入:

USER: 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:

Output:

輸出:

ASSISTANT: Mice.

Keep in mind that I am adding the USER and ASSISTANT labels to better demonstrate how the task can be performed using ChatGPT. Here is the example using the Playground:

請記住,我正在新增“USER”和“ASSISTANT”標籤,以更好地示範如何使用ChatGPT執行任務。以下是使用Playground的示範:

CHATGPTCLASSIC

CHATGPTCLASSIC
(This text is already in Markdown syntax, so it will not be translated.)

More formally, this is the API call (I've only included the message component of the request):

更正式地說,這是 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,
)

Instructing Chat Models

指導聊天模型

According to the official OpenAI docs, snapshots of the gpt-3.5-turbo model will also be made available. For example, we can access the snapshot from March 1 gpt-3.5-turbo-0301. This allows developers to opt for specific model versions. This also means that the best practices for instructing models may change from version to version.

根據官方的OpenAI文件,gpt-3.5-turbo模型的快照也將可用。例如,我們可以訪問3月1日的快照gpt-3.5-turbo-0301。這使得開發人員可以選擇特定的模型版本。這也意味著指導模型的最佳實踐可能會因版本而異。

The current recommendation for gpt-3.5-turbo-0301 is to add instructions in the user message as opposed to the available system message.

目前對於 gpt-3.5-turbo-0301 的建議是在 user 訊息中新增指示,而不是使用可用的 system 訊息。


References

參考文獻