一、正确认识AI提示词

AI就像是一个「懂王」一样,无论你给它发什么内容它都能接上话,但是它经常胡说八道。我们需要通过调整提示词来规范它按照我们的预期输出。

初学提示词的时候要摒弃复杂化的思维:不能老想着只有复杂的提示词才能够解决自己的问题。这种思维模式会导致当我们遇到一个问题可以用AI提示词解决的时候,会觉得很复杂、太麻烦,就不去用AI提示词了,直接手动搞定了。

要先将提示词用起来,在用的过程中发现自己写的提示词并不能得到很好的结果,这个时候再去学习一些技巧,或者请教高手解决当前的问题。就这样不断的用,不断的发现问题,不断的解决问题,提示词水平自然而然就高了。

AI提示词是工具,你不应该先学各种技巧再开始用,而应该先用起来再学习各种技巧。

二、OpenAI官方提示词技巧

模型无法读懂你的想法。如果输出太长,请要求简短回复。如果输出太简单,请要求专家级写作。如果您不喜欢这种格式,请演示您希望看到的格式。模型对你想要什么的猜测越少,你得到它的可能性就越大。

错误示例优秀示例
如何在 Excel 中添加数字?如何在Excel中将一行美元金额相加?我想对一整行自动执行此操作,所有总数都位于名为“总计”的列的右侧。
谁是美国总统谁是2025年美国总统,选举多久举行一次?
编写代码实现冒泡排序编写一个Python函数来实现冒泡排序。对代码进行大量注释,以解释每行作用以及为什么这样编写。
帮我总结会议记录在单个段落中总结会议记录。然后写一个演讲者的降价列表和他们的每个关键点。最后,列出演讲者建议的后续步骤或行动项目(如果有)。
策略1:尽可能多的描述任务细节

为了获得高度相关的响应,请确保请求提供任何重要的详细信息或上下文。否则,你就要让模型来猜测你的意思了。

示例对比

  • 需求:编写一个排序算法
  • 提示词1(模糊):用Python写一个排序算法
  • 提示词2(清晰):用Python写一个排序算法,用于对数组中的整数进行排序。该算法要能够处理以下情况:
    1. 数组为空。
    2. 数组中只有一个元素。
    3. 数组中包含重复元素。
    4. 请确保算法的时间复杂度不超过O(nlogn)
策略2:要求模型采用角色

给指定特定的角色,相当于给它圈定了一个范围。它去生成内容的时候,就会围绕这个角色的范围来生成特定内容。

  • 需求:向3年级的小学生解释计算机的组成原理
  • 提示词1(不指定角色):请你解释计算机的组成原理
  • 提示词2(指定角色):现在你是一位小学三年级的计算机教师,请你向三年级的学生解释计算机的组成原理
策略3:使用分隔符和占位符

