原文:算法框架-LLM-1-Prompt设计(一) – 知乎
目录
收起
1 prompt-engineering-for-developers
1.1 Prompt Engineering
1.1.1 提示原则
1. openai的环境
2. 两个基本原则
3. 示例
eg.1
eg.2 结构化输出
eg.3 模型检验
eg.4 提供示例
eg.5 将一个任务拆开几步去解决
eg.6 指导模型解决方案并比较
eg.7 局限性
1.1.2 迭代优化
根据产品说明书制作一份营销产品描述
1.1.3 文本概括
1.1.4 推断
eg.1
eg.2
1.1.5 文本转换
eg.1 翻译
eg.2 语义调整
eg.3 翻译+纠错+风格+格式转换
1.1.6 文本扩展
eg.1 回复邮件
1.2 Building Systems with the ChatGPT API
1.3 LangChain for LLM Application Development
1.4 HuggingLLM
必备知识
ChatGPT使用网站
以下格式可能有错乱,请阅读原文有道云原文链接
手册链接
第一部分:Prompt Engineering
1 prompt-engineering-for-developers
链接
测试环境使用POE(需要VPN)
POE图片
1.1 Prompt Engineering
1.1.1 提示原则
1. openai的环境
(国内无法注册仅做参考,后续示例均是poe环境中测试的结果)
pip install openai
pip install -U python-dotenv
# 将自己的 API-KEY 导入系统环境变量
!export OPENAI_API_KEY='api-key'
import openai
import os
from dotenv impo服务器托管网rt load_dotenv, find_dotenv
# 导入第三方库
_ = load_dotenv(find_dotenv())
# 读取系统中的环境变量
openai.api_key = os.getenv('OPENAI_API_KEY')
# 设置 API_KEY
# 一个封装 OpenAI 接口的函数,参数为 Prompt,返回对应结果
def get_completion(prompt, model="gpt-3.5-turbo"):
'''
prompt: 对应的提示
model: 调用的模型,默认为 gpt-3.5-turbo(ChatGPT),有内测资格的用户可以选择 gpt-4
'''
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0, # 模型输出的温度系数,控制输出的随机程度
)
# 调用 OpenAI 的 ChatCompletion 接口
return response.choices[0].message["content"]
2. 两个基本原则
- 原则一:编写清晰,具体的指令
- 可以使用更长的指令,分行编写
- 使用明显的分隔符**待解析的文本**和**prompt**区分开,分隔符可以使用```,"",,,等
- 比如:三个反引号括起来的文本
- 结构化输出
- 比如json: 以JSON格式提供,其中包含以下键:xxx,xxx,xxx
- 要求模型检查是否满足条件,给出其他解,防止模型自由发挥
- 比如: 如果文本无法接下,则直接输出xxx
- 提供少量示例
- 模仿输出风格,few-shot任务
- 原则二:给模型时间思考
- 将一个任务拆开几步去解决,理解过程,输出结果
- 涉及计算方案比较,先让模型自己解决,再去做对比(给出模型怎么比较的流程prompt)
- 模型预测有一定的局限性,会生成一些虚假知识,最好提示模型找到文本中的一些引用,根据引用进行回答,或者进行模型检查其他另外说明。
3. 示例
eg.1
对下面中的文本总结成一句话。
回答
为了让模型执行任务,应提供清晰、具体的指示,避免简短提示和清晰提示混淆,更长的提示可以提供更多的上下文信息,从而得到更详细和相关的输出。
eg.2 结构化输出
请生成包括书名、作者和类别的三本虚构书籍清单。
以JSON 格式提供,其中包含以下键:book_id、title、author、genre。
回答
下面是三本虚构书籍的清单,包括书名、作者和类别,以 JSON 格式提供:
[
{
"book_id": 1,
"title": "1984",
"author": "乔治奥威尔",
"genre": "反乌托邦小说"
},
{
"book_id": 2,
"title": "麦田里的守望者",
"author": "J.D.塞林格",
"genre": "成人小说"
},
{
"book_id": 3,
"title": "哈利波特与魔法石",
"author": "J.K.罗琳",
"genre": "儿童文学"
}
]
eg.3 模型检验
解析下面括起来的文本。
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令,输出尽量简短:
第一步: xxx
第二步: xxx
...
第N步: xxx
如果文本中不包含一系列的指令,则直接写“未提供步骤”。
回答
这段文本包含了一系列的指令,可以按照以下格式重新编写这些指令:
第一步:把水烧开。
第二步:拿一个杯子并把茶包放进去。
第三步:把热水倒在茶包上。
第四步:等待数分钟,让茶叶浸泡。
第五步:取出茶包。
第六步:如果需要,加入糖或牛奶调味。
第七步:享受美味的茶。
因此,输出的指令如上所示。
eg.4 提供示例
请以一致的风格回答以下问题。
: 教我耐心。
: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始服务器托管网编织。
: 教我韧性。
回答
: 韧性不是一蹴而就的,它是在面对挫折和困难时坚定不移的追求目标和解决问题的能力。类似于锻炼肌肉一样,你需要经历一些挑战和困难,才能不断增强你的韧性。不要轻易放弃,要相信自己的能力,坚持不懈地追求目标,这样你的韧性就会越来越强。
eg.5 将一个任务拆开几步去解决
解析下面"""括起来的文本。
1.用一句话概括文本。
2.将摘要翻译成英语。
3.在英语摘要中列出每个人名。
4.输出一个 JSON 对象,其中包含以下键:English_summary,num_names。
请使用以下格式:
文本:
摘要:
翻译:
名称:
输出 JSON:。
"""在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。
他们一边唱着欢乐的歌,一边往上爬,
然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。
虽然略有些摔伤,但他们还是回到了温馨的家中。
尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。""""
回答
文本:在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。他们一边唱着欢乐的歌,一边往上爬,然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。虽然略有些摔伤,但他们还是回到了温馨的家中。尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。
摘要:兄妹杰克和吉尔在村庄里去打水,但杰克绊倒了,两人都受了些伤。尽管如此,他们的冒险精神并未减弱,继续探索。
翻译:Brother and sister Jack and Jill went to fetch water from a mountaintop well in a charming village. While singing joyfully and climbing up, they unfortunately stumbled on a rock and tumbled down the hill, with Jill following Jack. Despite some minor injuries, they made it back to their cozy home. Nevertheless, their spirit of adventure remained undiminished as they continued to explore with joy.
名称:Jack,Jill
输出 JSON:{"English_summary": "Brother and sister Jack and Jill went to fetch water from a mountaintop well in a charming village. While singing joyfully and climbing up, they unfortunately stumbled on a rock and tumbled down the hill, with Jill following Jack. Despite some minor injuries, they made it back to their cozy home. Nevertheless, their spirit of adventure remained undiminished as they continued to explore with joy.", "num_names": 2}
eg.6 指导模型解决方案并比较
解析下面"""括起来的问题,并判断学生的解决方案是否正确,解析步骤如下:
步骤:
1.首先,自己解决问题。
2.将实际解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在自己完成问题之前,请勿决定学生的解决方案是否正确。
请使用以下格式输出:
问题:问题。
学生解决方案的总费用。
实际解决方案的总费用。
学生的解决方案总费用和实际解决方案总费用是否相同:是或否。
学生的成绩:正确或不正确。
"""
问题:
我正在建造一个太阳能发电站,需要帮助计算财务。
- 土地费用为每平方英尺100美元
- 我可以以每平方英尺250美元的价格购买太阳能电池板
- 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
作为平方英尺数的函数,首年运营的总费用是多少。
"""
学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:
1. 土地费用:100x
2. 太阳能电池板费用:250x
3. 维护费用:100,000+100x
总费用:100x+250x+100,000+100x=450x+100,000
回答
问题:我正在建造一个太阳能发电站,需要帮助计算财务。
土地费用为每平方英尺100美元
我可以以每平方英尺250美元的价格购买太阳能电池板
我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
作为平方英尺数的函数,首年运营的总费用是多少。
学生解决方案的总费用:450x+100,000
实际解决方案的总费用:
首先计算土地费用:100美元/平方英尺 * x平方英尺 = 100x美元
然后计算太阳能电池板费用:250美元/平方英尺 * x平方英尺 = 250x美元
最后计算维护费用:10万美元 + 10美元/平方英尺 * x平方英尺 = 10万美元 + 10x美元
总费用为:100x美元 + 250x美元 + 10万美元 + 10x美元 = 360x + 10万美元
学生的解决方案总费用和实际解决方案总费用是否相同:否
学生的成绩:不正确
eg.7 局限性
告诉我 Boie 公司生产的 AeroGlide UltraSlim Smart Toothbrush 的相关信息。
如果该公司没有生产这款产品,请给出引用说明。
回答
Boie 公司确实生产了一系列口腔护理产品,包括牙刷、牙膏和牙线等,但根据我所了解到的信息,Boie 公司并没有推出名为 "AeroGlide UltraSlim Smart Toothbrush" 的产品。
可能是出于某种误解或信息错误,导致您提出了这个问题。如果您有其他关于 Boie 公司或其他公司的产品的问题,我会尽力为您提供相关信息。
1.1.2 迭代优化
根据产品说明书制作一份营销产品描述
prompt优化: 字数限制,细节引导,格式输出
针对下面"""括起来的产品说明书,帮助营销团队创建一个产品的营销描述。
侧重于产品的材料构造。
输出最多100字。
以表格形式呈现结果。
"""
概述
美丽的中世纪风格办公家具系列的一部分,包括文件柜、办公桌、书柜、会议桌等。
多种外壳颜色和底座涂层可选。
可选塑料前后靠背装饰(SWC-100)或10种面料和6种皮革的全面装饰(SWC-110)。
底座涂层选项为:不锈钢、哑光黑色、光泽白色或铬。
椅子可带或不带扶手。
适用于家庭或商业场所。
符合合同使用资格。
结构
五个轮子的塑料涂层铝底座。
气动椅子调节,方便升降。
尺寸
宽度53厘米|20.87英寸
深度51厘米|20.08英寸
高度80厘米|31.50英寸
座椅高度44厘米|17.32英寸
座椅深度41厘米|16.14英寸
选项
软地板或硬地板滚轮选项。
两种座椅泡沫密度可选:中等(1.8磅/立方英尺)或高(2.8磅/立方英尺)。
无扶手或8个位置PU扶手。
材料
外壳底座滑动件
改性尼龙PA6/PA66涂层的铸铝。
外壳厚度:10毫米。
座椅
HD36泡沫
原产国
意大利
"""
回答
产品名称:中世纪风格办公家具
特点:
选项丰富:多种颜色和涂层可选,可带或不带扶手。
适用范围广:家庭或商业场所均可使用。
结构优良:铝底座和改性尼龙外壳底座滑动件,座椅采用HD36泡沫。
尺寸合适:宽53厘米、深51厘米、高80厘米,座椅高度44厘米、座椅深度41厘米。
原产国:意大利。
选项表: 见下面
营销描述(不超过100字):
中世纪风格办公家具系列,选项丰富,适用于各种家庭或商业场所。铝底座和改性尼龙外壳底座滑动件,座椅采用HD36泡沫,结构优良。多种颜色和涂层可选,可带或不带扶手,软硬地板滚轮可选,座椅泡沫密度可选,满足个性化需求。原产国意大利,品质保证。
选项表:
选项 | 描述 |
---|---|
外壳颜色 | 多种颜色可选 |
底座涂层 | 不锈钢、哑光黑色、光泽白色或铬 |
装饰选项 | 塑料前后靠背装饰(SWC-100)或10种面料和6种皮革的全面装饰(SWC-110) |
扶手选项 | 可带或不带扶手 |
滚轮选项 | 软地板或硬地板滚轮选项 |
座椅泡沫密度 | 中等(1.8磅/立方英尺)或高(2.8磅/立方英尺 |
1.1.3 文本概括
参考 上一节eg.5 将一个任务拆开几步去解决
解析下面"""括起来的文本。
1.用一句话概括文本,最多30个词汇,侧重产品价格和质量。
2.将摘要翻译成英语。
3.在中文摘要中提取3个关键词。
请使用以下格式:
文本:
摘要:
翻译:
关键词:
"""
这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。
公仔很软,超级可爱,面部表情也很和善。但是相比于价钱来说,
它有点小,我感觉在别的地方用同样的价钱能买到更大的。
快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。
"""
回答
文本:这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。公仔很软,超级可爱,面部表情也很和善。但是相比于价钱来说,它有点小,我感觉在别的地方用同样的价钱能买到更大的。快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。
摘要:这个熊猫公仔很可爱软,女儿很喜欢,但相对于价钱有点小。快递提前到货。
翻译:This panda toy is a birthday gift for my daughter. She loves it and takes it everywhere. The toy is soft, cute, and has a friendly facial expression. However, it's a bit small for its price, and I feel that I could buy a bigger one for the same amount elsewhere. The delivery arrived one day earlier than expected, so I played with it myself before giving it to my daughter.
关键词:熊猫公仔,价钱,快递
1.1.4 推断
从产品评论和新闻文章中推断情感和主题
可能涉及提取标签、提取实体、理解文本情感等等
eg.1
解析下面"""括起来的评论文本。
- 评论文本的情感是什么,用一个单词回答:「正面」或「负面」。
- 识别评论文本表达的情感,包含不超过五种,将答案格式化为以逗号分隔的单词列表。
- 评论文本是否表达了愤怒,给出是或否的答案。
- 从评论文本中识别以下项目:
- 评论者购买的物品
- 制造该物品的公司
将响应格式化以 “物品” 和 “品牌” 为键的 JSON 对象。
如果信息不存在,请使用 “未知” 作为值。
请使用以下格式:
文本:
文本情感:
是否愤怒:
关键信息:
"""
我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。
我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。
几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!
在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!
"""
回答
文本:我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!
文本情感:正面
识别评论文本表达的情感:满意、感激、信任、赞美、满意
是否愤怒:False
关键信息:
{
"物品": "卧室灯",
"品牌": "Lumina"
}
eg.2
解析下面"""括起来的评论文本。
从评论文本中识别以下项目:
- 情绪(正面或负面)
- 审稿人是否表达了愤怒?(是或否)
- 评论者购买的物品
- 制造该物品的公司
将您的响应格式化为 JSON 对象,以 “Sentiment”、“Anger”、“Item” 和 “Brand” 作为键。
如果信息不存在,请使用 “未知” 作为值。
让你的回应尽可能简短。
将 Anger 值格式化为布尔值。
"""
我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。
我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。
几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!
在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!
"""
回答
{
"Sentiment": "正面",
"Anger": false,
"Item": "卧室灯",
"Brand": "Lumina"
}
1.1.5 文本转换
eg.1 翻译
解析下面"""括起来的文本。
请将文本分别翻译为英语,法语,德语,日语,韩语。
"""
您好,我想订购一个搅拌机。
"""
回答
这是一段中文简要的文本,意思是“您好,我想订购一个搅拌机。”
英语翻译:Hello, I would like to order a mixer.
法语翻译:Bonjour, j'aimerais commander un mixeur.
德语翻译:Hallo, ich mchte einen Mixer bestellen.
日语翻译:こんにちは、ミキサーを注文したいと思います。
韩语翻译:안녕하세요, 믹서기를 주문하고 싶습니다.
eg.2 语义调整
解析下面"""括起来的文本。
请将文本分别以专业语气,日常语气,坦诚语气,自信语气,友好语气进行表达。
"""
随着全球化与跨境商务的发展,交流的用户可能来自各个不同的国家。
"""
回答
这是一段中文简要的文本,意思是“随着全球化与跨境商务的发展,交流的用户可能来自各个不同的国家。”
以专业语气表达:随着全球化和跨境商务的发展,与我们交流的用户可能具有多元化的国籍背景。
以日常语气表达:随着全球化和跨境商务的发展,可能会有来自不同国家的用户和我们进行交流。
以坦诚语气表达:随着全球化和跨境商务的发展,我们需要意识到与我们交流的用户可能来自不同的国家,这对我们的工作提出了新的挑战。
以自信语气表达:随着全球化和跨境商务的发展,我们有能力应对来自不同国家的用户与我们的交流。
以友好语气表达:随着全球化和跨境商务的发展,我们可能会与来自不同国家的用户交流,这也是一个很有趣的经历。
eg.3 翻译+纠错+风格+格式转换
请按步骤解析下面"""括起来的文本。
- 进行拼写和语法纠错。
- 将纠正后的文本翻译成中文。
- 以淘宝评论的风格转换文本。
- 对转换的文本从产品角度阐述优点和缺点,并进行总结。
- 润色一下总结,使评论更具有吸引力。
请输出以下格式:
纠正后文本: xxx
中文: xxx
评论:xxx
产品优点:xxx
产品缺点: xxx
总结: xxx
"""
Got this for my daughter for her birthday cuz she keeps taking
mine from my room. Yes, adults also like pandas too. She takes
it everywhere with her, and it's super soft and cute. One of the
ears is a bit lower than the other, and I don't think that was
designed to be asymmetrical. It's a bit small for what I paid for it
though. I think there might be other options that are bigger for
the same price. It arrived a day earlier than expected, so I got
to play with it myself before I gave it to my daughter.
"""
回答
纠正后文本: Got this for my daughter for her birthday cuz she keeps taking mine from my room. Yes, adults also like pandas too. She takes it everywhere with her, and it's super soft and cute. One of the ears is a bit lower than the other, and I don't think that was designed to be asymmetrical. It's a bit small for what I paid for it though. I think there might be other options that are bigger for the same price. It arrived a day earlier than expected, so I got to play with it myself before I gave it to my daughter.
中文:我给女儿买了这个作为生日礼物,因为她总是拿我的。是的,成年人也喜欢熊猫。她把它带到哪里都很可爱,而且超级柔软。其中一个耳朵比另一个低一点,我不认为这是设计上的不对称。但是相对于我付的价钱来说,它有点小。我觉得可能有其他同价位但更大的选项。比预期提前了一天到达,所以我在把它送给女儿之前自己玩了一下。
评论:非常可爱的熊猫玩具,成年人和孩子都会喜欢。非常柔软,适合携带。但是有一只耳朵比另一只低一点,不太对称。而且相对于价格来说,有点小。不过物流速度很快,提前一天到达,让我有机会提前玩玩具。
产品优点:可爱,柔软,携带方便,适合成年人和孩子。
产品缺点:存在不对称的设计缺陷,有点小。
总结:这款熊猫玩具非常适合作为礼物送给家中的孩子或是熊猫爱好者。它非常可爱,柔软,方便携带。但是它存在一些设计上的缺陷,耳朵不太对称,并且有点小。如果您更注重产品的大小和对称性,可能需要考虑其他选项。但总体而言,这是一款非常不错的熊猫玩具。
1.1.6 文本扩展
eg.1 回复邮件
你是一位客户服务的AI助手。
你的任务是给一位重要客户发送邮件回复。
根据客户"""括起来的评价内容,生成回复以感谢客户的评价。提醒模型使用评价中的具体细节
用简明而专业的语气写信。
作为“AI客户代理”签署电子邮件。
"""
他们在11月份的季节性销售期间以约49美元的价格出售17件套装,折扣约为一半。
但由于某些原因(可能是价格欺诈),到了12月第二周,同样的套装价格全都涨到了70美元到89美元不等。
11件套装的价格也上涨了大约10美元左右。
虽然外观看起来还可以,但基座上锁定刀片的部分看起来不如几年前的早期版本那么好。
不过我打算非常温柔地使用它,例如,
我会先在搅拌机中将像豆子、冰、米饭等硬物研磨,然后再制成所需的份量,
切换到打蛋器制作更细的面粉,或者在制作冰沙时先使用交叉切割刀片,然后使用平面刀片制作更细/不粘的效果。
制作冰沙时,特别提示:
将水果和蔬菜切碎并冷冻(如果使用菠菜,则轻轻煮软菠菜,然后冷冻直到使用;
如果制作果酱,则使用小到中号的食品处理器),这样可以避免在制作冰沙时添加太多冰块。
大约一年后,电机发出奇怪的噪音,我打电话给客服,但保修已经过期了,所以我不得不再买一个。
总的来说,这些产品的总体质量已经下降,因此它们依靠品牌认可和消费者忠诚度来维持销售。
货物在两天内到达。
"""
回答
尊敬的客户,
非常感谢您对我们产品的关注和支持,并且感谢您提供的详细评价。我们非常重视您的反馈,关于产品价格的变化和质量问题,我们将进一步加强管理和监管,确保我们的客户能够获得最好的购物体验。
我们也非常感谢您分享的使用技巧和注意事项,这些细节对于产品的使用和效果都非常重要。我们将确保向更多的客户提供这些有用的提示。
我们非常抱歉您遇到了电机噪音的问题,并且保修已经过期。如果您需要任何帮助或有任何疑问,请随时与我们联系。我们将尽最大努力为您提供最好的服务。
最后,我们非常感谢您对我们品牌的忠诚度和信任,我们将继续努力提高产品质量和服务水平,以满足您的需求。如有任何问题,请随时联系我们。
祝您一切顺利!
AI客户代理
1.2 Building Systems with the ChatGPT API
待定
1.3 LangChain for LLM Application Development
待定
1.4 HuggingLLM
链接
必备知识
- Temperature在模型中的作用
- Temperature 是一个超参数,可用于控制生成语言模型中生成文本的随机性和创造性。 它用于调整模型的softmax输出层中预测词的概率。 温度参数定义为在应用 softmax 函数之前用于调整 logits 的比例因子的倒数。
- 当Temperature 设置为较低的值时,预测词的概率会变尖锐,这意味着选择最有可能的词的概率更高。 这会产生更保守和可预测的文本,因为模型不太可能生成意想不到或不寻常的词。 另一方面,当Temperature 设置为较高值时,预测词的概率被拉平,这意味着所有词被选择的可能性更大。 这会产生更有创意和多样化的文本,因为模型更有可能生成不寻常或意想不到的词。
- 温度参数通常设置为 0.1 到 1.0 之间的值,具体取决于生成文本中所需的随机性和创造性水平。 温度值为 1.0 对应于标准 softmax 函数,其中预测词的概率未按比例缩放 2.
ChatGPT使用网站
- https://poe.com/
编辑于 2023-06-28 09:49・IP 属地北京
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net