什么是ChatGPT prompt

什么是 Prompt

简单的理解它是给 AI 模型的指令

它可以是一个问题、一段文字描述,甚至可以是带有一堆参数的文字描述。AI 模型会基于 prompt 所提供的信息,生成对应的文本,亦或者图片。

例如,我们问: 人类第一次进入太空是什么时候?,这个问题本身就是Prompt。它会回答:

人类第一次进入太空是在1961年4月12日,苏联宇航员尤里·加加林通过”伊东1号”(Vostok 1)载人航天器成功地进行了一次绕地球的飞行。这次历史性的航天任务使加加林成为了第一个进入太空的人类,并且他在飞行中绕地球一周,历时108分钟。这一事件标志着人类太空探索的开端,为后来的航天事业奠定了基础。

我们继续提问:美国第一次是什么时候?

美国第一次进入太空是在1961年5月5日,美国宇航员阿兰·谢泼德通过”自由号”(Freedom 7)载人航天器进行了一次短暂的次轨道飞行。这次任务被称为”水星计划”(Mercury-Redstone 3),是美国宇航局(NASA)的第一个载人航天任务。谢泼德的飞行持续时间为15分钟,他在飞行中达到了最高海拔187.5公里,并成功返回地球。这次任务标志着美国成为第二个成功将宇航员送入太空的国家。

上面这个例子,GPT回答得很棒。这一次和GPT的对话,我们还是有几个问题可以讨论一下。

1. 为什么GPT会知道答案?

GPT (generative pre-trained transformer) 是一种预训练的生成模型,旨在掌握自然语言和代码的理解能力,通过对大规模文本数据的训练来学习语言的统计规律和语义联系。它并非通过直接知晓答案来回答问题,而是通过学习大量文本数据中的模式和语义信息生成合乎逻辑的回答。

当你提出问题时,GPT会依据其先前的训练经验和所学习到的语言规律,试图生成一个恰当的答复。它并非直接知悉答案,而是通过理解、推理和生成来回应输入的问题。然而,由于GPT是基于统计规律的模型,其回答可能受训练数据的偏见、语义模糊和上下文理解的限制影响,因此,其提供的答案可能并非完全准确。

也就是说,ChatGPT并不明白你的提问,它只是根据统计学,推断并根据以前的训练来推测应该如何回复你。而且,到目前而为之,ChatGPT 的训练数据仅有 2021 年 9 月以前的,如果你问这个时间以后的问题,比如美国现任总统是谁,他的回答是

截至我上次更新的信息(2021年9月),美国总统是乔·拜登(Joe Biden)。然而,请注意,由于我是在2021年9月之前训练的,因此我无法提供最新的信息。请确认当前日期以获取最准确的信息。

2. 为什么能够连续提问?

当我给它第二个问题 美国第一次是什么时候? 时,我并没有指明美国第一次做什么事是什么时候,但GPT任然能够明白我指的是美国第一次进入太空是什么时候?

很显然,GPT具有连续对话的能力。这种连续对话的能力是因为ChatGPT拥有记忆力吗?答案是否定的,我们所使用的ChatGPT并不能够记住上一次甚至是上一句和你对话的内容是什么。那它是如何能够做到拥有上下文连续对话的呢?答案是,在你每一次对话时,你会把对话记录完整发给ChatGPT,它通过分析对话记录,来推断和分析你的最后一次提问。

所以,在每一次进行新的对话的时候,请创建一个新的回话/清空历史记录,以防止ChatGPT被上下文中的内容所干扰,以获取更加准确的回答。

BTW,ChatGPT API是按照Token进行计费的。
Token实际上就是按照提问和回答的字数来进行计算,所以,清空对话还有助于节省使用成本。
具体的计费方式可以参考OpenAi官网。

Prompt的组成

了解了什么是Prompt,我们再从数据入手,了解一下我们与ChatGPT对话中,对话中包括了什么,Prompt由什么内容组成。我们再进行一次对话 ``````

TI8的亚军是谁

TI8(The International 2018)的亚军是PSG.LGD战队。

TI9的季军是谁

TI9的季军是中国战队PSG.LGD。

TI10的亚军是谁

TI10(The International 10)尚未举行,因此还没有获得亚军的战队。

让我们看一下最后一次提问的请求内容,

{
    "messages": [
        {
            "role": "system",
            "content": "You are ChatGPT, a large language model trained by OpenAI."
        },
        {
            "role": "user",
            "content": "TI8的亚军是谁"
        },
        {
            "role": "assistant",
            "content": "TI8(The International 2018)的亚军是PSG.LGD战队。"
        },
        {
            "role": "user",
            "content": "TI9的季军是谁"
        },
        {
            "role": "assistant",
            "content": "TI9的季军是中国战队PSG.LGD。"
        },
        {
            "role": "user",
            "content": "TI10的亚军是谁"
        }
    ],
    "temperature": 0.6,
    "max_tokens": 512,
    "top_p": 1,
    "frequency_penalty": 0,
    "presence_penalty": 0,
    "model": "gpt-3.5-turbo-0613",
    "stream": true
}

让我们只关注 messages ,这个字段中明显包含了本次所有的对话记录。逐一分析一下:

  • 每条消息都由rolecontent组成
  • role表示消息的角色或身份,可以是systemuserassistant
  • content表示消息的内容,即具体的文本内容。它可以是用户的问题、指令或陈述,也可以是助手的回答、建议或解释。

system

system用于定义 AI 的行为和角色,和背景。

通常是messages中的第一条,给出对话的大致方向,或者设定对话的语气和风格。

例如,可以把它设置为:“你是一个像莎士比亚一样说话的助手”或“你是一名数学老师”。这个消息可以帮助设定对话的语境,以便 AI 更好地理解其在对话中的角色。

也可以更加详细地进行设置。比如说,你需要一名数学老师,可以把它设置为:“我想让你扮演一名数学老师。我将提供一些数学方程式或概念,你的工作是用易于理解的术语来解释它们。这可能包括提供解决问题的分步说明、用视觉演示各种技术或建议在线资源以供进一步研究。”

user

用户输入的消息或问题。
在输入时最好简洁易懂,并减少一些歧义,少用模棱两可的词语。

assistant

Ai回复的内容。

通常我们关注systemuser,因为这2个通常是用户输入的内容,当然,高阶的用法也可以伪造assistant对话的内容,用作引导ChatGPT回复,我们暂时不做讨论。


现在,我们了解了什么是prompt,在下一篇文章中,我会给出一些最佳实践,来帮助大家写出更好的prompt。


什么是ChatGPT prompt
https://coding.gs/2023/07/03/ghatgpt-prompt/
作者
K
发布于
2023年7月4日
许可协议