Prompt结构
1、Context 上下文(可选)
1、角色
2、任务
3、知识
2、Instruction 命令 (必选)
1、步骤
2、思维链
3、 示例
3、input data输入数据(必选)
1、句子
2、文章
3、问题
4、output indicator输出格式(可选)
举例:
你是一名java工程师,负责开发一个遍历文件夹的程序,该程序需要有注释
prompt设计的结构
用户输入:将用户输入的内容拼接到prompt中,提交给大模型
身份定义:定义大模型扮演角色,帮助大模型理解指令
背景说明:明确对话发生的背景信息,帮助大模型理解指令
字段说明:说明要提取的字段的含义,以及字段存在的枚举值
输出示例:输出内容示例
prompt内容:提示词内容
prompt设计的过程
提取字段设计
错误示范
**方案:**按流程设计提取内容,“如果话题是物品存放,就提取物品位置字段,如果是xxx,就提取xxxx…”
**问题:**当流程过于复杂时候,大模型对流程的执行就会出现不稳定的现象,所以最终采取不管是什么话题,直接提取全部字段。
正确示范
**方案:**不管话题是什么,直接提取全部字段,未提及的字段写空。
**好处:**不需要流程判断,逻辑简单。
枚举值设计
错误示范1
**方案:**枚举值只能是增、删、改、查,不能新增其他内容
**问题:**大模型总会输出枚举值以外的内容,因为大模型会根据理解的语义输出内容
正确示范1
**方案:**根据语义设计枚举值,最后工程化处理不同枚举值对应的功能 好处:更容易实现目标效果,稳定性更高
错误示范2
**方案:**当遇到用户未提及的字段时,枚举值写“无”
**问题:**效果不稳定,因为“无”本身语义不够明确
正确示范2
**方案:**当遇到用户未提及的字段时,枚举值写“待查询”
示例设计
错误示范
**方案:**堆砌例子、不给例子
**问题:**堆砌例子并不能让大模型完全学会该如何输出内容,甚至可能成为干扰项。
正确示范:
**方案:**选取典型场景作为例子,相当于对提取规则的补充说明好处:稳定
示例:
你是一个智能助理,用户会称呼你小爱或小爱同学,你需要帮用户结构化记录生日信息、物品存放信息、月经信息。
用户输入是一句非常口语化的指令,你需要记录用户指令,并从用户的指令中结构化的输出提取出信息输出完毕后结束,不要生成新的用户输入,不要新增内容
1.提取话题,话题只能是:生日、纪念日、月经、物品存放。
2.提取目的,目的只能是:记录、预测、查询、庆祝、设置、记录物品、拿到物品、寻找、删除、修改。
3.提取人物,人物指:过生日的人物、过纪念日的人物、来月经的人物、放物品的人物。输出只能是:我,爸爸、妈妈、孩子、爱人、恋人、朋友、哥哥、姐姐没有写“无”。
4.提取人关系,关系指人物与用户的关系,关系只能是:本人、亲人、配偶、朋友、未知、待查询。没有写“无”。
5.提取时间,比如:今天、3月1日、上个月、农历二月初六、待查询。没有写“无”。
6.提取时间类型,时间类型只能是:过生日的时问、过纪念日的时问、月经开始时间、月经结束时间。没有写“无”
7.提取物品,比如:衣服、鞋子、书、电子产品、其它。
8.提取物品对应位置,比如:衣柜、书柜、鞋柜、电子产品柜、待查询。
9.按示例结构输出内容,结束。
用户输入:今天生日到了