与AI对话
提示词Prompt介绍
- 对于普通人:提示词是和 AI 沟通的桥梁,提示词的好坏决定了返回的结果是否准确。
- 对于开发者:提示工程是一种相对较新的学科,专门用于开发和优化提示,以高效地使用语言模型(LM)来处理各种应用和研究主题。
提示词的原则与技巧
| 原则 | 原因 |
|---|---|
| 写清楚需求 | GPT 模型无法读懂您的想法,因此在提供需求时尽可能具体是很重要的。这包括在您的查询中包含详细信息,要求模型采用角色,以及使用定界符清楚地指示输入的不同部分。 |
| 提供参考文本 | 如果可以,请提供与您希望模型生成的内容相似的参考文本。这将有助于模型了解您要查找的内容并生成更准确的结果。 |
| 将复杂的任务拆分为更简单的子任务 | 如果您试图让模型做一些复杂的事情,将任务分解为更小、更易于管理的子任务会很有帮助。这将使模型更容易理解您的要求并生成更准确的结果。 |
| 角色扮演 | 这个技巧的作用是告诉ChatGPT在对话中扮演一个特定的角色或人物。这对于创造更有吸引力和沉浸感的对话,或模拟真实世界的场景特别有用。 |
| 系统地测试变化 | 对需求或参考文本进行更改时,重要的是系统地测试结果以了解它们如何影响模型的输出。这将帮助您确定对改进结果最有效的更改。 |
写清楚需求
编写有效的ChatGPT的难点之一是表达含糊不清。为了避免这个问题,有以下几个问题需要注意:
- 定义任何专业术语或技术术语。
- 避免使用模棱两可的语言。
- 使用清晰或简明的语言
错误案例:”你是我的哈基米吗?”
哈基米属于网络用语,而且诞生在2023年,ChatGPT是无法理解这个词的语意的。

好的案例:”请帮我提供在深圳市宝安区所有的咖啡馆”
简明扼要说清楚自己的需求,无需多言,ChatGPT便很好理解了。

提供参考文本
对于文本比较短的引用,可以直接贴到提问里面即可: 如果你有一段法律条款,并希望模型使用这段条款来解释某个概念,例如,我给ChatGPT一段代码,分析代码的Bug

网页链接的引用: 也可以直接将网页链接里面的内容提供给 GPT 来作为引用文本。比如可以直接给它一个链接地址,让它总结文章内的内容。(注意这个功能需要使用web插件)
拆解复杂任务
作为一个厨师,在做饭的时候需要完成这些步骤:准备食材、清理食材、处理食材、开始烹饪、摆盘。
在这个过程中,其实厨师就是把一个复杂的任务,拆解成了多个简单的任务。其实在编程的过程中,也是同样的道理。也会把一个复杂需求,拆解为N个简单的子需求。
如果需要ChatGPT帮助我们完成一个复杂的任务,那么,我们需要预先帮它把任务拆分。这样做的优点是:
- 更好理解每一个操作步骤。
- 不被上下文限制影响。
- 方便调整。
例如,我们提出了一个如下的复杂任务:
- 提示词:作为一个测试工程师,我即将进行述职答辩,我想编写一个述职报告,述职报告需要包含我今年的成绩、我明年的目标、以及我在今年的工作过程中碰到的问题
ChatGPT 虽然给到了相应的回复,但是还有问题:
- 工作成绩没有清晰的数据也没有说服力,看着比较干瘪。报告内容没有图表。
- 内容太过简单空洞。
- 格式不够优雅。
如果我们把提问的方式做进一步优化,把这个复杂问题一步步进行拆解,并给ChatGPT一定的修改反馈,则产生的内容会更加符合我们的需求,比如我们可以把问题分解为:
提示词:作为一个测试工程师,我即将进行述职答辩,我想编写一个述职报告。述职报告需要包含我今年的成绩,我今年带领测试团队将bug的逃逸率降低了10%的比例。并且我希望有一个通过echarts绘制的折线图。请将我的述职报告做进一步优化。

