提示词工程是什么?
在说提示词工程前,先看看提示词是什么?
提示词 (Prompt)就是你输入给像 ChatGPT 这样的 AI 模型的文字指令,用来告诉它你想让它做什么。
比如我们在使用 ChatGPT 时,会在输入里写出下下面的内容
假设你是一位 IT 行业的产品经理,准备离职去创业。请用专业、委婉的语气,写一封英文辞职信,表达感谢,并说明你的决定。
形如上面的内容就是一条给 AI 模型的文字指令。AI 模型根据文字指令内容生成答案。答案的准确性与提示词关系甚大,清晰准确的提示词可以确保 AI 给出正确的答复。由此诞生一个工程就是提示词工程
提示词工程(Prompt Engineering)是指设计和优化输入给大型语言模型(LLM,如 ChatGPT)的提示词(prompt) ,以便获得更准确、高效或符合预期的输出。
用大白话讲,提示词工程是如何跟 AI 说话,让它干你想干的事的一门技术
提示词作用
为什么提示词非常重要呢?
大语言模型的能力很强,但它的表现很大程度上依赖于你的输入指令。一个好的提示词可以:
- 让模型输出更准确、完整的答案;
- 控制模型的语气、格式、长度;
- 引导模型完成复杂任务(如写代码、摘要、推理等);
- 降低 hallucination(胡说八道)的概率。
正因为提示词非常重要,所以才衍生出提示词工程、甚至有的公司专门设置提示词工程岗位、专门研究如何写好提示词
提示词标准
笔者对提示词工程非常感兴趣,对如何写好提示词进行详细的学习。但是发现全网并没有提出提示词的严格标准、笔者在阅读所有的提示词的技术文章后,提出自己认可的提示词标准(这个标准只是笔者个人观点,非学术观点)。
笔者认为提示词标准由下列要素组成:
- 角色
- 指令/任务
- 上下文
- 问题
- 示例
- 输出指示
提示词结构标准 = 角色 + 任务 + 上下文 + 问题 + 示例 + 输出指示
你根据需要,灵活组合这些元素。就可以写出质量高的提示词。下面详细分析这些要素
角色
角色指为 AI 分配一个身份或视角,让它"扮演"某个专家、人物或风格。角色决定了语言模型的"语气"和"思维方式",让输出更贴合预期。示例如下
你是一位资深前端工程师,熟悉使用 React 前端框架,擅长解决性能优化问题
指令/任务
指令/任务是提示词的核心目标,没有任务,就没有方向。你是让 AI 帮你干活。所以明确告诉 AI 你希望它完成什么事情。
请帮我撰写一封英文的辞职信,语气委婉,并表达感谢。
上下文
上下文可以显著提升准确性和相关性,特别是在多轮对话或特定主题下。提供足够的信息背景,让 AI 更好地理解你的需求。
我目前在一家互联网公司工作,职位是产品经理,计划在三个月后离职创业。
问题
如果你想让 AI 回答某个具体的问题,这部分就是明确的提问语句。聚焦模型输出,避免偏离主题或答非所问。
在现在的市场环境下,离职创业有哪些需要考虑的风险?
示例
给出你希望 AI 输出的参考案例,起到示范作用。 当你给出示例,AI 模型会模仿你给的风格或格式
示例: 输入:我想学习前端。 输出:你好!学习前端建议先掌握 HTML、CSS 和 JavaScript......
输出提示
输出提示用于控制输出形态,确保可以直接使用或满足需求。对 AI 输出的格式、风格、长度、语言等做出限制或说明。
请用 Markdown 格式输出,分为三部分:引言、正文和结论,不超过 300 字。
根据这份标准,小伙伴们可以分析平常自己写的提示词,我敢拍胸脯保证小伙伴们写出上面的要素,可能没建立这些要素的概念。
根据这份提示词标准,对平常写的提示词进行解构、然后填充缺少部分要素内容、再喂给 AI 模型,看看结果是否有提升? 如果结果准确性有提升请在评论中扣 666
写好提示词的技巧
在上一章节给出提示词的标准,基于提示词标准,笔者想分享一些如何写好提示词的技巧
提示词模板
上面说到提示词由角色、指令/任务、上下文、问题、示例、输出指示等要素构成。那么将提示词按照这六个要素编写。
作为前端开发人员会遇到开发 React 项目的性能优化问题。就用这个常见的技术问题为例,如何写好提示词,让 ChatGPT 帮我们解决问题
问题梗概:如何优化 UserList 组件性能?
提示词如下:
js
// 角色
我是一名资深前端开发人员、熟悉使用 React 前端开发框架,擅长解决 React 性能优化问题
// 上下文
我用 React 写了一个 UserList 组件,组件代码如下所示,
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
// 问题
现在UserList组件存在比较验证的性能问题
// 指令/任务
请你现在从性能优化的角度帮我优化 UserList 组件
// 输出指示
使它的性能表现非常 OK,给出完整的解决问题的思路和过程以及代码
上面的提示词完美的遵循提示标准要素,有助于 AI 理解指令。给出的答案的准确性应该很 OK
提示词链
提示词链(Prompt Chaining)是一种将多个提示词按步骤组织起来、形成流程链条的提示词工程技巧 ,目的是让 AI 更好地完成复杂任务或提高输出质量。
用大白话讲,一个复杂任务,可能无法通过一个提示词一次性搞定。
所以我们会把它拆成多个步骤,每一步用一个提示词,引导 AI 一步步完成,就像接力赛一样,这就叫"提示词链"
构成方式(链式结构)
vbnet
Step 1: 总结原始文本的主要观点
↓
Step 2: 用更有说服力的语言重写这些观点
↓
Step 3: 输出一篇结构清晰的说服型文章
每一步的结果都会作为下一步的输入,逐步靠近目标。
举个例子:写商业计划书的提示词链
目标:生成一份 AI 产品的商业计划书
Step 1:获取核心信息
请列出一个 AI 产品的基本信息,包括产品名称、目标用户、核心功能、解决的痛点。
Step 2:生成市场分析
根据以下信息,为该 AI 产品生成简要的市场趋势与竞争分析。
输入:
上一步的输出
Step 3:制定商业模式
基于以上产品信息和市场分析,设计一个可持续的商业变现模型。
Step 4:输出完整商业计划书
请将以上所有内容整合,形成一份结构清晰、用词专业、适合向投资人展示的商业计划书。
零样本思维链
零样本思维链提示过程是对 CoT prompting 的后续研究,引入了一种非常简单的零样本提示。他们发现,通过在问题的结尾附加让我们一步步思考这几个词,大语言模型能够生成一个回答问题的思维链。从这个思维链中,他们能够提取更准确的答案
技术上讲,完整的零样本思维链过程涉及两个单独的提示/补全结果。在下面的图像中,左侧的顶部气泡生成一个思维链,而右侧的顶部气泡接收来自第一个提示(包括第一个提示本身)的输出,并从思维链中提取答案。这个第二个提示是一个自我增强的提示。
错误示例
如果 John 有5个梨子,吃了2个,又买了5个,然后把 3个给了他的朋友,他还剩下多少个梨子?
结果是
John 有 8 个梨子。
使用零样本思维链后
如果 John 有5个梨子,吃了2个,又买了5个,然后把 3个给了他的朋友,他还剩下多少个梨子? 让我们一步一步地思考。
结果是
John 起初有 5 个梨子。他吃了 2 个梨子,还剩下 3 个梨子。他又买了 5 个梨子,一共有 8 个梨子。他把 3 个梨子给了他的朋友,他现在只剩下 5 个梨子。
总结:零样本思维链类型的提示有时可以有效地提高生成任务完成的长度。例如,请考虑标准提示写一个关于青蛙和蘑菇成为朋友的故事
。在此提示的末尾附加让我们一步一步地思考
会导致更长的补全结果。
多范例提示
多范例提示是指为模型展示一些例子,从而更形象地描述你的需求。比如使用 AI 为饭店的菜品写一些介绍词,可以先给出一些例子,然后让 AI 根据给出的例子的风格续写
糖醋里脊: 外酥里嫩,酸甜开胃,经典家常美味。 刀拍黄瓜: 清爽脆嫩,蒜香浓郁,夏日开胃凉菜。 请按照上述例子风格,写出蚂蚁上树、清炒苕尖等菜的介绍语
复杂任务拆解
在工作中难免遇到复杂问题或难以一次性解决的问题,任务拆解 是一个非常有效的策略。这个方法可以提高准确性、可控性和模型输出的质量。
为什么要进行复杂任务拆解?
- 减少上下文混乱:大任务往往涉及多个子问题,一次性问清楚容易造成模型理解偏差。
- 提高精度与稳定性:逐步推进有助于生成更符合预期的中间和最终结果。
- 便于调试和调整:你可以在中间步骤检查输出,及时调整方向。
示例解释
任务:公司需要开发一套 AI 客服系统 拆解流程:
- 明确客户服务的主要场景(售前、售中、售后)。
- 为每个场景列出常见问题。
- 针对每类问题,设计对应的意图识别和回复逻辑。
- 编写训练样本和提示词。
- 设计技术架构与模型调用流程。
根据使用场景定制提示词
由于笔者是技术开发人员,所以想从使用场景下讲解一些定制提示词。作为技术开发人员,使用 AI 的场景比较固定
把 AI 当作搜索引擎
相比使用谷歌搜索、百度搜索来说,把 AI 当作搜索引擎使用 ,可以让更好地获取信息、加快查找效率,尤其适用于需要整理资料、查找概念、快速理解复杂内容的场景。
往往搜索的提示词是这样的
XXX是什么?起什么作用?局限性是什么?
将上述指令喂给 AI 模型,AI 可以给出 XXX全方位信息
优化技术开发文档
技术开发人员使用 AI 模型优化技术文档,那么一定要给出初版的技术文档内容,这对 AI 模型来讲,本质使用了多范例提示技巧,AI 模型基于粗糙的技术文档内容进行优化
解决编码问题
相信很多小伙伴在日常开发中已经使用AI代码助手,帮忙解决编码问题。
让 AI 模型尽可能一次性对编码问题给出正确的答案,小伙伴们可以按照上一节说的提示词模板编写指令
总结
本篇文章主要讲述提示词工程的重要性,提出提示词标准,根据标准写出高质量的提示词,从技巧和使用场景方面给出笔者个人的思考