如何写好提示词
1. 原则
1. 指令需要清晰、具体
1. 使用分隔符
例如,可以使用```{text}```,或者XML的标签来区分出指令内容和上下文背景内容;
2. 结构化输出
可以要求模型以JSON或者HTML等格式内容输出;
3. 给出示例
可以给出几个任务完成的结果示例,供模型参考;
4. 预设一些条件检查(可选)
让模型执行的关键节点检查是否满足条件,来决定任务的执行路径;
2. 给模型时间去思考
1. 列出任务步骤
复杂的任务,最好将任务过程分步骤列出来;
2. 指导模型下结论前,自己先计算一次
模型做决策之前,让模型自己先思考一遍解决方案,会得到更好的结果,否则模型给出的结论不一定准确;
3. 风险规避
1. 模型“幻觉”
模型可能编造看似真实的信息(如不存在的产品参数、错误的文献引用)。可在提示词中加入 “基于已知信息回答,若无法确认,明确说明,暂无相关数据”,或要求模型 “引用源文本中的内容作为支撑”,减少无根据的编造;
2. 避免指令冲突
提示词中如果有相互矛盾的指令,模型会浪费大量资源去推理调和矛盾,甚至输出错误的结果;提示词撰写完成需要反复检查,确保逻辑一致,可以对指令设置具体的优先级;
2. 通用格式
1. 通用格式
gemini和openai的提示词指南都指出,一般而言一份好的提示词需要包含一下4个要素:
- 角色设定 (persona)
- 任务描述 (task)
- 上下文背景信息 (context)
- 输出格式 (fomat)
例如:假设你是(某行业)的项目经理,请根据(相关项目文档详情),为(某角色)草拟一封执行摘要邮件,要求使用项目符号列表形式。
openai的提示词指引中有提到使用markdown格式来标记提示词指令的不同部分和层次结构,xml标签来划分(诸如参考文档等)内容;
Markdown headers and lists can be helpful to mark distinct sections of a prompt, and to communicate hierarchy to the model. They can also potentially make your prompts more readable during development. XML tags can help delineate where one piece of content (like a supporting document used for reference) begins and ends. XML attributes can also be used to define metadata about content in the prompt that can be referenced by your instructions.
综上,我们可以认为一份通用的高效的提示词,应该是包含上述四要素的markdown文本。
2. 生图提示词
文生图:文本提示 + 参数
图生图:图片提示 + 文本提示 + 参数
图片提示:
- 根据所给的图片进行描述。如:Keep the consistency of action, expression, clothing, shape and appearance of the photos;
文本提示:
- 描述想要生成图片的样子;
- 正向描述,图片要如何如何,如:A little cute girl in the kitchen, baking cookies and washing dishes;
- 负向描述,图片不要如何如何,如:worst quality(图片质量差), nsfw(内容不适), blurry(模糊)等;
参数:
- 改变图像生成的方式;
- 尺寸,width, height;
- Seed:随机种子,只要种子数、参数、模型都一致,就能重新生成一样的图像,-1 的话是生成一个随机数,可以用于替换不同背景;
- Sampling method:采样方法等;
示例:
主角描述 + 主角行为 + 主角描述 +艺术形式 +光线效果 +色彩风格 + 视角角度 + 图片质量 + 应用模型(Model: disneyPixarCartoon_v10);
A little cute girl in the kitchen, baking cookies and washing dishes, 3d art, c4d, octane render, ray tracing, animation lighting, popmart blind box, clay material, pixar trend, depth of field, ultra detailed,popmart, Pixar animation, cute character, chibi, front view, Global Illumination, solid color background, Ultra HD;
在厨房里有一个可爱的小女孩,她正在烘焙饼干和洗碗,使用3D艺术,C4D,Octane渲染引擎和光线追踪技术,采用动画般的照明效果,结合泡泡玛特的盲盒概念,使用粘土材质,跟随皮克斯的潮流,加入景深特效,实现超高细节。角色可爱,呈现迷你形象,正面视角。背景采用纯色背景,运用全局光照技术,实现超高清效果。
3. 实际案例
1. 培训教师招聘AI面试官 提示词示例
1 | # Role: 教师面试官 |
2. 业务实践经验
- 模型的输入,输出和上下文长度的token数是有限制的,不同模型不一样,一般而言,超过限制就会截断,可以视业务场景而定,限制输出的token数;
token是模型用来表示自然语言文本的的最小单位,可以是一个词、一个数字或一个标点符号等。
如果期望模型输出的格式为json,提示词中一定要明确指定;但是即使指定了json格式,模型的回答偶尔也格式不正确,
- 可能使用
```json ```包裹、可能返回的json格式不合法(开头结尾多加了字符或者标点)、可能返回为空等,实际生产环境,在使用deepseek v3、gpt 4o模型都出现了这些情况; - 这种情况可以优化提示词缓解(提示词中增加模型检查的内容),但目前的根本解决方案,就是返回的格式不正确,直接重新发起对话(也就是增加重试);
- 可能使用
有时候,模型回答没有超过max_token的限制,也被截断了一样,可能是模型内部审查触发了截断、可能是后端超时等原因,这种情况,目前也只能说是增加重试;
提示词完成后,可以调试多次,不断修改优化;当然更好的方式,就是使用哪个模型,就先把提示词交给这个模型优化一遍,自己再来看优化后的效果,再调整优化。