提示词: echarts 折线图没有展示出来

借助外部工具
作为一个大语言生成模型,GPT4 并不擅长各种数学计算。比如下面的问题(来自官方 GPT 最佳指南中的示例问题):
- 提示词:查找以下多项式的所有实值根:3x^5 - 5x^4 - 3x^3 - 7x - 10
如果直接提问的话,通常没法直接给出答案,如下图所示,虽然借助Python,给出了运算过程,但是其实ChatGPT无法像人类数学家一样,给出直接的推导过程:

所以可以将提示词改为:
提示词:查找以下多项式的所有实值根:3x^5 - 5x^4 - 3x^3 - 7x - 10 ,使用Python 实现

角色扮演
角色扮演的过程就更为简单了,我们在编写提示词的时候,只需要给它加上一些角色的设定。
ChatGPT甚至可以扮演领导,面试官,浏览器的console插件等各种各样我们可以想象到的角色:
提示词:我希望你作为一个 javascript 控制台。我将输入命令,你回复javascript 控制台应显示的内容。我希望您只在一个唯一的代码块内回复终端输出,而不是其他任何内容。不要写解释。我的第一个命令是 console.log(“Hello World”);

系统的测试变化
正如人在回复信息的时候,也无法保证所有的回复都是正确的,ChatGPT 也无法保证每次给到的信息都是“靠谱的”或者是满足需求的。
所以ChatGPT的每一次回复,在确认没有问题之后,再使用。如果有问题的话,可以进一步进行提问,ChatGPT会根据提示词不停的纠正回复。以达到一个满意的效果。

比如这个示例:
提示词:请问 App 的产品在测试的过程中需要注意什么

提示词:请针对兼容性测试再做一些补充

