Prompt的指导准则,你学会了吗?

Last Updated on 2024年1月9日 by hangzi

1、AI名词解释

先来解释一些AI名词:

名词 解释
AGI 通用人工智能
AI 人工智能
AIGC 生成式AI
ANI 狭义人工智能
ASI 人工超级智能
Fine-Tuning 微调
Few-Shot 少样本学习
Zero-Shot 零样本学习

2、Prompt Engineering学习

今日重点说说这个 Prompt Engineering(提示工程):

它是人工智能中的一个概念,特别是自然语言处理(NLP)。

在提示工程中,任务的描述会被嵌入到输入中。

提示工程的典型工作方式是将一个或多个任务转换为基于提示的数据集,并通过所谓的“基于提示的学习(prompt-based learning)”来训练语言模型。

以下举例的测试都是基于国内版以下三款大模型进行测试:

智普清言:https://chatglm.cn/main/detail
文心一言:https://yiyan.baidu.com/
Moonshot:https://kimi.moonshot.cn/chat

你可以选择其他的大模型,下图仅供参考:

大模型对比

指导准则

准则1:尽可能保证下达的指令“清晰、没有歧义”

1、使用分隔符清晰地分清文章内容

在编写 Prompt 时,我们可以使用各种标点符号作为分隔符,比如: ```,""",< >,
做分隔符,分隔符作用是可以防止提示词注入,因为用户输入的文本可能包含与你的预设 Prompt 相冲突的内容,如果不加分隔,这些输入就可能注入并操纵语言模型,导致模型产生毫无关联的乱七八糟的输出。

举例:

把用三个引号括起来的文本总结成一句话。

'''
您应该提供尽可能清晰、具体的指示,以表达您希望模型执行的任务。
这将引导模型朝向所需的输出,并降低收到无关或不正确响应的可能性。
不要将写清晰的提示词与写简短的提示词混淆。
在许多情况下,更长的提示词可以为模型提供更多的清晰度和上下文信息,从而导致更详细和相关的输出。
'''

2、以一定格式输出内容

有时候我们获取结果时,需要语言模型给我们一定格式的输出,而不是连续的文本。比如:输出CSV、HTML或者Json格式

举例:

请生成包括书名、作者和类别的三本虚构的、非真实存在的中文书籍清单,
并以 JSON 格式提供,其中包含以下键:book_id、title、author、genre。

3、告诉模型如何处理所有边界情况

就是告诉模型处理不存在时的回答,以避免模型给出意外的结果或者错胡说八道。

举例:

你将获得由三个引号括起来的文本。
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:
第—步-...
第二步-...
第N步 -...

'''
如果文本中不包含一 系列的指令,则直接写"未提供步骤"。
期权开户需要下面几步。首先,需要在手机上的证券交易软件进行股票期权实名认证,认证后会有工作人员与您联系确认是否为本人开户。(实名认证前需要参与期权知识测试,建议最好先看书学习,有一定基础的可以直接准备考试)。然后,需要到所属的证券公司携带身份证证件,与营业部工作人员开通两融和期货账户。最后,两融和期货开通后就可以办理股票期权账户了,开通后验资50万元即可开始交易。
'''

4、少样本提示:在让模型回答前给它示例以作引导

Few-Shot(少样本学习):就是说在要求模型执行实际任务之前,给模型一两个已完成的样例,让模型了解我们的要求和期望的输出样式。

举例:

你的任务是以一致的风格回答问题。
<散户>:怎么选基金?
<专家>:首先查看基金的历史表现,然后调研基金经理是否尽职,其风格是否一致,最后选择买入基金是自己的事,要自己承担后果。
<散户>:怎么选股票?

原则2:给模型时间去思考

5、指定完成任务的步骤,慢慢引导模型给出正确答案

在处理复杂场景时,给予语言模型充足的推理时间非常重要。语言模型与人类一样,需要时间来思考并解决复杂问题。如果让语言模型匆忙给出结论,其结果很可能不准确。

举例:

执行以下操作:

1. 用一句话概括下面用<>括起来的文本。
2. 将概括的话翻译成英文。
3. 输出一个JSON对象,其中包含以下键:english_summary, num_names

请使用以下格式:
- 摘要:<摘要>
- 翻译:<摘要的翻译>
- 输出 JSON:<带有english_summary 和 num_ names 的JSON>
<希腊神话中有一位名叫西西弗的国王,他自认为比众神之王的由斯更聪明。为了惩罚西西弗,由斯迫使他背负了一项永无止境却毫无意义的工作:将一块巨石沿着一条陡峭的山坡推向山顶,在接近山顶时,巨石因由斯的神力叉滚落下去,而西西弗不得不从头开始,永不停歇地重复这个过程。>

6、指导模型在下结论之前找出一个自己的解法

就是说在提出数学问题时,让模型自己思考出自己的解答,然后我们再提供一个解答进行对比,然后判断正确性,这样模型就能自主思考,能帮助它更深入理解问题,做出更准确的判断。

举例:

1、先给出一个错误的解决方法

判断学生的解决方案是否正确。
问题:
我正在建造一个太阳能发电站,需要帮助计算财务。
    土地费用为 100美元/平方英尺
    我可以以 250美元/平方英尺的价格购买太阳能电池板
    我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
    作为平方英尺数的函数,首年运营的总费用是多少。

学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:
    土地费用:100x
    太阳能电池板费用:250x
    维护费用:100,000美元+100x
    总费用:100x+250x+100,000美元+100x=450x+100,000美元

2、通过指导模型先自行找出一个解法来解决这个问题

请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:
步骤:
    首先,自己解决问题。
    然后将您的解决方案与学生的解决方案进行比较,对比计算得到的总费用与学生计算的总费用是否一致,并评估学生的解决方案是否正确。
    在自己完成问题之前,请勿决定学生的解决方案是否正确。

使用以下格式:
    问题:问题文本
    学生的解决方案:学生的解决方案文本
    实际解决方案和步骤:实际解决方案和步骤文本
    学生计算的总费用:学生计算得到的总费用
    实际计算的总费用:实际计算出的总费用
    学生计算的费用和实际计算的费用是否相同:是或否
    学生的解决方案和实际解决方案是否相同:是或否
    学生的成绩:正确或不正确

问题:
    我正在建造一个太阳能发电站,需要帮助计算财务。 
    - 土地费用为每平方英尺100美元
    - 我可以以每平方英尺250美元的价格购买太阳能电池板
    - 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元;
    作为平方英尺数的函数,首年运营的总费用是多少。

学生的解决方案:
    设x为发电站的大小,单位为平方英尺。
    费用:
    1. 土地费用:100x美元
    2. 太阳能电池板费用:250x美元
    3. 维护费用:100,000+100x=10万美元+10x美元
    总费用:100x美元+250x美元+10万美元+100x美元=450x+10万美元

实际解决方案和步骤:

如下图Prompt Engineering的思维导图大纲,来自吴恩达讲的prompt课程

prompt思维导图

想深入学习Prompt入门的可以参考这个文章:https://zhuanlan.zhihu.com/p/442486331


关注微信公众号『编程与读书

第一时间了解最新网络动态
关注博主不迷路~