logo
22

Prompt最佳实践:文心一言Prompt通用技巧

本文总结了一些能够让文心一言更好理解的Prompt技巧。包括编写清晰、具体的指令;使用分隔符清晰地表示输入的不同部分;明确要求一个结构化的输出;提供少量案例;指定完成任务所需的步骤。
在上篇文章中,我们介绍了编写Prompt实践的基本方法:Prompt最佳实践:如何编写一个合格的Prompt。本篇文章将更加聚焦,总结了一些能够让文心一言更好理解的Prompt技巧。

技巧一:编写清晰、具体的指令。如果一言无法准确理解,请使用更清晰的特定性描述。

通过提供尽可能清晰和具体的指令来表达您希望模型执行的操作。这将引导模型给出正确的输出,并减少你得到无关或不正确响应的可能。编写清晰的指令不意味着简短的指令,因为在许多情况下,更长的提示实际上更清晰,且提供了更多上下文,这可能导致更详细更相关的输出。
示例:
本周完成了一些研发工作,我会给你一个列表,列表结构为第一列表示工作的类型,通常有Story、Feature、Bug等;第二列表示这项工作的状态,通常有新建,开发中,测试中,已完成;第三列代表工作是否有超期风险,如:已超期,未超期;第四列表示这列工作的内容,具体描述了我做了什么。
请一步一步的思考,按照要求帮我写一份周报,我希望通过这些工作内容,生成一份周报。周报的结构由3部分组成:
1. 工作摘要:请把第四列的内容进行合并总结改写成一句通顺的话,其中类似的话请合并;
2. 主观分析:请根据第四列中已经超期的工作进行总结,表明需要重点关注;
3.详细卡片:根据我输入的列表内容生成一个表格,给表格命名为“原始卡片”。
我期望的返回格式是:## 本周进展 。 Begin:
Task 新建 已超期【后端】自动化规则动作执行数据统计 ;
Story 新建 自动化规则动作执行数据统计 ;
Tech Task 新建 未超期 快速编辑接口关联卡片支持传卡片 id, 目前需要空间前缀+编号 ;
Story 新建 未超期 iTest 接入 iCafe 新建/编辑弹窗 ;
Task 开发中 已超期【后端】order脏数据处理:如果order不为null,isDesc为null,那么给个默认值 ;
Story 新建 未超期 迭代计划需要将viewId 同步到URL上,这样就能根据一个url唯一确定视图 ;
Bug(线上) 已完成 未超期 请求storymapping dubbo 接口超时导致卡片创建失败 ;
Tech Task 完成 未超期 map-bugs 空间的「问题分类」字段有超过 1000个选项,卡顿明显。