通过不停的测试以及纠正 ChatGPT 的回复,即可最终获得一个满意的回复。
提示词相关概念
通过上面内容对大模型如何进行对话介绍,下面内容则是详细介绍提示词相关具体内容
什么是提示词(Prompt)?
概念说明:
- 提示词是用户与大模型交互的输入指令,用于告诉模型你希望它完成什么任务。
- 它既可以是一句话,也可以是一段上下文或示例。
举例:
请撰写一份关于用户注册功能的测试用例。
什么是 Token?
概念说明:
- 模型处理的最小单位,通常是词的一部分、一个单词,甚至一个符号*。
举例:
- “Deepseek 是厉害的。” → 分词可能为:
["Deepseek", " 是", " 厉", "害", "的", "。"]
上下文窗口(Context Window)
1 | 128K 的上下文==128000 个 token |
概念说明:
- 指模型每次处理输入 + 输出的最大 token 数量。
- 超出后旧内容将被“遗忘”
注意点💡
- 长 prompt ≠ 好效果,要“信息密度高且结构清晰”。
- 内容越多,token 消耗越多 → 成本 ↑、速度 ↓。
常见大模型的上下文最大Token记忆数量:
- GPT4 —-> 128K
- DeepSeekV3 —->128K
Prompt 与响应的关系
基本流程:
- 用户发出 Prompt
- 模型理解并生成响应
- 模型根据上下文和历史对话生成“合理推测”
模型生成原理:
- 本质是下一个最可能的 token 预测。
- 模型没有“理解”,而是基于概率选择“合适的词”。
Prompt 与输出质量的关系:
- Prompt 不清晰 → 响应不确定甚至出现“幻觉”
- Prompt 精准 → 响应更专业、格式更一致
什么是提示词工程?
概念说明:
提示词工程是指系统性地设计、优化与测试提示词的技术和方法,以引导大语言模型产生预期、高质量、可控的输出。
作用:
- 增强模型可靠性与一致性
- 控制模型输出格式与风格
- 降低“胡编乱造”(幻觉)的风险
提示词角色设定
role 的类型及语义说明
| 角色(role) | 说明 | 示例场景 |
|---|---|---|
| system | 系统设定。用来告诉模型它的角色、行为风格、语境范围等。 | 设定模型是“测试专家”、“英语老师”、“客服机器人”等 |
| user | 用户输入。代表人类给模型提的问题或指令。 | 提问、请求、任务说明 |
| assistant | 模型回复。由大语言模型根据前文生成的回答。 | 模型生成输出,如回答问题、给建议 |
| tool(可选) | 工具调用(部分模型支持)。用于中间调用工具函数或API时的中间交互。 | 使用函数调用插件、调用代码执行器等 |
- 在多数常见应用中,仅需关注前三种角色:system、user 和 assistant。
基础角色设定
给模型“扮演”某个角色,设定行为风格与语言风格
特点:
- 模拟身份让输出更真实、更符合特定语境
- 非常适合教育、技术、客服等行业场景
示例1:标准问答流程
1 | messages = [ |
示例2:英语教学风格
1 | messages = [ |
示例3:测试主管角色扮演
1 | messages = [ |
使用system设定角色
示例1:设定身份与风格(使用 system)
1 | messages = [ |
示例2:错误场景分析
1 | messages = [ |
示例3:技术方案咨询
1 | messages = [ |
对比
- 角色设定的位置不同:system消息用于长期角色设定,而user消息中的角色指示是即时的
- 结构规范性:按照官方的最佳实践,角色和风格应该放在system消息中,这样更清晰和持久。
- 效率:使用system消息可以避免重复指定角色,提高对话效率。
- 清晰度:system消息明确区分角色设定和具体请求,而user中的角色指示可能混合了指令和角色设定,不够清晰
提示词优化的技巧
技巧1:明确指令
- 模型更擅长处理任务明确的请求。
- 含糊的描述容易导致输出不符合预期。
示例一:写接口测试代码
1 | # 模糊提示: |
1 | # 明确提示: |
技巧2:控制风格与格式
- 通过提示控制模型以 Markdown、表格、列表、JSON 等格式输出。
- 用于生成日报、Bug列表、测试报告、接口说明等结构化内容。
示例一:Markdown报告
1 | messages = [ |
示例二:表格用例
1 | messages = [ |
示例三:JSON接口用例
1 | messages = [ |
技巧3:加入约束,减少幻觉
- 模型在生成实时性内容时可能产生“幻觉”(虚假或伪造内容)。
- 限定“来源、时间、事实标准”等可以有效降低这种风险。
示例一:对比Selenium版本新特性
1 | # 宽泛提示 |
示例二:生成测试用例
1 | # 宽泛提示 |
示例三:生成Bug报告
1 | messages = [ |
技巧4:少量样本提示
- 通过示例“教”模型学会相应的分类或转换任务。
- 非常适合缺陷分类、日志解析、测试案例格式转换等。
示例一:测试步骤转换
1 | messages = [ |
示例二:自动化测试故障分析
1 | instruction = """ |
技巧5:链式思维
示例一:基础算术(分步推理)
1 | messages = [ |
示例二:测试点分析
1 | messages = [ |
提示词指令模板
作用:通过结构化模板控制模型输出,实现高效可复现的任务处理
特点:
- ✅ 直接高效 - 减少模糊指令导致的无效输出
- ✅ 可复现性强 - 固定模板确保结果一致性
- ✅ 动态适配 - 支持变量插值灵活填充内容
模板结构
| 字段名 | 作用 | 示例 |
|---|---|---|
{instruction} |
定义任务目标和输出格式要求 | “生成法语翻译,保留专业术语” |
{examples} |
提供输入-输出样本(可选) | “输入:Hello → 输出:Bonjour” |
{input_text} |
用户实际需要处理的内容 | “How are you?” |
{output} |
模型生成结果的占位符 | (留空由模型填充) |
使用案例
自动化测试故障分析
1 | instruction = """ |