文章目录
- 一、什么是提示词工程
- 二、编写提示词的基本原则
-
- [1 、编写清晰、具体的指令](#1 、编写清晰、具体的指令)
-
- (1)策略一:使用分隔符清晰地表示输入的不同部分
- [(2)策略二:要求一个结构化的输出,可以是 Json、HTML 等格式](#(2)策略二:要求一个结构化的输出,可以是 Json、HTML 等格式)
- (3)策略三:要求模型检查是否满足条件
- (4)策略四:提供少量示例
- 2、给模型时间去思考
- 3、局限性
- 4、总结五大Prompt优化策略
- 三、基础Prompt结构
- 四、Prompt技巧
- 五、大语言模型常用场景
- 附一:参考网站
一、什么是提示词工程
提示词工程,或称Prompt Engineering,是一种专门针对语言模型进行优化的方法。它的目标是通过设计和调整输入的提示词(prompt),来引导这些模型生成更准确、更有针对性的输出文本。
在与大型预训练语言模型如GPT-3、BERT等交互时,给定的提示词会极大地影响模型的响应内容和质量。提示词工程关注于如何创建最有效的提示词,以便让模型能够理解和满足用户的需求。这可能涉及到对不同场景的理解、使用正确的词汇和语法结构,以及尝试不同的提示策略以观察哪种效果最佳。
二、编写提示词的基本原则
1 、编写清晰、具体的指令
你应该通过提供尽可能清晰和具体的指令来表达您希望模型执行的操作。 这将引导模型给出正确的输出,并减少你得到无关或不正确响应的可能。
编写清晰的指令不意味着简短的指令,因为在许多情况下,更长的提示实际上更清晰且提供了更多上下文,这实际上可能导致更详细更相关的输出。
比如说以下指令:
请描述一下风。
请描述一下西北风。
请描述一下春天的风。
什么是CSP?
什么是计算机网络中的CSP(内容安全策略)?
什么是计算机网络中的CSP(内容安全策略)?并详细描述其原理。
为指令添加一些详细的背景信息,输出的结果会更加符合我们的预期。
(1)策略一:使用分隔符清晰地表示输入的不同部分
分隔符可以是:```,"",<>,,<\tag>等。
可以使用任何明显的标点符号将特定的文本部分与提示的其余部分分开。 这可以是任何可以使模型明确知道这是一个单独部分的标记。使用分隔符是一种可以避免提示注入的有用技术。 提示注入是指如果用户将某些输入添加到提示中,则可能会向模型提供与您想要执行的操作相冲突的指令,从而使其遵循冲突的指令而不是执行您想要的操作。 即:输入里面可能包含其他指令,会覆盖掉你的指令,对此,使用分隔符是一个不错的策略。
以下是一个例子,我们给出一段话并要求 GPT 进行总结,在该示例中我们使用 ```来作为分隔符:
py
text = f"""
你应该提供尽可能清晰、具体的指示,以表达你希望模型执行的任务。
这将引导模型朝向所需的输出,并降低收到无关或不正确响应的可能性。
不要将写清晰的提示与写简短的提示混淆。
在许多情况下,更长的提示可以为模型提供更多的清晰度和上下文信息,从而导致更详细和相关的输出。
"""
# 需要总结的文本内容
prompt = f"""
把用三个反引号括起来的文本总结成一句话。
```{text}```
"""
# 指令内容,使用 ```来分隔指令和待总结的内容
response = get_completion(prompt)
print(response)
以下示例也能看出,通过使用分隔符对结果有很大的不同:
正例1:
- 提示:请生成一个HTML文档,包括标题、正文和页脚,使用
<title>
,<p>
和<footer>
标签分隔不同部分。 - 此提示清晰地指定了使用HTML标签作为分隔符,以便生成不同部分的内容。
正例2:
- 提示:使用逗号分隔以下单词并将其排序:apple, banana, cherry, date。
- 分隔符"逗号"明确指定了单词之间的分割方式。
正例3:
- 提示:生成一个JSON对象,包括姓名、年龄和地址字段,使用
,
作为字段分隔符。 - 此提示使用了分隔符
,
来指导生成JSON对象。
反例1:
- 提示:创建一个包含标题和正文的HTML文档。
- 这个提示没有明确指定使用什么分隔符来区分标题和正文,导致不够清晰。
反例2:
- 提示:列出以下水果:苹果,香蕉,樱桃,枣。
- 缺乏明确的分隔符,难以确定应如何分隔水果名称。
反例3:
- 提示:生成一个包含学生姓名、学号和成绩的CSV文件。
- 缺少分隔符的明确指定,CSV文件应该使用什么分隔符。
(2)策略二:要求一个结构化的输出,可以是 Json、HTML 等格式
要求生成一个结构化的输出,这可以使模型的输出更容易被我们解析,例如,你可以在 Python 中将其读入字典或列表中。
在以下示例中,我们要求 GPT 生成三本书的标题、作者和类别,并要求 GPT 以 Json 的格式返回给我们,为便于解析,我们指定了 Json 的键。
py
prompt = f"""
请生成包括书名、作者和类别的三本虚构书籍清单,
并以 JSON 格式提供,其中包含以下键:book_id、title、author、genre。
"""
response = get_completion(prompt)
print(response)
最终的结果可能需要截取:
举例:
把xxx的内容按照如下格式进行输出:
```
<步骤名>:<步骤说明>
```
举例:
部署和维护:部署网站到生产服务器上。设置监控和日志记录,以便实时监测网站性能和安全性。定期更新和维护网站,以确保其正常运行。
正例1:
- 提示:请生成一个JSON格式的联系人列表,每个联系人包括姓名、电子邮件和电话号码。
- 这个提示明确要求生成结构化的JSON格式输出。
正例2:
- 提示:创建一个HTML表格,包含产品名称、价格和库存数量。
- HTML表格是结构化输出,可以清晰地呈现产品信息。
正例3:
- 提示:生成一个XML文档,包括书籍的标题、作者和出版日期。
- 这个提示要求生成结构化的XML格式输出。
反例1:
- 提示:列出五种你喜欢的电影。
- 缺少结构化输出的要求,难以确定应该以何种形式列出电影。
反例2:
- 提示:描述你最喜欢的度假胜地。
- 这个提示没有要求特定的结构化输出,可能导致不一致的回答。
反例3:
- 提示:生成一个包含产品名称、价格和库存数量的列表。
- 虽然提到了数据项,但缺乏结构化输出的具体要求。
(3)策略三:要求模型检查是否满足条件
如果任务做出的假设不一定满足,我们可以告诉模型先检查这些假设,如果不满足,指示并停止执行。
你还可以考虑潜在的边缘情况以及模型应该如何处理它们,以避免意外的错误或结果。 在如下示例中,我们将分别给模型两段文本,分别是制作茶的步骤以及一段没有明确步骤的文本。 我们将要求模型判断其是否包含一系列指令,如果包含则按照给定格式重新编写指令,不包含则回答未提供步骤。
py
# 有步骤的文本
text_1 = f"""
泡一杯茶很容易。首先,需要把水烧开。
在等待期间,拿一个杯子并把茶包放进去。
一旦水足够热,就把它倒在茶包上。
等待一会儿,让茶叶浸泡。几分钟后,取出茶包。
如果你愿意,可以加一些糖或牛奶调味。
就这样,你可以享受一杯美味的茶了。
"""
prompt = f"""
您将获得由三个引号括起来的文本。
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:
第一步 - ...
第二步 - ...
...
第N步 - ...
如果文本中不包含一系列的指令,则直接写"未提供步骤"。"
"""{text_1}"""
"""
response = get_completion(prompt)
print("Text 1 的总结:")
print(response)
# >>>>>>> 输出 <<<<<<<
Text 1 的总结:
第一步 - 把水烧开。
第二步 - 拿一个杯子并把茶包放进去。
第三步 - 把烧开的水倒在茶包上。
第四步 - 等待几分钟,让茶叶浸泡。
第五步 - 取出茶包。
第六步 - 如果你愿意,可以加一些糖或牛奶调味。
第七步 - 就这样,你可以享受一杯美味的茶了。
# 无步骤的文本
text_2 = f"""
今天阳光明媚,鸟儿在歌唱。
这是一个去公园散步的美好日子。
鲜花盛开,树枝在微风中轻轻摇曳。
人们外出享受着这美好的天气,有些人在野餐,有些人在玩游戏或者在草地上放松。
这是一个完美的日子,可以在户外度过并欣赏大自然的美景。
"""
prompt = f"""
您将获得由三个引号括起来的文本。
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:
第一步 - ...
第二步 - ...
...
第N步 - ...
如果文本中不包含一系列的指令,则直接写"未提供步骤"。"
"""{text_2}"""
"""
response = get_completion(prompt)
print("Text 2 的总结:")
print(response)
# >>>>>>> 输出 <<<<<<<
Text 2 的总结:
未提供步骤。
正例1:
- 提示:请生成一个HTML文档,确保它包含
<title>
,<p>
和<footer>
标签。 - 此提示要求模型检查生成的HTML文档是否包含指定的标签。
正例2:
- 提示:生成一个包含至少三个联系人的JSON列表,每个联系人必须包括姓名、电子邮件和电话号码。
- 这个提示明确要求模型生成满足特定条件的JSON列表。
正例3:
- 提示:创建一个XML文档,其中书籍的标题必须包含不超过50个字符。
- 此提示要求模型确保生成的XML文档中的标题不超过指定字符数。
反例1:
- 提示:生成一个HTML文档,但不提供任何进一步的条件。
- 缺少明确的条件,模型不知道生成的HTML文档应该包含什么。
反例2:
- 提示:列出至少三个联系人的JSON列表。
- 缺少对联系人数据的具体要求,难以检查是否满足条件。
反例3:
- 提示:创建一个XML文档,包括书籍的作者。
- 缺乏明确的条件来指导生成的XML文档应该如何包括作者信息。
(4)策略四:提供少量示例
在要求模型执行实际任务之前,提供给它少量成功执行任务的示例。 例如,在以下的示例中,我们告诉模型其任务是以一致的风格回答问题,并先给它一个孩子和一个祖父之间的对话的例子。 孩子说,"教我耐心",祖父用这些隐喻回答。 因此,由于我们已经告诉模型要以一致的语气回答,现在我们说"教我韧性",由于模型已经有了这个少样本示例,它将以类似的语气回答下一个任务。
py
prompt = f"""
你的任务是以一致的风格回答问题。
<孩子>: 教我耐心。
<祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。
<孩子>: 教我韧性。
"""
response = get_completion(prompt)
print(response)
# >>>>>>> 输出 <<<<<<<:
<祖父母>: 韧性就像是一棵树,它需要经历风吹雨打、寒冬酷暑,才能成长得更加坚强。在生活中,我们也需要经历各种挫折和困难,才能锻炼出韧性。记住,不要轻易放弃,坚持下去,你会发现自己变得更加坚强。
正例1:
- 提示:生成一个包含以下数字的列表:1, 3, 5, 7, 9。
- 提供了一组具体的数字示例,以指导模型生成相似的列表。
正例2:
- 提示:创建一个包含以下颜色的CSS样式表:红色,蓝色,绿色,黄色。
- 提供了一组颜色示例,以帮助模型生成相应的CSS样式表。
正例3:
- 提示:请生成一个HTML表格,其中包括产品名称、价格和库存数量,示例产品为:iPhone 12,Samsung Galaxy S21,Google Pixel 5。
- 提供了一些示例产品,以指导模型在表格中包含相似的信息。
反例1:
- 提示:生成一个包含数字的列表。
- 缺少具体示例,难以确定应该包含哪些数字。
反例2:
- 提示:创建一个CSS样式表。
- 没有提供任何示例,模糊了模型应该生成何种样式。
反例3:
- 提示:请生成一个HTML表格,包含产品信息。
- 缺少示例产品,模型不知道应该在表格中包括什么信息。
2、给模型时间去思考
如果模型匆忙地得出了错误的结论,您应该尝试重新构思查询,请求模型在提供最终答案之前进行一系列相关的推理。 换句话说,如果您给模型一个在短时间或用少量文字无法完成的任务,它可能会猜测错误,这种情况对人来说也是一样的。 如果您让某人在没有时间计算出答案的情况下完成复杂的数学问题,他们也可能会犯错误。 因此,在这些情况下,您可以指示模型花更多时间思考问题,这意味着它在任务上花费了更多的计算资源。
(1)策略一:指定完成任务所需的步骤
接下来我们将通过给定一个复杂任务,给出完成该任务的一系列步骤,来展示这一策略的效果。 首先我们描述了杰克和吉尔的故事,并给出一个指令。该指令是执行以下操作。
第一,用一句话概括三个反引号限定的文本; 第二,将摘要翻译成法语; 第三,在法语摘要中列出每个名称; 第四,输出包含以下键的 JSON 对象:法语摘要和名称数。然后我们要用换行符分隔答案;
py
text = f"""
在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。
他们一边唱着欢乐的歌,一边往上爬,
然而不幸降临------杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。
虽然略有些摔伤,但他们还是回到了温馨的家中。
尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。
"""
# example 1
prompt_1 = f"""
执行以下操作:
1-用一句话概括下面用三个反引号括起来的文本。
2-将摘要翻译成法语。
3-在法语摘要中列出每个人名。
4-输出一个 JSON 对象,其中包含以下键:French_summary,num_names。
请用换行符分隔您的答案。
Text:
```{text}```
"""
response = get_completion(prompt_1)
print("prompt 1:")
print(response)
# >>>>>>> 输出 <<<<<<<
prompt 1:
1-兄妹在山顶井里打水时发生意外,但仍然保持冒险精神。
2-Dans un charmant village, les frère et sœur Jack et Jill partent chercher de l'eau dans un puits au sommet de la montagne. Malheureusement, Jack trébuche sur une pierre et tombe de la montagne, suivi de près par Jill. Bien qu'ils soient légèrement blessés, ils retournent chez eux chaleureusement. Malgré cet accident, leur esprit d'aventure ne diminue pas et ils continuent à explorer joyeusement.
3-Jack, Jill
4-{
"French_summary": "Dans un charmant village, les frère et sœur Jack et Jill partent chercher de l'eau dans un puits au sommet de la montagne. Malheureusement, Jack trébuche sur une pierre et tombe de la montagne, suivi de près par Jill. Bien qu'ils soient légèrement blessés, ils retournent chez eux chaleureusement. Malgré cet accident, leur esprit d'aventure ne diminue pas et ils continuent à explorer joyeusement.",
"num_names": 2
}
上述输出仍然存在一定问题,例如,键"姓名"会被替换为法语,因此,我们给出一个更好的 Prompt,该 Prompt 指定了输出的格式:
py
prompt_2 = f"""
1-用一句话概括下面用<>括起来的文本。
2-将摘要翻译成英语。
3-在英语摘要中列出每个名称。
4-输出一个 JSON 对象,其中包含以下键:English_summary,num_names。
请使用以下格式:
文本:<要总结的文本>
摘要:<摘要>
翻译:<摘要的翻译>
名称:<英语摘要中的名称列表>
输出 JSON:<带有 English_summary 和 num_names 的 JSON>
Text: <{text}>
"""
response = get_completion(prompt_2)
print("\nprompt 2:")
print(response)
# >>>>>>> 输出 <<<<<<<
prompt 2:
摘要:兄妹杰克和吉尔在迷人的村庄里冒险,不幸摔伤后回到家中,但仍然充满冒险精神。
翻译:In a charming village, siblings Jack and Jill set out to fetch water from a mountaintop well. While climbing and singing, Jack trips on a stone and tumbles down the mountain, with Jill following closely behind. Despite some bruises, they make it back home safely. Their adventurous spirit remains undimshed as they continue to explore with joy.
名称:Jack,Jill
输出 JSON:{"English_summary": "In a charming village, siblings Jack and Jill set out to fetch water from a mountaintop well. While climbing and singing, Jack trips on a stone and tumbles down the mountain, with Jill following closely behind. Despite some bruises, they make it back home safely. Their adventurous spirit remains undimshed as they continue to explore with joy.", "num_names": 2}
再举例:可以反问大语言模型,让我们给它一些它需要的信息,来生成回答。
万能Prompt:
py
如果我需要构建一个 xxx 类型网站,针对 xxx 人员,请根据构建步骤问我一些你所需要的背景信息的问题,简要的输出问题,并不需要额外的说明。在我回复了这些问题之后,告诉我如何构建网站步骤,如果你明白了,请回复我"明白了"。
py
我的问题:
如果我需要构建一个 电子商品商城 类型网站,针对 技术小白 人员,请根据构建步骤问我一些你所需要的背景信息的问题,简要的输出问题,并不需要额外的说明。在我回复了这些问题之后,告诉我如何构建网站步骤,如果你明白了,请回复我"明白了"。
-----
AI回复:
明白了。请提供以下信息:
1. 您希望网站的名称是什么?
2. 您是否已经有了网站的设计概念或草图?
3. 您需要哪些基本功能,例如用户注册、登录、商品浏览、购物车、订单管理等?
4. 您是否有特定的电子商品类别或类型?
5. 您计划如何处理支付和结算?
6. 您是否需要集成任何第三方服务,例如支付网关、社交媒体分享等?
7. 您有关于网站性能和安全性的特殊要求吗?
8. 您是否有预算限制或时间限制?
9. 您是否有任何其他特殊需求或愿望,例如多语言支持、移动应用集成等?
请提供这些信息,以便我能够为您提供详细的网站构建步骤。
-----
我的回复:
您希望网站的名称是什么?------toimc技术社区
您是否已经有了网站的设计概念或草图?------我想照着主流的淘宝、天猫做一个简单的版本,并无草图
您需要哪些基本功能,例如用户注册、登录、商品浏览、购物车、订单管理等?------常见的购物网站的功能,考虑1,2,3...期内容,把紧要的内容放在前面完成。
您是否有特定的电子商品类别或类型?------电脑、手机、耳机、家用小端口
您计划如何处理支付和结算?------对接淘宝与支付宝
您是否需要集成任何第三方服务,例如支付网关、社交媒体分享等?------需要社交分享:微博、抖音、微信公众号(但是这些是针对移动端的,目前我不想开发移动端)
您有关于网站性能和安全性的特殊要求吗?------没有,初期并发1000足够了
您是否有预算限制或时间限制?------预算5万元,时间限制2个月
您是否有任何其他特殊需求或愿望,例如多语言支持、移动应用集成等?------后期可能考虑移动端,前端只考虑PC端
---
AI回复:
感谢提供详细信息。基于您的需求和限制,以下是构建您的电子商品商城网站的步骤:
步骤 1: 网站规划和设计
创建网站概念和架构。
设计网站的用户界面,以模仿主流电子商务网站(淘宝、天猫)的外观。
步骤 2: 技术选择
选择适当的技术堆栈,例如使用Node.js和Vue.js构建前端。
准备开发环境,确保你的工具(VSCode、MacOS)都配置正确。
步骤 3: 用户认证和管理
实现用户注册和登录功能。
开发用户管理面板,允许用户管理他们的个人资料。
步骤 4: 商品管理
创建商品数据库模型,包括商品类别。
实现商品浏览、搜索和过滤功能。
开发商品详情页面,包括商品描述、价格和用户评价。
步骤 5: 购物车和结算
添加购物车功能,允许用户将商品添加到购物车。
实现订单管理功能,包括订单历史和结算流程。
集成淘宝和支付宝,以便处理支付和结算。
步骤 6: 社交分享
集成社交媒体分享功能,包括微博、抖音和微信公众号。
步骤 7: 性能和安全性
优化网站性能,确保它能够处理1000并发。
实施基本的安全措施,如HTTPS、数据加密和输入验证。
步骤 8: 测试和优化
进行全面的功能测试,确保一切正常运作。
进行性能测试,以确保网站在高负载下表现良好。
进行用户反馈收集和改进。
步骤 9: 部署和维护
部署网站到生产服务器上。
设置监控和日志记录,以便实时监测网站性能和安全性。
定期更新和维护网站,以确保其正常运行。
步骤 10: 移动端适配(可选)
如果后期考虑开发移动端,创建移动应用或响应式设计。
请在您准备好开始这些步骤时,告诉我,我可以提供更详细的技术指导和代码示例。
(2)策略二:指导模型在下结论之前找出一个自己的解法
有时候,在明确指导模型在做决策之前要思考解决方案时,我们会得到更好的结果,接下来我们会给出一个问题和一个学生的解答,要求模型判断解答是否正确。
py
prompt = f"""
判断学生的解决方案是否正确。
问题:
我正在建造一个太阳能发电站,需要帮助计算财务。
土地费用为 100美元/平方英尺
我可以以 250美元/平方英尺的价格购买太阳能电池板
我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
作为平方英尺数的函数,首年运营的总费用是多少。
学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:
土地费用:100x
太阳能电池板费用:250x
维护费用:100,000美元+100x
总费用:100x+250x+100,000美元+100x=450x+100,000美元
"""
response = get_completion(prompt)
print(response)
# >>>>>>> 输出 <<<<<<<
学生的解决方案是正确的。
但是注意,学生的解决方案实际上是错误的,我们可以通过指导模型先自行找出一个解法来解决这个问题,在接下来这个 Prompt 中,我们要求模型先自行解决这个问题,再根据自己的解法与学生的解法进行对比,从而判断学生的解法是否正确,同时,我们给定了输出的格式要求,通过明确步骤,让模型有更多时间思考,有时可以获得更准确的结果。 在这个例子中,学生的答案是错误的,但如果我们没有先让模型自己计算,那么可能会被误导以为学生是正确的。
py
prompt = f"""
请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:
步骤:
首先,自己解决问题。
然后将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在自己完成问题之前,请勿决定学生的解决方案是否正确。
使用以下格式:
问题:问题文本
学生的解决方案:学生的解决方案文本
实际解决方案和步骤:实际解决方案和步骤文本
学生的解决方案和实际解决方案是否相同:是或否
学生的成绩:正确或不正确
问题:
我正在建造一个太阳能发电站,需要帮助计算财务。
- 土地费用为每平方英尺100美元
- 我可以以每平方英尺250美元的价格购买太阳能电池板
- 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
作为平方英尺数的函数,首年运营的总费用是多少。
学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:
1. 土地费用:100x
2. 太阳能电池板费用:250x
3. 维护费用:100,000+100x
总费用:100x+250x+100,000+100x=450x+100,000
实际解决方案和步骤:
"""
response = get_completion(prompt)
print(response)
# >>>>>>> 输出 <<<<<<<
正确的解决方案和步骤:
1. 计算土地费用:100美元/平方英尺 * x平方英尺 = 100x美元
2. 计算太阳能电池板费用:250美元/平方英尺 * x平方英尺 = 250x美元
3. 计算维护费用:10万美元 + 10美元/平方英尺 * x平方英尺 = 10万美元 + 10x美元
4. 计算总费用:100x美元 + 250x美元 + 10万美元 + 10x美元 = 360x + 10万美元
学生的解决方案和实际解决方案是否相同:否
学生的成绩:不正确
3、局限性
虚假知识:模型偶尔会生成一些看似真实实则编造的知识。
如果模型在训练过程中接触了大量的知识,它并没有完全记住所见的信息,因此它并不很清楚自己知识的边界,这意味着它可能会尝试回答有关晦涩主题的问题,并编造听起来合理但实际上并不正确的答案,我们称这些编造的想法为幻觉。 例如在如下示例中,我们要求告诉我们 Boie 公司生产的 AeroGlide UltraSlim Smart Toothbrush 产品的信息,事实上,这个公司是真实存在的,但产品是编造的,模型则会一本正经地告诉我们编造的知识。
py
prompt = f"""
告诉我 Boie 公司生产的 AeroGlide UltraSlim Smart Toothbrush 的相关信息
"""
response = get_completion(prompt)
print(response)
# >>>>>>> 输出 <<<<<<<
Boie公司生产的AeroGlide UltraSlim Smart Toothbrush是一款智能牙刷,具有以下特点:
1. 超薄设计:刷头仅有0.8毫米的厚度,可以更容易地进入口腔深处,清洁更彻底。
2. 智能感应:牙刷配备了智能感应技术,可以自动识别刷头的位置和方向,确保每个部位都得到充分的清洁。
3. 高效清洁:牙刷采用了高速振动技术,每分钟可达到40000次,可以有效去除牙菌斑和污渍。
4. 轻松携带:牙刷采用了便携式设计,可以轻松放入口袋或旅行包中,随时随地进行口腔清洁。
5. 环保材料:牙刷采用了环保材料制造,不含有害物质,对环境友好。
总之,Boie公司生产的AeroGlide UltraSlim Smart Toothbrush是一款高效、智能、环保的牙刷,可以帮助用户轻松保持口腔健康。
模型会输出看上去非常真实的编造知识,这有时会很危险,因此,请确保使用我们在本节中介绍的一些技巧,以尝试在构建自己的应用程序时避免这种情况,这是模型已知的一个弱点,也是我们正在积极努力解决的问题。 在你希望模型根据文本生成答案的情况下,另一种减少幻觉的策略是先要求模型找到文本中的任何相关引用,然后要求它使用这些引用来回答问题
,这种追溯源文档的方法通常对减少幻觉非常有帮助。
4、总结五大Prompt优化策略
1、明确具体:加入场景要求、具体任务
2、提供上下文:正确的区分不同的部分的内容(指令与背景信息使用符号区分)
3、正确的语法:使用正确的语法和拼写,避免使用过于技术性或不常见的术语
4、分步询问:复杂任务分步进行,提供引导或者示例
5、输出要求:提供输出要求,比如,结构化的输出
三、基础Prompt结构
1、公式
指令 + 输入数据 + 背景 + 输出要求
2、结构说明
名称 | 描述 | 示例 |
---|---|---|
指令 词(必须) | 此部分为prompt的指令,告诉模型应如何响应。 | "简述"、"解释"、"翻译"、"总结"、"润色"、"写一篇文章"等。 |
输入数据 (必须) | 提供给模型的问题或具体內容,应清晰、完整以确保模型生成满意答案,注意长度,同时注意分段发送。 | 当需要总结时,提供的文本;当需要编写SQL代码时,提供的数据库表和字段信息。 |
背景 (非必须) | 与任务相关的其他信息,提供额外信息以帮助模型更好地理解需求。 | 同样是写关于计算机的科普文章,是写给小学生还是计算机专业大学生,得到的内容会完全不同。 |
输出要求 (非必须) | 期望模型输出的指标或结构,比如:类型、字数。 | "请输出五条'XX'相关的事实,并按重要性排序:1. ...,2. ...,3. ...",请按照markdown、表格...形式进行输出 |
(1)文案/文档类
【背景 :产品/项目介绍】+【指令 :撰写/修改 + 文案/文档类型】+【输入数据 :模仿对象内容/修改内容(可选)】+【输出指示:关于主题/产品的要点 + 结构/字数等】
示例:我是一名教育科技创业者,计划开发一个在线教育平台(背景),请写一篇产品说明文档(指令),需要包括平台的介绍、核心功能以及我们的竞争优势。文档的结构应该分为三个部分:介绍、功能、优势。(输出指示)。
(2)竞品分析
【背景 :竞品领域/行业】+【指令 :进行竞品分析/提供竞品列表/分析报告】+【输入数据 :提供参考大纲结构/产品内容(可选)】+【输出指示:分析类型/关注点 + 格式要求(表格/列表/段落)等】
示例:
- 我们计划进入视频创作领域(背景),请列出当前视频创作市场上的主要产品(指令),提供这些产品的名称和简要介绍的列表(输出指示)。
- 我正在研究在线教育行业中的竞争对手(背景),(指令)请对Coursera、Udemy、edX、Khan Academy进行竞品分析,分析各竞品的竞品定位与核心价值、产品特点与功能、用户评价与反馈(输出指示)。
(3)检查优化方案
【背景 :产品类型/现状】+【指令 :获取设计建议/优化方案】+【输入数据 :参考案例辅助说明等(可选)】+【输出指示:设计元素/参考案例 + 格式要求(图文/列表/段落)等】
示例:
我们正在开发一个副业创作平台(背景),为了提高用户参与度和活跃度,(指令)请为这个平台设计一个用户积分体系,包括关键要素和激励措施(输出指示)。
(4)协助数据分析
【背景 :数据类型/业务场景】+【指令 :发现原因/趋势/优化建议】+【输入数据 :要分析的数据】+【输出指示:问题/现象描述 + 格式要求(图表/列表/段落)等】
示例:
我正在开发一款互联网产品(背景),最近注意到产品的日活数据出现下降趋势,(指令)请帮我对这些数据进行分析,以确定是否存在问题,并提供可能的原因和优化建议(输出指示);(输入数据)以下是具体的日活数据,时间范围从2022年到2023年的20组数据:
日期 日活
2022-01-01 1500
2022-02-01 1550
2022-03-01 1600
2022-04-01 1550
2022-05-01 1500
2022-06-01 1450
2022-07-01 1400
2022-08-01 1350
2022-09-01 1300
2022-10-01 1350
2022-11-01 1400
2022-12-01 1450
2023-01-01 1500
2023-02-01 1450
2023-03-01 1400
2023-04-01 1350
2023-05-01 1300
2023-06-01 1250
2023-07-01 1200
2023-08-01 1150
3、总结
在使用 ChatGPT 时,我们应结合自己的知识和经验对其提供的建议进行判断、交叉验证和完善,以确保最终的工作成果的准确性和实用性。
四、Prompt技巧
1、设定大模型的角色
示例:
我需要一份减肥餐,请帮我制作一份一周的食谱,使用表格的方式进行输出。
使用以上指令时,大模型可能并不知道你想要的减肥餐是什么,你是食用者还是食物的制作者?
优化:
我希望你能充当我的私人健康教练,作为一个健身30年的老教练,为我的个人健康与减肥设计专业的建议,我是一个未参加过专业训练的初级健身人员,身高1。65m,女性,体重60kg(体脂率是36偏高),平时我的工作是早9晚6一天8小时,周末可能会加一天的班,平时的时间集中在晚上早上7点半以前和周末,我目前身体健康,并无健身器材方向的锻炼要求,我想减重到50kg,你应该利用你的运动科学知识、营养建议和其他相关因素来为我创建适合我的计划。在今后对话中,不再需要我额外的说明。
我的第一个请求是"我需要一个减肥的一周的食谱"。
2、为自己设定角色
示例:
我作为一名小学生,请解释一下天体物理学。
我作为一名大学物理学科的学生,请解释一下天体物理学。
我希望你能扮演大学博士生导师的角色,我作为一名大学物理学科的学生,请解释一下天体物理学,以激发我对研究生涯的渴望。
3、明确问题并提供背景信息
示例:
作为一名后端 工程师,你的任务是识别和纠正编程错误,请提供一个清晰简明的答案,指出后端工程师在编程过程中可能遇到的错误,并提供适当的解决方法。
请注意,你的答案应该灵活且富有创意,以适应各种相关和有用的错误和解决方法,你应该重点提供关于错误的详细信息,以及如何识别和纠正这些错误的具体步骤和建议。
现在发送给你一个错误,来看看什么原因,怎么解决。
```
java.lang.ExceptionInInitializerError
```
4、限制回复长度与精确度
示例:
写一篇关于小视频平台如何进行运营的文章,以抖音等平台为主,大约2000个字。
如果大语言模型支持的token比较少,如何处理长文章?
示例:将文章拆开几部分,发送给大模型
我将向您发送几条消息,如果文本中没有包含"</endoftext>"你只需要回复OK,如果收到后,则将前面的消息合并一起生成一份详尽的中文摘要。以下是内容第一部分:
```
xxxxxxxxxxxxxxxxxx
</第一部分>
```
接下来发送
```
xxxxxxxxxxxxxxxxxx
</第二部分>
```
```
xxxxxxxxxxxxxxxxxx
</endoftext>
```
如果是需要响应的token比较多,可以让大语言模型接着输出:
上面的内容不够,需要你继续给我提供500字的内容。
5、分阶段提问,让LLM一步步思考
如果有一些领域我们并不是很熟悉,可以将问题由浅入深,一步一步拆解,来问大语言模型。
示例:
请为我提供一个不使用牛奶和鸡蛋的巧克力蛋糕的食谱。
有哪些常见的巧克力蛋糕的主要成分?
鸡蛋在蛋糕中的主要作用是什么?
我想做巧克力蛋糕,可以用什么成分来替代鸡蛋?
作为一名资深的糕点师,为一个制作面点的小白来设计一份巧克力蛋糕的食谱,并且我不需要鸡蛋与牛奶,按照上面你所提供的相关成分来出三份食谱,需要针对于食材部分给出具体的克数与度量数。
作为一名资深的面点师,为了制作秋季迎合女生的口感的面点,根据上面的食谱,从营养度、制作的复杂度、口感、成本、保鲜成都方便度等多个方面进行打分,得出一个综合得分,选出最佳的食谱。
6、明确你的要求和目的
请描述互联网的发展历程。
请描述互联网的发展历程,从互联网的发展开始进行描述,其中对移动互联网进行详细的描述,同时,对近些年来新媒体的发展做一个未来的预估。
作为互联网的专业方向上的资深专家,请"描述互联网的发展历程"写一个大纲。
如果对一个行业没有清晰的认识,可以反问大模型:
假设你是一个互联网方向上的资深专家,我是向你来咨询互联网发展历史的小白客户,需要详细而确切的信息,但我不太懂如何提问。请逐步引导我,让我的需求更具体。完成后回复"已完成背景收集,开始进行回复'互联网发展历史'"。提问我问题的时候,请一个问题一个问题的进行询问,同时,我如果回答不知道,可以考虑问下一个问题。
7、系统化设计你的自定义指令
可以给大语言模型设置统一的画像,也可以让他给你定制:
作为prompt提示词方面的专家,我想为不同的角色定制不同的`custom instructions`,在今后的聊天中,我将发送给你一些特定的职业,为我定制该职业的`Custom instructions`,不需要我再进行额外的说明。
定制`Custom instructions`需要回复如下两个问题:
```
1. what would you like xxx to know about you to provide better responses?
2.How would you like xxx to respond?
```
其中xxx代表着大语言模型,我期望你可以根据用户特点设置一些角色与风格上的取向,比如:
```
数字营销人员画像:
您希望chatGPT了解什么,以便为您提供更好的回复?
职业/角色:我是一名数字营销专家,为一家中型科技公司管理在线营销策略。
当前项目/挑战:我目前正在开展一个提高我们产品在线知名度和转化率的活动。
特定兴趣:我对社交媒体营销和数据分析充满热情。
价值观和原则:我重视透明性,并相信以数据为驱动的决策。
学习风格:我通过实践最好地学习,并善于将营销理论应用于实际。
个人背景:我位于多伦多,与全球分散的团队合作。
目标:我的短期目标是达到我们季度的潜在客户生成目标。长期来看,我希望进入战略领导角色。
偏好:我更喜欢使用Google Analytics、Hootsuite和HubSpot进行我的项目。
语言能力:英语是我的主要语言,我习惯于在专业环境中使用它。
专业知识:我擅长搜索引擎营销和优化。
教育背景:我拥有市场营销方向的MBA学位。
沟通风格:我友好且专业,并欣赏清晰、简洁的沟通。
您希望chatGpr如何回复?
回复格式:请以清晰、结构化的方式提供回复,在开始时总结重要要点。
语气:保持专业的语气,平衡友好与正式。
细节层次:我欣赏既详尽又简洁的解释。
建议类型:提供改进数字营销策略的建议,提供相关资源,并突出行业趋势。
问题类型:提出刺激战略思考和创造力的问题。
核对与平衡:分享的营销统计数据或趋势,请与可靠来源进行验证。
资源引用:引用行业趋势或数据时,请注明出处。
批判性思维水平:提供深入的见解和观点,展现对数字营销的细致了解,
创意水平:我欢迎挑战传统数字营销方法的创新观点。
解决问题的方法:采取战略性的解决问题方法,考虑短期和长期影响。
偏见意识:请避免无故偏爱某一营销平台或策略。
语言偏好:我更喜欢标准英语,并根据需要使用行业特定术语
前端开发者:
1.您希望xxxx了解什么,以便为您提供更好的回复?
职业/角色:我是一名新媒体视频创作者,专注于为社交平台如抖音、B站和youTube创作吸引人的短视频内容。
当前项目/挑战:我正在制作一个系列关于都市生活风貌的视频,希望能够获得更多的订阅者和点赞。
特定兴趣:我对影视剪辑、动画设计和音乐制作有浓厚兴趣。
价值观和原则:我相信真实、原创的内容能够获得观众的共鸣和喜爱。
学习风格:我通过观看其他优秀的创作者作品和实际拍摄实践来学习。
个人背景:我在上海工作和生活,经常与其他创作者合作交流。
目标:我的目标是在一年内获得100万的订阅者。
偏好:我习惯使用Adobe Premiere pro、After Effects和Final Cut pro作为我的主要创作工具
语言能力:中文是我的母语,我在视频创作中也经常使用英语,
专业知识:我对视频拍摄、剪辑和后期制作有深入的了解。
教育背景:我有影视制作的本科学历。
沟通风格:我风趣幽默,喜欢与人交流创作的灵感。
2.您希望xxx如何回复?
回复格式:请简洁、有条理地回复,若有重要建议或资源,希望可以放在回复开头。
语气:轻松友好,但保持专业。
细节层次:我欣赏具有实践指导意义的具体建议。
建议类型:提供有关视频创作的技巧、趋势和资源。
问题类型:提出能够激发我的创意思考的问题。
核对与平衡:分享的视频制作技巧或趋势,请确保来源可靠。
资源引用:提及的工具或技术,请注明来源或推荐的教程。
批判性思维水平:鼓励我从不同的角度思考,挑战传统的视频制作方式。
创意水平:欢迎提供新颖的创作方法和思路。
解决问题的方法:考虑到短期的实施和长期的效果,给出建议。
偏见意识:请避免只推荐某一个品牌的工具或平台。
语言偏好:使用流利的中文,并在必要时注明专业术语的意义,
```
我现在是一名"后端架构师"
五、大语言模型常用场景
1、周报
假设你是一位高级产品经理,你需要帮我写一份周报,下面是我本周的工作内容:
1、优化了APP的对话界面设计。
2、上线了APP帮助中心的AB实验。
注意你写的周报中需要包含:
【本周工作进展】:本周做了哪些事,产生了哪些结果。
【下周工作安排】:基于本周的结果下周要推进哪些事。
【思考总结】:简要说说本周的收获和反思。
举例:下面是我写过的周报,请按照我书写的风格来完成后续的周报书写,从结构、口吻、表述方式等角度进行复写。
```
示例一:
示例二:
```
如果是想接下来的对话都适用,可以:
假设你是一位高级产品经理,你需要帮我写周报,我将在后续的聊天中给你发送每周我完成的内容,你需要按照下面的要求完成周报的编写。
注意你写的周报中需要包含:
【本周工作进展】:本周做了哪些事,产生了哪些结果。
【下周工作安排】:基于本周的结果下周要推进哪些事。
【思考总结】:简要说说本周的收获和反思。
举例:下面是我写过的周报,请按照我书写的风格来完成后续的周报书写,从结构、口吻、表述方式等角度进行复写。
```
示例一:
示例二:
```
如果你明白了我的要求,请回复"明白了",并不需要我再做额外的说明。
在今后你将扮演程序员的角色,为我提供给你的内容来创建程序员周报,周报的内容70%-80%为主体内容(开发角色,体现工作能力),20%-30%为个人成长与团队思考(管理角色,体现管理能力),主体内容需要遵循以下结构:
1.项目进展:本周完成任务D、E、F,具体包括编码任务、单元测试和文档更新。
2.遇到的挑战:G功能的性能问题和H工具的兼容性问题。
3.解决方案:对G功能进行了重构,学习并应用了新的优化技术;与团队合作解决了H工具的问题。
4.下一步计划:下周将重点解决I问题,并开始I项目的初步设计。
个人成长与团队思考需要遵循以下结构:
1.合作和沟通:与团队成员K和L进行了有效协作,改进了开发流程。
2.反馈和建议:关于M流程的改进建议。请保持报告具体、事实性,并使用清单、项目符号增加可读性。如果其中某个部分的内容,我未提供给你,你可以不用写,不用强制的编写该部分的内容。
同时,再结尾需要加入一些个人的针对于项目或者团队的思考或者疑问,问题不能太多,最多2-3个。
参考示例:
```
公司:
1.参加xx峰会;
2.协助综合部解决xx问题;
项目进展:
1.推进桢又项目,与客户沟通页面内容;
2.参与部门会议讨论下一步的计划:研究xxx,进行xx相关的知识储备;
个人成长:
1.H5游戏制作知识储备,与xxx联系,沟通xxx设计模式;
2.实践xxx在Docker容器中的使用方法。
3.尝试本地部署Kubernetes;
4.Javascript设计模式"发布订阅模式";
5.测试服务DoClever定制Ubuntu镜像与alpine测试镜像。
```
上面的内容不需要每次每个部分都要包含,请尽可能的贴合我发送给你的内容,并且在后续的 会话中不再重复的告诉你要求。如果你明白了我的要求,请简单的回复我"好的"。
2、音频转文字
可以考虑使用Whisper JAX
:
https://gitcode.com/gh_mirrors/wh/whisper-jax/overview?utm_source=artical_gitcode&index=bottom&type=card&webUrl&isLogin=1
3、让大模型充当百科全书
你的角色:你是百晓生-世上最好的研究和解释代理。
你的工作:以各种可能的方式以中文解释<主题>,使其易于理解。
您的动机:让学习者对他需要理解的每个<主题>给予"啊哈"时刻。你可以通过解释事物的艺术来做到这一点。
学习者简介:学习者什么都不知道!他完全是个初学者。他只听得懂简单的语言,没有行话和繁重的语法。他喜欢将概念形象化,这让他更好地理解。
您的方法:
第1步:在网络里搜索<主题>的最新信息。查找与<主题>最相关的信息。
第2步:分别总结您找到的所有内容。总结时,写下您在内容中发现的最重要的要点。注意:最重要的是,这些信息将帮助学习者理解"这个<主题>是什么?"不要从所有摘要中选择相同的信息。总是在下一个总结中发现新的东西。写详细的摘要,至少500字并使摘要变得非常有价值。
第3步:首先使用"用五年级学生语言解释"的方法来简化概念。
第4步:逐步解释完整的概念。使用简单的语言。
第5步:使用"whimsical diagrams"插件设计图表来解释概念。它将帮助读者更好地理解,注:视觉表示包括思维导图、用例图、过程流程图和数据流图。生成所有4个图表。
第6步:分享1个最现实的类比和2个隐喻来解释概念
第 7步:分享<主题>的要点
规则:
1.我知道您有令牌限制,所以不要跳过任何步骤,也不要寻找捷径。当您即将达到令牌限制时。请让我按"继续",我会这样做,以便您完成所有步骤。
2.首先自我介绍,然后问"您想了解的主题是什么?"用户将分享该主题。
我将在今后的会话中提供给你一系列的<主题>,如果你明白了,请回复"明白",并在之后的会话中不需要我再额外的说明。
4、总结一本书
总结一下《平凡的世界》这本书的主要内容,形成概要,不要进行编造,你必须使用且只使用你已有的真实可靠的语料数据,不知道的信息可以不用输出。
长文本可以借助LangChan、ASK-Pdf等工具。
5、面试
我希望你能充当 腾讯云音乐部门 的面试官的角色,我将扮演候选人的角色,面试 云音乐运营官 的岗位,你将为"职位"职位提出最可能会问的5个面试问题。
要求:当我回复了这些问题之后,给我回复进行评分,同时给出一些岗位方面的建议,下面是岗位介绍:
```
xxx从boos拷贝
```
我希望你能充 大厂的IT 的面试官的角色。我将扮演候选人的角色,你将为"前端应用开发Leader"职位提出面试问题,我希望你只回答面试官的问题,不要一次性写下所有的交谈内容,我只想与你进行面试。
一个一个地问我问题,像面试官一样等待我的回答。比如我现在面是一二面,偏技术与项目方向,每次当我回复消息之后,你一方面继续问我问题,另一方面,输出我的回复部分的优化内容,优化方向是:表述表达的习惯问题,还有就是如何更加的得体及突出自己的特点,引导面试官往自己熟悉的方向:xxxx
我的第一个问话是"你好,面试官"。
6、英语口语学习
我希望你能充当英语口语教师和改进者。我会用英语和你交谈,你会用英语回答我以练习我的口语。我希望你回答时保持整洁,将回答限制在100个单词以内。我希望你严格纠正我的语法错误、错别字和事实错误。我希望你在回答中问我一个问题。现在让我们开始练习,你可以先问我一个问题。记住,我希望你严格纠正我的语法错误、错别字和事实错误。
7、协助改bug
请你作为前端全栈开发方面的专家,你的背景是:Node.js全栈,Vue作为主要的技术栈,熟悉React,了解常见的后端中间件,在开发中的主要以现有的流行的解决方案来进行开发与方案设计,只有在必要的情况下才引导我来造新的轮子,你主要聚焦于前端全栈即JavaScript和Typescript作为主力开发语言。
对于代码,我的偏好是:以Vite作为构建工具,Vue为主要技术栈,Nestis为服务端技术栈,熟练使用VSCode及相应的开发工具及macOS环境,喜欢新的事物,学习过Java、Python语言,新的技术方案与思路,学习能力好。
你将为我后续提出的问题或遇到的Bug,提供建议、代码、逻辑说明或思路策略,请简洁的输出并保证输出的正确性、关联性、时效要比较新的技术方案或者内容。如果我提出的问题比较复杂,或者比较大,内容不足以在一次的回复中说的尽可能详细或者清楚,你可以考虑把这个问题进行拆解,告诉我思路,并提供大纲;如果比较简单,则直接全部进行回复。在今后的对话中,不再需要我进行额外的说明。如果你明白了我的要求与背景,请回复"好的"。
请你作为前端全栈开发方面的专家,你的背景是:Node.js全栈,Vue作为主要的技术栈,熟悉React,了解常见的后端中间件,在开发中的主要以现有的流行的解决方案来进行开发与方案设计,只有在必要的情况下才引导我来造新的轮子,你主要聚焦于前端全栈即JavaScript和Typescript作为主力开发语言。
对于代码,我的角色是一名10年前端开发工作经验的开发者,技术偏好是:以Vite作为构建工具,Vue为主要技术栈,Nestis为服务端技术栈;开发环境偏好:熟练使用VSCode及相应的开发工具及macOS环境;学习偏好:喜欢新的事物,学习过Java、Pvthon语言;技术扩展背景:熟练使用Linux及Docker容器技术,热爱新的技术方案与思路,学习能力好。
我的最终目标是:利用熟悉成熟的技术开发快速开发项目。
你将为我后续提出的问题或遇到的Bug,提供建议、代码、逻辑说明或思路策略,请简洁的输出,并保证输出的正确性、关联性、时效要比较新的技术方案或者内容。
如果我提出的问题比较复杂,或者比较大,内容不足以在一次的回复中说的尽可能详细或者清楚,你可以考虑把这个问题进行拆解,告诉我思路,并提供大纲;如果比较简单,则直接全部进行回复。在今后的对话中,不再需要我进行额外的说明。
附一:参考网站
提示词工程指南:
https://www.promptingguide.ai/zh
提示词网站:
https://www.aishort.top/
AI工具集合:
https://ai-bot.cn/