策略二:使用分隔符清晰地表示输入的不同部分,分隔符可以是:```,"",<>,;<\tag>等

可以使用任何明显的标点符号将特定的文本部分与提示的其余部分分开。这可以使模型明确知道这是一个单独部分的标记,从而能更好的理解你的要求。
Prompt的格式的重要性远远大于内容,一个结构化的Prompt会让一言更加理解你。
在实际使用中,发现文心在处理格式列表处理经常有混淆问题,无法正确变换为表格,主要还是分隔格式问题。
为了解决以下问题,建议对输入的分隔符特别注意,不要引入多重混淆。如用‘空格’区分不同字段,就需要在字段内容中不要出现“空格”。

策略三:明确要求一个结构化的输出,可以是 MD,表格,JSON 等格式

模型支持我们生成一个结构化的输出,这可以使模型的输出更容易被我们解析,例如,在以下的示例中,我们要求文心一言生成三段的周报,以MD的格式,并且中间需要生成一个表格。
示例
请一步一步的思考,按照要求帮我写一份周报。周报的结构由3部分组成:1. 工作摘要:请把第四列的内容进行合并总结改写成一句通顺的话,其中类似的话请合并2. 主观分析:请根据第四列中已经超期的工作进行总结,表明需要重点关注;3.详细卡片:根据我输入的列表内容生成一个表格,给表格命名为“原始卡片”。我期望的返回格式是:## 本周进展 。
Begin:
Task 新建 已超期【后端】自动化规则动作执行数据统计 ;
Story 新建 自动化规则动作执行数据统计 ;
Tech Task 新建 未超期 快速编辑接口关联卡片支持传卡片 id, 目前需要空间前缀+编号 ;
Story 新建 未超期 iTest 接入 iCafe 新建/编辑弹窗 ;
Task 开发中 已超期【后端】order脏数据处理:如果order不为null,isDesc为null,那么给个默认值 ;
Story 新建 未超期 迭代计划需要将viewId 同步到URL上,这样就能根据一个url唯一确定视图 ;
Bug(线上) 已完成 未超期 请求storymapping dubbo 接口超时导致卡片创建失败 ;
Tech Task 完成 未超期 map-bugs 空间的「问题分类」字段有超过 1000个选项,卡顿明显。

策略四:提供少量案例,让模型更能理解

即在要求模型执行实际任务之前,如果给他提供给它少量成功执行任务的示例。
例如,在以下的示例中,我们告诉模型每一列的具体信息时,会通过举例的方式,帮助它理解和学习。
示例:
本周完成了一些研发工作,我会给你一个列表,列表结构为第一列表示工作的类型,通常有Story、Feature、Bug等;第二列表示这项工作的状态,通常有新建,开发中,测试中,已完成;第三列代表工作是否有超期风险,如:已超期,未超期;第四列表示这列工作的内容,具体描述了我做了什么。
请一步一步的思考,按照要求帮我写一份周报,我希望通过这些工作内容,生成一份周报。周报的结构由3部分组成:1. 工作摘要:请把第四列的内容进行合并总结改写成一句通顺的话,其中类似的话请合并;2. 主观分析:请根据第四列中已经超期的工作进行总结,表明需要重点关注;3.详细卡片:根据我输入的列表内容生成一个表格,给表格命名为“原始卡片”。我期望的返回格式是:## 本周进展 。
Begin:
Task 新建 已超期【后端】自动化规则动作执行数据统计 ;
Story 新建 自动化规则动作执行数据统计 ;
Tech Task 新建 未超期 快速编辑接口关联卡片支持传卡片 id, 目前需要空间前缀+编号 ;
Story 新建 未超期 iTest 接入 iCafe 新建/编辑弹窗 ;
Task 开发中 已超期【后端】order脏数据处理:如果order不为null,isDesc为null,那么给个默认值 ;
Story 新建 未超期 迭代计划需要将viewId 同步到URL上,这样就能根据一个url唯一确定视图 ;
Bug(线上) 已完成 未超期 请求storymapping dubbo 接口超时导致卡片创建失败 ;
Tech Task 完成 未超期 map-bugs 空间的「问题分类」字段有超过 1000个选项,卡顿明显。

策略五:指定完成任务所需的步骤

指定一个复杂任务,需要给出完成该任务的一系列步骤,来帮助模型理解需要如何完成,以及呈现出来的效果。
例如, 首先我们支持了需要通过内容生成周报,并给出一个指令,并给出该指令是执行以下操作的具体步骤。首先,指定了周报需要包含工作摘要,主观分析和详细卡片。第二,指定了生成的注意事项,包括需要合并改写,需要重点关注的内容是超期。第三,指定了输出的格式:##本周进展。这其中,我们要用分隔符分隔不同的步骤。
示例
本周完成了一些研发工作,我会给你一个列表,列表结构为第一列表示工作的类型,通常有Story、Feature、Bug等;第二列表示这项工作的状态,通常有新建,开发中,测试中,已完成;第三列代表工作是否有超期风险,如:已超期,未超期;第四列表示这列工作的内容,具体描述了我做了什么。
请一步一步的思考,按照要求帮我写一份周报,我希望通过这些工作内容,生成一份周报。周报的结构由3部分组成:1. 工作摘要:请把第四列的内容进行合并总结改写成一句通顺的话,其中类似的话请合并;2. 主观分析:请根据第四列中已经超期的工作进行总结,表明需要重点关注;3.详细卡片:根据我输入的列表内容生成一个表格,给表格命名为“原始卡片”。我期望的返回格式是:## 本周进展 。 Begin:
Task 新建 已超期【后端】自动化规则动作执行数据统计 ;
Story 新建 自动化规则动作执行数据统计 ;
TechTask 新建 未超期 快速编辑接口关联卡片支持传卡片 id, 目前需要空间前缀+编号 ;
Story 新建 未超期 iTest 接入 iCafe 新建/编辑弹窗 ;
Task 开发中 已超期【后端】order脏数据处理:如果order不为null,isDesc为null,那么给个默认值 ;
Story 新建 未超期 迭代计划需要将viewId 同步到URL上,这样就能根据一个url唯一确定视图 ;
Bug(线上) 已完成 未超期 请求storymapping dubbo 接口超时导致卡片创建失败 ;
TechTask 完成 未超期 map-bugs 空间的「问题分类」字段有超过 1000个选项,卡顿明显。
大家可以参考以上原则,进一步优化Prompt达成更好的结果。有更多的技巧,欢迎大家在评论区交流讨论,互助成长!
评论
用户头像