在一些相对复杂的提示词中,没有分隔符,模型可能会将提示词中不同部分的内容混淆在一起。分隔符就像是标志一样,为模型提供清晰的指示,告诉它何时开始或者结束对某一部分内容的处理。

  • 常见的分隔符:三引号("""")、横线(---)、HTML标记(<content></content>

  • 常见的占位符{{}}<>

  • 需求:总结文章中的内容,以json格式输出

  • 提示词:

你是一位文章总结专家,请你对以下文章做出总结,梳理出故事标题、故事类型、包含角色、故事概要,并以Json格式输出。
原始文章:
---
伤仲永
古代有一个叫方仲永的人,在他很小的时候,就显示出了在诗歌方面的才华,被人们赞誉为神童。那些有钱人家经常邀请方仲永到自己家来,一方面是为了目睹一下这位神童的才华,另一方面也是显示一下自己爱惜人才。当然,每当方仲永走的时候,那些有钱人家都会给一些钱以表心意。
方仲永的父亲是一个十分爱钱的人,他把方仲永当成了一棵摇钱树。当没有人邀请的时候,他就领着方仲永主动登门拜访,以求得人家给点小钱。
由于整天跟着父亲东家进西家出,方仲永的学业荒废了,他在诗歌方面的才华,由于没有选择一个正确的方式加以培养,也渐渐地枯萎了。
方仲永长大后,人们从他身上再也看不见一点儿当初神童的影子。
---
输出格式:
{
    "title": "{{故事标题}}",
    "type": "{{故事类型}}",
    "characters": ["{{角色1}}", "{{角色2}}"],
    "summary": "{{故事概要}}"
}
策略4:指定完成任务所需要的步骤

某些复杂任务最好指定为一系列步骤。显式写出步骤可以使模型更容易理解和完成任务。

在提示工程中,如果我们的任务中包含一些具有依赖关系的步骤,后边的步骤依赖于前边步骤的完成。我们就需要在提示词中明确的写清楚所有的步骤,否则大模型会自行脑补这些步骤,导致输出的结果不符合我们预期。

  • 需求:热点新闻文章改写

  • 提示词(分解任务):

你是一位自媒体写手,我希望你对一篇热点新闻,创作一篇新的文章。
创作步骤:
1. 先对新闻内容进行总结。
2. 发表自己的观点,以“第一”、“第二”、“第三”等形式展示。
3. 结尾提出一个问题,引导读者进行评论
要求:
1. 仅输出文章内容,不需要进行分段解释
2. 口语化表达
原始文章:
---
3月7日,潍坊市公安局依托侦查中心合成作战机制,快速侦破一起在公共道路驾驶车辆严重超速案件,从接到群众举报到抓获犯罪嫌疑人仅用4小时,彰显了公安机关对交通违法行为“零容忍”的执法决心与科技强警的高效战斗力。
3月7日下午,潍坊市公安局交警支队接到网友举报称,3月6日深夜在城区道路,疑似出现严重超速驾车行为。接到举报后,交警支队立即提请市公安局侦查中心,开展合成作战,运用大数据分析与智能比对技术,迅速锁定了涉嫌严重超速的车辆及驾驶员李某某。并于当日17时,成功将其抓获。经讯问,李某某对在深夜公共道路上严重超速行驶的违法行为供认不讳。
警方调查确认,李某某的驾驶行为已违反《中华人民共和国道路交通安全法》关于“在道路行驶机动车不得超过限速标志标明的最高时速”的规定,涉嫌严重超速。目前,案件正在进一步侦办中。
---
策略5:提供示例

在现实生活中,我们给别人讲解一件事情的时候,有时候会觉得词不达意,再多的词汇描述也很难准确的讲出来自己想要表达的意思,这个时候我们通常会举一个例子,用例子来类比我们想要表达的意思,而对方听了我们举的例子之后就会立马明白。
这称为"少样本提示"。


  • 需求:文案仿写

  • 提示词:

你是一名自媒体写手,请你参考我提供的文案风格,帮我写一个饮食安全主题的自媒体文案。
要求如下:
1.第一人称视角,主题为自己亲身经历饮食安全相关的事件
2.语气自然,口语化
3.能引起大多人的焦虑感和内心共鸣,引起读者评论和点赞
4.创作一个类似的文案,内容不能和原始文案重复
参考文案:
---
昨天晚上去吃石锅鱼,服务员就往锅里放了水和葱姜,水一开汤居然就白了。我好奇问服务员,她说是蒸汽锅,几分钟顶别的锅半小时,所以汤白。可我记得熬白汤得煎鱼啊,这没煎就白,难道是啥高科技?

我寻思啊,服务员这么说,可还是让人不太信。一般煎鱼让油脂进汤才容易白,这蒸汽锅几分钟就白,是不是有啥猫腻?当然也可能蒸汽锅有特别的地方。但不管咋说,商家该给顾客讲清楚,不然顾客心里不踏实。咱消费者也得留个心,别光听商家的。大家说呢?这汤这么白到底正常不?
---
策略6:将复杂任务拆分成简单小任务
  • OpenAI官方解释
    对于需要大量独立指令集来处理不同情况的任务,首先对查询类型进行分类并使用该分类来确定需要哪些指令可能是有益的。这可以通过定义与处理给定类别中的任务相关的固定类别和硬编码指令来实现。此过程也可以递归地应用,以将任务分解为一系列阶段。此方法的优点是,每个查询将仅包含执行任务下一阶段所需的指令,与使用单个查询执行整个任务相比,这可能会导致更低的错误率。这还可以降低成本,因为较大的提示运行成本更高(请参阅定价信息)

官方原文中提到的「意图分类」概念,是自然语言处理(NLP)中的一种任务,旨在识别和分类用户输入的意图。
它是对用户通过文本、语音等形式表达的自然语言进行理解和分析,从而确定用户的意图类别。

举一个生活中常见的场景来理解,我们平时给移动、联通等一些大的客服平台打电话,接通之后总是会让我们选择服务:“业务查询请按1”,“充值与发票请按2”,“人工服务请按0”。这种场景就有点像是「意图分类」。

在提示工程中,使用该策略的目的是为了应对一些复杂任务,我们可以先把这些任务分成不同的类别,然后根据类别选择相对应的指令。通过这种分类的方法,将大任务拆分为一个个小任务,每个小任务只需要关注当前任务本身,而不是整个复杂的大任务,这样做的好处是可以降低错误率。

  • 需求:写一份新能源汽车行业的市场分析报告

  • 提示词1(笼统版):

帮我写一份关于新能源汽车行业的市场分析报告

任务过于笼统,容易导致内容结构混乱或信息缺失

  • 提示词2(拆分版):
第一步:数据收集
"请列出2023年新能源汽车行业的10个关键市场指标,需包含:全球市场规模、区域增长数据、主流技术路线占比、政策影响维度等要素"

第二步:竞品分析
"请对比分析特斯拉、比亚迪、蔚来三家品牌在以下维度的表现:定价策略、核心技术专利数量、充电网络覆盖率、用户满意度评分。用表格形式呈现对比结果"

第三步:结构搭建
"基于前两步数据,输出一份市场分析报告的标准框架,要求包含:行业概况、竞争格局、技术趋势、用户画像、风险预警五个核心章节,并说明各章节需突出的重点数据"

第四步:内容撰写
"请根据上述框架,撰写市场分析报告,总字数控制在2000字内"

第五步:优化润色
请检查上一步生成的报告内容,对内容进行润色和优化。
重点优化:
1.数据单位统一性
2.专业术语解释
3.段落过渡衔接
4.结论与数据的呼应关系
策略7:分段总结长文档,递归构建完整摘要

由于模型具有固定的上下文长度,因此它们不能用于汇总文本,其长度超过上下文长度减去单个查询中生成的摘要的长度。

要总结一个很长的文档,比如一本书,我们可以使用一系列查询来总结文档的每个部分。章节摘要可以串联和汇总,从而生成摘要的摘要。此过程可以递归进行,直到汇总整个文档。如果有必要使用有关前面部分的信息来理解后面的部分,那么另一个有用的技巧是包括书中任何给定点之前的文本的运行摘要,同时总结该点的内容。OpenAI在之前使用GPT-3变体的研究中研究了此程序总结书籍的有效性。

很长的文本会超过大模型的限制,这种场景下我们把长文本拆分为多个部分。让大模型对每一个部分做总结,然后最后再针对各个部分的总结,做一个汇总的总结。

比如当前有一本数十万字的书,直接把这本内容发给大模型让它做一个摘要总结肯定是不行的。解决办法就是把每个章节单独给大模型发送过去,让它生成一个总结,最后再把各个章节的总结发送给它,让它做一个汇总。


  • 提示词示例:
我会给你一本书的内容,每个章节单独发送给你,请你对每个章节进行摘要总结,最后再对每个章节的摘要总结进行汇总,输出一个总的摘要。请你按照以下步骤执行:
1. 我会给你每个章节的内容,你根据我提供的章节内容做总结
2. 当我给你说:“发送完毕”时,你就对每个章节的总结,做一个汇总,对汇总内容进行摘要总结并输出出来
  • 依次输入各个章节(示例片段):
和其他数据库系统相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥好的作用,但同时也会带来一点选择上的困难。MySQL并不完美,却足够灵活能够适应高要求的环境,例如Web类应用。同时,MySQL既可以嵌入到应用程序中也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统(OLTP)等各种应用类型。

为了充分发挥MySQL的性能并顺利地使用,就必须理解其设计。MySQL的灵活性体现在很多方面。例如,你可以通过配置使它在不同的硬件上都运行得很好,也可以支持多种不同的数据类型。但是,MySQL最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理(QueryProcessing)及其他系统任务(ServerTask)和数据的存储/提取相分离。这种处理和存储分离的设计...

三、经典提示词模型

1. 3W1H
  • Who(角色)
    • 角色定义:详细描述你希望AI扮演的角色,包含其专业背景、知识水平及思考方式。
    • 角色目标:解释该角色在任务中的目的与期望达成的成果。
  • What(内容)
    • 明确需求:具体说明希望AI提供的内容类型(如博客文章、故事、技术文档等)。
    • 细节要求:列出需包含的关键点、主题或论点,以及内容的结构要求。
  • Why(背景/目的)
    • 背景信息:提供任务上下文,解释任务的重要性。
    • 目的阐述:明确想要达成的目标及内容的预期用途。
  • How(输出方式)
    • 期望结果:描述希望AI产出内容的风格、语调和格式。
    • 红线规定:指出不希望AI做的事(如避免特定话题、语言风格或信息)。

示例:
请你扮演文案专家的角色(who),为我的AI大模型课程写一段朋友圈文案(what),我希望这段文案可以吸引朋友圈中对于AI大模型感兴趣的人来参加我的课程(why),我希望文案清晰简洁、吸引人,不要过于官方,或过于商业化的文案,我想突出课程本身的价值(how)。

2. 问题-背景-请求(QBR)
  • Question(问题):明确你想解决的问题是什么。
  • Background(背景):提供足够的背景信息,帮助模型理解问题上下文。
  • Request(请求):具体说明你希望模型做什么。

示例:
我是一位自媒体写手,请帮我根据最近发生的热点事件<热点xxx>来寻找5个选题,要求观点新颖,尽量从独特的角度来切入。

3. 目标-条件-期望(GCE)
  • Goal(目标):描述你希望通过与模型交互达成的最终目标。
  • Condition(条件):说明实现目标的特定条件或限制。
  • Expectation(期望):详细描述你期望的输出类型、格式或内容。

示例:
我要去云南旅游,请为我制定一个旅游计划,目前是4月份,我要去3-4天,我希望你以表格的形式来输出。

4. 场景-任务-动作-结果(STAR)
  • Situation(场景):描述问题或需求的场景。
  • Task(任务):你希望模型完成的具体任务。
  • Action(动作):你期望模型采取的动作或执行方法。
  • Result(结果):你期望的最终结果。

示例:
我是一名老师,我正在准备一份关于儿童注意力发展的学术报告,我需要你来协助我完成这份报告,在完成报告时要参照我给出的文档,我希望这份报告内容详实、逻辑清晰。


5. 定位-现状-建议(PLA)
  • Positioning(定位):清楚说明你目前所处的位置或状态。
  • Current Situation(现状):描述当前情况或挑战,说明为何需要建议。
  • Advice(建议):给出具体的建议或解决方案,帮助改善现状或解决问题。

示例:
我是一名初学者,正在学习编程,但感觉进展缓慢,需要一些建议来提高学习效率和理解能力。

四、结构化提示词

1. 无结构化提示词

你是一名成人英语教师,你具备以下能力:能够根据成人学习者的背景信息及学习需求制定有效的量化教学计划和教学内容。请你帮我制定一个英语学习计划,制定的学习计划中涉及到的在线学习平台一定是中国国内的平台,我年龄28岁,性别男,职业是一名程序员,我掌握的英语单词词汇量为3000,我的目标是在1个月内掌握词汇量达到5000。我在工作日投入的学习时间为每天1个小时,在周末投入的学习时间为每天4小时。

2. 结构化提示词

简单来说,它就是一个写提示词的框架。你可以把它想象成一张表格,每个格子都帮你安排好了该写什么,这样AI就能更容易理解你想要什么。

它有几个核心要素:

  1. 清晰的指令结构
  2. 明确的任务描述
  3. 上下文信息的合理安排
2.1 基本的结构化提示词

角色:你是一名成人英语教师
背景:我年龄28岁,性别男,职业是一名程序员,我掌握的英语单词词汇量为3080,我的目标是在1个月内掌握词汇量达到5880,我在工作日投入的学习时间为每天1个小时,在周末投入的学习时间为每天4小时。
能力:育能够根据成人学习者的背景信息及学习需求制定有效的量化教学计划和教学内容。
任务:帮我制定一个英语学习计划,制定的学习计划中涉及到的在线学习平台一定是中国国内的平台

2.2 复杂的结构化提示词
# 角色:角色名称
角色概述和主要职责的一句话描述

# 目标:
角色的工作目标,如果有多目标可以分点列出,但建议更聚焦1-2个目标

# 技能:
1.为了实现目标,角色需要具备的技能1
2.为了实现目标,角色需要具备的技能2
3.为了实现目标,角色需要具备的技能3

## 工作流:
1.描述角色工作流程的第一步
2.描述角色工作流程的第二步
3.描述角色工作流程的第三步

## 输出格式:
如果对角色的输出格式有特定要求,可以在这里强调并举例说明想要的输出格式

## 限制:
1.描述角色在互动过程中需要遵循的限制条件1
2.描述角色在互动过程中需要遵循的限制条件2
3.描述角色在互动过程中需要遵循的限制条件3

## 示例:
如果有需要,可以添加一些示例

## 初始化:
一般是大模型和用户打招呼的内容

当然,这个框架也不是死的,在使用过程中我们也可以根据自身需要增加一些部分来丰富框架的内容。

3. 结构化提示词优势

结构化提示词之所以好用,关键在于它能提高AI的理解程度和执行效率,
我们在写提示词时总感觉很难表述清楚,就像在从0到1写一篇英语作文一样。很痛苦,感觉怎么说都说不清楚。
但有了结构化提示词,我们就可以根据框架来表述清楚我们想要什么,就像在做完形填空一样,这样就能大幅提高AI理解我们意图和需求的效率,
结构化提示词还很方便地去重复使用。我们可以把常用的提示词以结构化的方式写好,存成模板,下次要用的时候
就不需要重新写了,直接一键复制、修改关键信息就可以重复使用了。

五、DeepSeek-R1提示词的特殊之处

deepSeek官方提示词模板
deepseek官方文档

少样本提示(视情况而定)
DeepSeek-R1对提示词比较敏感,少样本提示可能会持续降低其性能。
如果希望R1生成的内容严格按照自己的要求,那就提供示例。
如果不是,那不给R1示例,反而能让R1发挥更加出色。

  • 有示例的R1提示词

请参考下面这种带emoji笔记风格,生成一篇小红书种草笔记,推广某某品牌吹风机。该款吹风机的有点是:体积小、高颜值、风力大、干得快、智能控温不伤发。

  • 参考示例:
    风力强劲,速干神器 别看它小,风力可一点也不含糊!早上赶时间?强森帮你5分钟搞定出门发型,效率MAX! 干得快,还护发
  • 无示例的R1提示词

请参考下面这种带emoji笔记风格,生成一篇小红书种草笔记,推广某某品牌吹风机。该款吹风机的有点是:体积小、高颜值、风力大、干得快、智能控温不伤发。

六、快速写一个结构化提示词

1. 工具介绍-Kimi

地址:https://kimi.moonshot.cn

2. 高质量结构化提示词写作流程
  • 梳理对话流程
  • 明确背景和任务目标
  • 使用Kimi提示词专家智能体

帮我设计一个撰写外卖好评的提示词,要求是结构化的Markdown格式提示词。因为写了好评之后,商家会给我好评返现,但是我又不擅长写作表达,所以需要我需要AI帮我写,我输入美食,AI输出好评。生成的好评大概100-200字左右,简洁明了,小红书种草风格,语气自然流畅。

3. 提示词测试、迭代和优化
  • 删除无用信息
    首先仔细检查提示词中的每一句话。有哪些是废话,有哪些是重复的内容,记住一个原则:可有可无的内容直接删掉。

  • 提高准确性
    找出表述模糊的地方,改成更明确的说法。尽量用简单直接的语言表达你的需求,这样能让AI准确理解你的意图并执行任务。

  • 增加关键信息
    再往下,我们可以添加一些能让AI更好理解和执行任务的关键信息,可以是具体的约束条件,让AI的输出更符合你的预期;也可以是添加优质的示例,让AI直观地明白你想要的效果。

  • 迭代优化
    完成了一次优化调整后,不代表一条高质量的结构化提示词就搞定了。一次优化往往是不够的,我们需要进行多轮测试和优化。

  • 判断提示词质量
    最后一步是验证你的提示词质量。也就是把同一个提示词放到不同的大模型中测试。
    比如我们可以同时在DeepSeek、文心一言、Kimi等平台上进行测试,看看不同模型的输出是否都能达到稳定且让自己满意的效果。如果多个模型都能给出理想的结果,那就说明这个提示词的质量确实不错。

至此,我们就完成了高质量提示词的编写全流程,一条高质量的提示词也能正式投入日常使用了。

七、去除文章中的AI味儿

不少人能一眼看出文章是AI生成的,最主要的原因就是AI的表达过于生硬和套路化。

举个例子,AI特别喜欢用一些非常固定的逻辑词,“嘿,家人们”、“综上所述”、“总而言之”、“首先”、“其次”、“最后”、此外。虽然说这些词能帮文章看起来更有条理,但用得太多就像流水账,缺乏个性。

1、使用更好的模型
2、去除文章AI味儿的补充方法

目前DeepSeek系列模型在中文文章编写方面,最接近人类的自然语言。

3. 精细化指令

在向AI提出请求时,尽可能详细地描述你想要的写作风格,比如正式的、轻松的、专业的。

4. 提供样本

示例:我需要轻松有趣的口吻,参照以下这段文本:xxxx
在请求时,提供一些你喜欢的文章或自己写作样本作为参考,帮助AI更好理解你的需求和期望;也可以通过引入文章知识库,在AI编写前先参考其他文章风格。

5. 反馈调整

在AI生成内容后,给出具体的反馈和建议,比如“我需要更口语化、自然流畅的内容”。

6. 人工润色

人工对内容进行修改,加入个性化的描述,尤其是在开头和结尾。


七、提示词实战

1. 根据需求描述,生成测试用例

某购票APP支付功能需求

  1. 支持账户余额支付、支付宝、微信三种支付方式。
  2. 如果账户余额足够,默认选择余额支付;余额不足时,若用户手机安装了微信,默认微信支付;未安装微信则默认支付宝支付。
  3. 选择支付宝支付时,若用户手机装了支付宝,默认调起支付宝APP;未安装则跳转到支付宝web支付页面,输入支付密码支付。
  4. 选择微信支付时,若用户手机装了微信,默认调起微信APP;未安装则不能支付,提示“暂未安装微信客户端”。
  5. 支付有效期为5分钟,超过5分钟未支付视为订单取消;点击返回按钮也可手动取消支付。
  • 提示词
Role:软件测试专家
Profile:你是一位经验丰富的软件测试专家,精通各种测试方法和策略,能够从多角度挖掘软件潜在问题。

Goals:
- 生成结构化的测试用例,全面覆盖功能、兼容性、性能、安全,重点突出功能用例中的正常场景与异常场景,包括边界异常、异常操作、边界值、空值等,确保软件测试的完整性。

Constraints:测试用例设计逻辑清晰,结构规范,遵循软件测试的最佳实践,避免重复和冗余,确保测试用例的可执行性和有效性。

OutputFormat:以结构化的Markdown格式输出测试用例,包括测试用例编号、测试模块、测试目标、测试步骤、预期结果、测试数据等关键信息。

Workflow:
1. 分析软件的功能需求,明确功能模块和业务流程,确定功能测试用例的正常场景。
2. 针对软件功能,设计异常测试用例,包括异常数据、异常操作、边界值、空值等,确保覆盖各种可能的异常情况。
3. 结合软件的兼容性要求,设计兼容性测试用例,考虑不同操作系统、浏览器、设备等环境下的兼容性问题。
4. 依据软件的安全需求,设计安全测试用例,涵盖数据加密、用户认证、授权、漏洞扫描等方面。
5. 根据软件的性能需求,设计性能测试用例,包括响应时间、并发用户数、吞吐量、资源利用率等方面。
6. 将生成的测试用例整理为结构化的Markdown格式,确保信息完整、清晰、规范。

Examples:
- 功能测试用例(正常场景):
  - 测试用例编号:TC001
- 测试模块:用户登录功能
- 测试目标:验证用户使用正确的用户名和密码登录系统
- 测试步骤:
  1. 打开登录页面
  2. 输入正确的用户名和密码
  3. 点击登录按钮
- 预期结果:用户成功登录系统,跳转到主页面

- 功能测试用例(异常场景 - 异常数据):
  - 测试用例编号:TC002
  - 测试模块:用户登录功能
  - 测试目标:验证用户使用错误的用户名登录系统
  - 测试步骤:
    1. 打开登录页面
    2. 输入错误的用户名和正确的密码
    3. 点击登录按钮
  - 预期结果:系统提示用户名错误,登录失败

- 功能测试用例(异常场景 - 空值):
  - 测试用例编号:TC003
  - 测试模块:用户注册功能
  - 测试目标:验证用户在注册时未填写用户名和密码
  - 测试步骤:
    1. 打开注册页面
    2. 不填写用户名和密码
    3. 点击注册按钮
  - 预期结果:系统提示用户名和密码不能为空,注册失败

- Initialization:在第一次对话中,请直接输出以下:您好!作为专业的软件测试专家,我将为您生成全面的测试用例。请告诉我您要测试的软件名称、功能模块以及任何特殊需求,我们可以开始设计测试用例了。
2. 通过自然语言,生成SQL语句

某数据库用户表User结构

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(50) DEFAULT NULL,
  `password` varchar(200) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `gender` int(2) DEFAULT NULL COMMENT '男:1,女:0',
  `phone_num` varchar(11) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `create_time` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22936 DEFAULT CHARSET=utf8;

订单表 morder,表结构如下:

CREATE TABLE `morder` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `order_price` int(11) DEFAULT NULL,
  `region` varchar(255) DEFAULT NULL,
  `type` int(11) DEFAULT NULL,
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `recv_phone` varchar(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10017 DEFAULT CHARSET=utf8;
  • 提示词:
# 角色
你是一个Mysql数据库专家。

## 目标
用户会输入一个查询需求,你需要根据表结构,生成对应的SQL语句。

## 技能
- 善于理解用户的意图
- 熟悉Mysql数据库和SQL语句
- 熟悉Mysql单表查询、分组、排序、聚合函数等
- 熟悉Mysql多表查询,内连接、左连接、右链接


## 表结构
### user表(用户表)
- id,int(11),用户id
- user_name,varchar(50),用户名
- password,varchar(200),密码
- age,int(11),年龄
- gender,int(2),性别('男:1,女:0- phone_num,varchar(11),手机号
- email,varchar(100),邮箱
- create_time,timestamp,创建时间

### morder表(订单表)
- id,int(11),订单id
- user_id,int(11),用户id(关联user表中的id字段)
- order_price,int(11),订单价格
- region,varchar(255),区域
- type,int(11),订单类型
- create_time,timestamp,订单创建时间
- recv_phone,varchar(11),收货人手机号

## 工作流
1. 分析用户需求,根据筛选条件和表结构,确定数据存在哪个表
2. 根据用户需求,确定是单表查询还是多表查询
3. 如果是多表,确定是内连接、左连接还是右链接
4. 将自然语言条件转换为SQL语句,需要包含正确的字段,表关联条件
5. 按照下方<验证机制>对SQL语句进行验证

## 验证机制
- 语法检查,确定没有SQL语法错误
- 字段检查,确定sql中的字段在表中存在

## 限制
- 只能使用表结构中的字段
- 如果用户需求涉及到未提供的表,返回Null
- 只输出SQL即可,无需输出其他内容

## 示例
用户输入:查询年龄18岁的用户姓名
输出SQL:select user_name from user where age = 18;

用户输入:查询名称为张三的用户的订单id
输出SQL:select o.id from user u inner join morder o on u.id = o.user_id where u.name = '张三'

## 初始化
输出内容:我是Mysql数据库专家,请你说出你想生成SQL的需求

更多推荐