一、基本概念
1.Prompt
Prompt 最初是 NLP(自然语言处理)研究者为下游任务设计出来的一种任务专属的
输入模板
,类似于一种任务(例如:分类,聚类等)会对应一种 Prompt。在 ChatGPT 推出并获得大量应用之后,Prompt 开始被推广为给大模型的所有输入。即,我们每一次访问大模型的输入为一个 Prompt
,而大模型给我们的返回结果则被称为 Completion
。
图中也是一种Prompt和Completion对应
2. Temperature
控制模型输出
随机性
的参数,取值[0,1]。值越大输出结果越随机。(使用API时会有体现)
3. System Prompt
一些给大模型预设的Prompt,在每次输入新User Prompt时都会自动带上System Prompt。
![](https://img-blog.csdnimg.cn/direct/9617cbb6d0b148f28fbe73bb63ebed1f.png)
{
"system prompt": "你是一个幽默风趣的个人知识库助手,可以根据给定的知识库内容回答用户的提问,注意,你的回答风格应是幽默风趣的",
"user prompt": "我今天有什么事务?"
}
二、API申请和配置(质谱GLM)
根据DataWhale教程选择了质谱GLM,主要是免费😄😄😄
1. 教程中的.env文件位置![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4d9cdf6dc68f4406a7d2004b832bb294.png)
2. 有时候会遇到配置了API KEY,但检测不到的问题,这时需要重启ipython kernel
试试
三、Prompt Engineering(吴恩达教程)
原则一:编写清晰、具体的指令
1. 使用各种标点符号作为分隔符
,将不同的文本部分区分开来。
分隔符就像是 Prompt 中的墙,将不同的指令、上下文、输入隔开,避免意外的混淆。你可以选择用 ```,“”",< >, ,: 等做分隔符,只要能明确起到隔断作用即可。
2. 寻求结构化的输出。
按照某种格式组织输出的内容,例如 JSON、HTML 等
。这种输出非常适合在代码中进一步解析和处理。
3. 要求模型检查是否满足条件。
如果任务包含不一定能满足的假设(条件),我们可以告诉模型先检查这些假设,如果不满足,则会指出并停止执行后续的完整流程。您还可以考虑可能出现的边缘情况及模型的应对,以避免意外的结果或错误发生。
4. 提供少量示例
“Few-shot” prompting(少样本提示),即在要求模型执行实际任务之前,给模型提供一两个参考样例,让模型了解我们的要求和期望的输出样式。
原则二:给模型时间去思考
1. 指定完成任务所需的步骤
一个例子
text = f"""
在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。\
他们一边唱着欢乐的歌,一边往上爬,\
然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。\
虽然略有些摔伤,但他们还是回到了温馨的家中。\
尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。
"""
prompt = f"""
1-用一句话概括下面用<>括起来的文本。
2-将摘要翻译成英语。
3-在英语摘要中列出每个名称。
4-输出一个 JSON 对象,其中包含以下键:English_summary,num_names。
请使用以下格式:
摘要:<摘要>
翻译:<摘要的翻译>
名称:<英语摘要中的名称列表>
输出 JSON 格式:<带有 English_summary 和 num_names 的 JSON 格式>
Text: <{text}>
"""
response = get_completion(prompt)
print("response :")
print(response)
2. 指导模型在下结论之前找出一个自己的解法
在 Prompt 中先要求语言模型自己尝试解决这个问题,思考出自己的解法,然后再与提供的解答进行
对比
。
prompt = f"""
请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:
步骤:
首先,自己解决问题。
然后将您的解决方案与学生的解决方案进行比较,对比计算得到的总费用与学生计算的总费用是否一致,
并评估学生的解决方案是否正确。
在自己完成问题之前,请勿决定学生的解决方案是否正确。
使用以下格式:
问题:问题文本
学生的解决方案:学生的解决方案文本
实际解决方案和步骤:实际解决方案和步骤文本
学生计算的总费用:学生计算得到的总费用
实际计算的总费用:实际计算出的总费用
学生计算的费用和实际计算的费用是否相同:是或否
学生的解决方案和实际解决方案是否相同:是或否
学生的成绩:正确或不正确
问题:
我正在建造一个太阳能发电站,需要帮助计算财务。
- 土地费用为每平方英尺100美元
- 我可以以每平方英尺250美元的价格购买太阳能电池板
- 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元;
作为平方英尺数的函数,首年运营的总费用是多少。
学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:
1. 土地费用:100x美元
2. 太阳能电池板费用:250x美元
3. 维护费用:100,000+100x=10万美元+10x美元
总费用:100x美元+250x美元+10万美元+100x美元=450x+10万美元
实际解决方案和步骤:
"""
response = get_completion(prompt)
print(response)