本文向大家介绍了 ChatGPT 的官方收费规则以及编写 ChatGPT 提示词的基本方法,包括通用的提示词编写框架、核心的提示词编写原则以及一些实际应用中的小技巧,帮助大家有效驯服野生 ChatGPT,满足日常学习和工作需求。
科普:ChatGPT 到底是如何收费的
大语言模型将文本拆解为 token
——一种处理信息的最小单元,介于“字”和“词”之间。
例如,下面有一段文字:
它共包含 185 个 tokens
:
ChatGPT 的计费逻辑就是 计算输入和输出的 tokens
,不同模型的官方定价如下:
Model | Input | Output |
---|---|---|
gpt-4-1106-preview | $0.01 / 1K tokens | $0.03 / 1K tokens |
gpt-4-1106-vision-preview | $0.01 / 1K tokens | $0.03 / 1K tokens |
gpt-4 | $0.03 / 1K tokens | $0.06 / 1K tokens |
gpt-4-32k | $0.06 / 1K tokens | $0.12 / 1K tokens |
gpt-3.5-turbo-1106 | $0.0010 / 1K tokens | $0.0020 / 1K tokens |
gpt-3.5-turbo-instruct | $0.0015 / 1K tokens | $0.0020 / 1K tokens |
今天是 2023年11月29日
,人民币和美元的汇率为:
1 | 1 美元 = 7.1258 人民币 |
以目前性能最好的 GPT-4-turbo
为例:
每一万 tokens
的输入 + 两万 tokens
的输出 = 0.7 美元 = 5 人民币
当然,OpenAI 经常面向用户或开发者“整活”,例如每月的免费额度、开发者激励计划等,前段时间20人民币左右就可以买到120美金的 OpenAI 账号,因此从开发者的角度而言,实际的成本可能要低于按 token
计算的数值。
如果你是一位精打细算的选手,你可以在下面的平台上测试一段文本对应 tokens
的数量:
框架:通用提示词编写规则参考
目前,应用比较广泛的提示词框架主要有两个:Prompt 四要素法 和 CRISPE Prompt 提示词框架,它们存在一定的共性。
Prompt 四要素法
Prompt 四要素法指的是:
-
指令
Instruction
你希望模型执行的具体任务或指令。
-
上下文
Context
上下文、背景或者外部信息,用于引导模型提供更好的响应。
-
输入数据
Input Data
你的输入内容或问题。
-
输出指示
Output Indicator
模型输出响应的类型或格式。
CRISPE Prompt 提示框架
-
CR = Capacity and Role
能力和角色你希望模型扮演的角色,以及具备的能力。
-
I = Insight
洞察力请求的背景、上下文,以及其他与请求有关的辅助信息。
-
S = Statement
陈述你希望模型做什么。
-
P = Personality
个性模型响应内容的风格,个性或态度。
-
E = Experiment
实验让模型提供多个答案以供选择。
合并后的通用提示词框架
综合考量上述两种框架,可以得出一个在实际应用中较为推荐的 Prompt 编写框架:
- 角色(Role):希望模型扮演的角色,以及具备的能力。
- 指令(Instruction):希望模型执行的具体任务或指令。
- 上下文(Context):上下文、背景或者外部信息,用于引导模型提供更好的响应。
- 输入数据(Input Data):我们希望获得响应的"输入内容或问题"。
- 输出指示(Output Indicator):模型输出响应的数据格式,内容的风格、个性或态度,以及其他的输出要求。
实际使用中的 Prompt 应该尽可能多地、尽可能清晰地包含框架中的要素。
当然,Prompt 的编写遵循“奥卡姆剃刀原则”——复杂不代表好,当两段 Prompt 都能清晰地描述问题时,应该选择较为简洁的那一段。
省流:最核心的提示词编写原则
两大原则:
-
为 GPT 设置身份+技能
常用的身份:教授、专家、xx师、xx家等
你是一位 机器学习领域的教授,研究方向 为聚类算法,你在这一领域有 十余年的丰富教学经验,善于 使用通俗易懂的语言解释聚类算法相关的数学原理,能够熟练地 使用
python
编写代码来实现机器学习经典算法。 -
让 GPT 一边回答一边推理(解释自己为什么这么回答)
请你编写
python
代码实现 k-means 聚类算法,将下面我提供给你的样本进行分类。你需要尽可能多地在代码中添加注释,以清晰地解释每一段代码的含义和它起到的作用。
扩展:编写 Prompt 的小技巧
明确什么样的回答是“好的”
确保你和大模型都能理解 什么样的回答是好的,例如:
示例
一个失败的 Prompt
{document} 为以上文章写一篇摘要。
一个比较成功的 Prompt
{document} 使用通俗易懂的语言为以上文章写一篇摘要,摘要应包括一个小结和一个相关要点的列表,同时加粗关键部分以提高可读性。
在上面的示例中,好的摘要被定义为:
- 通俗易懂的
- 包括一个小结和一个相关要点的列表
- 对关键部分加粗
精确表达任务指令
你可以采用分条叙述的形式,让你的 Prompt 看起来更加清晰,同时也更易于你的调整。
示例
一个比较成功的 Prompt
{document} 使用通俗易懂的语言为以上文章写一篇摘要,摘要应包括一个小结和一个相关要点的列表,同时加粗关键部分以提高可读性。
一个更加成功的 Prompt
{document} 为以上文章写一篇摘要,具体要求如下:
- 使用通俗易懂的语言撰写摘要
- 摘要应包括一个小结和一个相关要点的列表
- 加粗摘要的关键部分以提高可读性
让 GPT 学会道歉而不是嘴硬瞎编
有的时候,由于任务本身的复杂性或提示词的不足,ChatGPT 可能无法回答你的问题,这时候 **它就会开始瞎编。**为了避免这种情况的发生,你可以为它设计一个 兜底的策略。
示例
一个失败的 Prompt
请你基于我的兴趣爱好,向我推荐几部电影,我的兴趣爱好是xxx。
一个较为成功的 Prompt
请你基于我的兴趣爱好,向我推荐几部电影,我的兴趣爱好是xxx。当你无法为我推荐电影时,你必须回答“抱歉,我无法为您推荐电影。”
强调更为重要的要求
当任务较为复杂时,一条 Prompt 中可能包含了很多个要求,然而模型可能会 倾向于关注靠前和靠后的指令。因此,对于一些重要的限制条件,你可以:
- 将重要的要求或限制放在最前面或最后面
- 尝试使用特殊符号强调某些指令,例如
**指令内容**
或"指令内容"
- 使用 务必、严格、强调 等词来强调某些指令
小登,你懂我意思?
在提示词最后添加一句:
如果你理解了我的要求,请说“我们开始吧”。
往往会有奇效。
摆烂:让 ChatGPT 帮你写提示词
我们可以通过下面的提示词,让 ChatGPT 扮演提示词创作者,你只需要告诉他提示词的主题,并在它的引导下逐步完善你的需求,一份较为成熟的提示词就写好了。
以下是提示词文本:
1 | Read all of the instructions below and once you understand them say "Shall we begin:" |
这段提示词占了 392 个 tokens
,经费在燃烧 但不是很烧。
请注意,这段提示词对上下文连续性的依赖较强,因此如果你的平台为了省钱关闭了上下文连续功能,或者限制了上下文记忆,请你先调整设置。
当然,如果你不想完全摆烂,你也可以通过上面的方法编写提示词,让 ChatGPT 引导你自己写出更好的提示词。例如:
你是一位专业的 Prompt Engineer,善于根据用户的需求,引导用户写出高效的提示词。你提供的帮助可能包括:对一个主题的扩展、对思考角度的提示、对现有提示词的补充以及其他你作为专业人员所认为的必要行为。当你认为用户提供的信息不够全面时,你会主动询问进一步的信息,而不是强行根据现有信息给出解答。如果你明白了我的需求,请说“让我们开始吧。”