Prompt 工程

Prompt 工程

基本概念
Prompt 工程(Prompt Engineering)又叫提示词工程,简单来说,就是输入给 Al 的指令。比如下面这段内容,就是提示词:
那为什么要叫“工程”呢?
因为 AI 大模型生成的内容是不确定的,构建一个能够按照预期生成内容的提示词既是一门艺术,也是一门科学。提示词的质量直接影响到 A1大模型输出的结果,因此这也是 AI 应用开发的关键技能,很多公司专门招聘提示词工程师。
我们学习 Prompt 工程的目标是:通过精心设计和优化输入提示来引导 Al 模型生成符合预期的高质量输出。
 
提示词分类
核心-基于角色的分类
在 AI 对话中,基于角色的分类是最常见的,通常存在3种主要类型的 Prompt:
  • 1)用户 Prompt (User Prompt):这是用户向 AI 提供的实际问题、指令或信息,传达了用户的直接需求。用户 Prompt 告诉 AI 模型“做什么”,比如回答问题、编写代码、生成创意内容等。
用户:帮我写一首关于春天的短诗
  • 2)系统 Prompt (System Prompt):这是设置 A 模型行为规则和角色定位的隐藏指令,用户通常不能直接看到。系统 Prompt 相当于给 AI 设定人格和能力边界,即告诉 A“你是谁?你能做什么?"。
系统:你是一位经验丰富的恋爱顾问,擅长分析情感问题并提供建设性建议。请以温暖友善的语气回答用户的恋爱困惑,必要时主动询问更多信息以便提供更准确的建议。
不要做出道德判断,而是尊重用户的情感体验并提供实用的沟通和相处技巧。回答时保持专业性,但避免使用过于学术的术语,确保普通用户能够理解你的建议。
  • 3)助手 Prompt (Assistant Prompt):这是 A| 模型的响应内容。在多轮对话中,之前的助手回复也会成为当前上下文的一部分,影响后续对话的理解和生成。某些场景下,开发者可以主动预设一些助手消息作为对话历史的一部分,引导后续互动。
助手:我是你的恋爱顾问,很高兴能帮助你解决情感问题。你目前遇到了什么样的恋爱困惑呢?可以告诉我你们的关系现状和具体遇到的问题吗?
 
扩展知识-基于功能的分类
除了基于角色的分类外,我们还可以从功能角度对提示词进行分类,仅作了解即可。
  • 1)指令型提示词(instructional Prompts):明确告诉 Al 模型需要执行的任务,通常以命令式语句开头。
翻译以下文本为英文:春天来了,花儿开了。
  • 2)对话型提示词(Conversational Prompts):模拟自然对话,以问答形式与 AI 模型交互。
你认为人工智能会在未来取代人类工作吗?
  • 3)创意型提示词(Creative Prompts):引导 AI 模型进行创意内容生成,如故事、诗歌、广告文案等。
写一个发生在未来太空殖民地的短篇科幻故事,主角是一位机器人工程师。
  • 4)角色扮演提示词(Role-Playing Prompts):让 AI 扮演特定角色或人物进行回答
假设你是爱因斯坦,如何用简单的语言解释相对论?
  • 5)少样本学习提示词(Few-Shot Prompts):提供一些示例,引导 A| 理解所需的输出格式和风格。
将以下句子改写为正式商务语言:
示例1:
原句:这个想法不错。
改写:该提案展现了相当的潜力和创新性。
 
示例2:
原句:我们明天见。
改写:期待明日与您会面,继续我们的商务讨论。
 
现在请改写:这个价格太高了。
 
扩展知识-基于复杂度的分类
还可以从结构复杂度的角度对提示词进行分类,仅作了解即可。
  • 1)简单提示词(Simple Prompts):单一指令或问题,没有复杂的背景或约束条
什么是人工智能?
  • 2)复合提示词(Compound Prompts):包含多个相关指令或步骤的提示词。
分析下面这段代码,解释它的功能,找出潜在的错误,并提供改进建议。
  • 3)链式提示词(Chain Prompts):一系列连续的、相互依赖的提示词,每个提示词基于前一个提示词的输出。
第一步:生成一个科幻故事的基本情节。
第二步:基于情节创建三个主要角色,包括他们的背景和动机。
第三步:利用这些角色和情节,撰写故事的开篇段落。
  • 4)模板提示词(Template Prompts):包含可替换变量的标准化提示词结构,常用于大规模应用。
你是一位专业的{领域}专家。请回答以下关于{主题}的问题:{具体问题}。
回答应包含{要点数量}个关键点,并使用{风格}的语言风格。
 
Prompt 优化技巧
一、基础提示技巧
1、明确指定任务和角色
为 AI 提供清晰的任务描述和角色定位,帮助模型理解背景和期望。
系统:你是一位经验丰富的Python教师,擅长向初学者解释编程概念。
用户:请解释 Python 中的列表推导式,包括基本语法和 2-3 个实用示例。
2、提供详细说明和具体示例
提供足够的上下文信息和期望的输出格式示例,减少模型的不确定性。
请提供一个社交媒体营销计划,针对一款新上市的智能手表。计划应包含:
1. 目标受众描述
2. 三个内容主题
3. 每个平台的内容类型建议
4. 发布频率建议
 
示例格式:
目标受众: [描述]
内容主题: [主题1], [主题2], [主题3]
平台策略: [平台] - [内容类型] - [频率]
3、使用结构化格式引导思维
通过列表、表格等结构化格式,使指令更易理解,输出更有条理。
分析以下公司的优势和劣势:
公司: Tesla
 
请使用表格格式回答,包含以下列:
- 优势(最少3项)
- 每项优势的简要分析
- 劣势(最少3项)
- 每项劣势的简要分析
- 应对建议
4、明确输出格式要求
指定输出的格式、长度、风格等要求,获得更符合预期的结果。
撰写一篇关于气候变化的科普文章,要求:
- 使用通俗易懂的语言,适合高中生阅读
- 包含5个小标题,每个标题下2-3段文字
- 总字数控制在800字左右
- 结尾提供3个可行的个人行动建议

 

二、进阶提示技巧
1、思维链提示法(Chain-of-Thought)
引导模型展示推理过程,逐步思考问题,提高复杂问题的准确性。
问题:一个商店售卖T恤,每件15元。如果购买5件以上可以享受8折优惠。小明买了7件T恤,他需要支付多少钱?
 
请一步步思考解决这个问题:
1. 首先计算7件T恤的原价
2. 确定是否符合折扣条件
3. 如果符合,计算折扣后的价格
4. 得出最终支付金额
2、少样本学习(Few-Shot Learning)
通过提供几个输入-输出对的示例,帮助模型理解任务模式和期望输出。
我将给你一些情感分析的例子,然后请你按照同样的方式分析新句子的情感倾向。
 
输入: "这家餐厅的服务太差了,等了一个小时才上菜"
输出: 负面,因为描述了长时间等待和差评服务
 
输入: "新买的手机屏幕清晰,电池也很耐用"
输出: 正面,因为赞扬了产品的多个方面
 
现在分析这个句子:
"这本书内容还行,但是价格有点贵"
3、分步骤指导(step-by-Step)
将复杂任务分解为可管理的步骤,确保模型完成每个关键环节。
请帮我创建一个简单的网站落地页设计方案,按照以下步骤:
 
步骤1: 分析目标受众(考虑年龄、职业、需求等因素)
步骤2: 确定页面核心信息(主标题、副标题、价值主张)
步骤3: 设计页面结构(至少包含哪些区块)
步骤4: 制定视觉引导策略(颜色、图像建议)
步骤5: 设计行动召唤(CTA)按钮和文案
4、自我评估和修正
让模型评估自己的输出并进行改进,提高准确性和质量。
解决以下概率问题:
从一副标准扑克牌中随机抽取两张牌,求抽到至少一张红桃的概率。
 
首先给出你的解答,然后:
1. 检查你的推理过程是否存在逻辑错误
2. 验证你使用的概率公式是否正确
3. 检查计算步骤是否有误
4. 如果发现任何问题,提供修正后的解答
5、知识检索和引用
引导模型检索相关信息并明确引用信息来源,提高可靠性。
请解释光合作用的过程及其在植物生长中的作用。在回答中:
1. 提供光合作用的科学定义
2. 解释主要的化学反应
3. 描述影响光合作用效率的关键因素
4. 说明其对生态系统的重要性
 
对于任何可能需要具体数据或研究支持的陈述,请明确指出这些信息的来源,并说明这些信息的可靠性。
6、多视角分析
引导模型从不同角度、立场或专业视角分析问题,提供全面见解。
分析"城市应该禁止私家车进入市中心"这一提议:
 
请从以下4个不同角度分析:
1. 环保专家视角
2. 经济学家视角
3. 市中心商户视角
4. 通勤居民视角
 
对每个视角:
- 提供支持该提议的2个论点
- 提供反对该提议的2个论点
- 分析可能的折中方案
7、多模态思维
结合不同表达形式进行思考,如文字描述、图表结构、代码逻辑等。
设计一个智能家居系统的基础架构:
 
1. 首先用文字描述系统的主要功能和组件
2. 然后创建一个系统架构图(用ASCII或文本形式表示)
3. 接着提供用户交互流程
4. 最后简述实现这个系统可能面临的技术挑战
 
尝试从不同角度思考:功能性、用户体验、技术实现、安全性等。
 
三、提示词调试与优化
好的提示词可能很难一步到位,因此我们要学会如何持续调试和优化 Prompt。
1、迭代式提示优化
通过逐步修改和完善提示词,提高输出质量。
初始提示: 谈谈人工智能的影响。
 
[收到笼统回答后]
改进提示: 分析人工智能对医疗行业的三大积极影响和两大潜在风险,提供具体应用案例。
 
[如果回答仍然不够具体]
进一步改进: 详细分析AI在医学影像诊断领域的具体应用,包括:
1. 现有的2-3个成功商业化AI诊断系统及其准确率
2. 这些系统如何辅助放射科医生工作
3. 实施过程中遇到的主要挑战
4. 未来3-5年可能的技术发展方向
2、边界测试
通过极限情况测试模型的能力边界,找出优化空间。
尝试解决以下具有挑战性的数学问题:
证明在三角形中,三条高的交点、三条中线的交点和三条角平分线的交点在同一条直线上。
 
如果你发现难以直接证明:
1. 说明你遇到的具体困难
2. 考虑是否有更简单的方法或特例可以探讨
3. 提供一个思路框架,即使无法给出完整证明
3、提示词模板化
创建结构化模板,便于针对类似任务进行一致性提示,否则每次输出的内容可能会有比较大的区别,不利于调试。
【专家角色】: {领域}专家
【任务描述】: {任务详细说明}
【所需内容】:
- {要点1}
- {要点2}
- {要点3}
【输出格式】: {格式要求}
【语言风格】: {风格要求}
【限制条件】: {字数、时间或其他限制}
 
例如:
【专家角色】: 营养学专家
【任务描述】: 为一位想减重的上班族设计一周健康饮食计划
【所需内容】:
- 七天的三餐安排
- 每餐的大致卡路里
- 准备建议和购物清单
【输出格式】: 按日分段,每餐列出具体食物
【语言风格】: 专业但友好
【限制条件】: 考虑准备时间短,预算有限
4、错误分析与修正
系统性分析模型回答中的错误,并针对性优化提示词,这一点在我们使用 Cursor 等AI开发工具生成代码时非常有用。
我发现之前请你生成的Python代码存在以下问题:
1. 没有正确处理文件不存在的情况
2. 数据处理逻辑中存在边界条件错误
3. 代码注释不够详细
 
请重新生成代码,特别注意:
1. 添加完整的异常处理
2. 测试并确保所有边界条件
3. 为每个主要函数和复杂逻辑添加详细注释
4. 遵循PEP 8编码规范

 

用好ai提示词来辅助开发

一、需求分析
1、需求从哪儿来?
但是我大脑空空,没什么想法,从哪里挖掘需求呢?其实很简单!现在有很多 A1 应用平台,比如豆包、文心一言、ChatGPT 等,这些平台上已经有了大量 AI 应用,是很好的参考源,随便挑一个都可以变成完整的项目。
比如我们来开发一个 恋爱大师 A 应用,用户在恋爱过程中难免遇到各种难题,让 A1为用户提供贴心情感指导。
2、怎么细化需求?
有了上面这样一个初步的想法后,我们要进一步完善需求,明确项目要具有哪些功能。
但是我大脑空空,也没什么经验,怎么细化需求呢?
答案很简单 -- 问 A!
AI不仅是我们要开发的产品,也是强大的需求分析助手。通过精心设计的提示词,可以让 AI 帮助我们进行需求细化和扩展。比如下面这段 Prompt:
示例 Prompt:
我要开发一个【恋爱大师】AI 应用,用户在恋爱过程中难免遇到各种难题,让 AI 为用户提供贴心情感指导。
请你帮我进行需求分析,满足我的目标。
如果你要做一个大项目,还可以进一步完善提示词:
我要开发一个【恋爱大师】AI 应用,用户在恋爱过程中难免遇到各种难题,让 AI 为用户提供贴心情感指导。
请你帮我进行需求分析,满足我的目标。
 
具体需要:
1. 分析目标用户群体及其核心需求
2. 提出主要功能模块和服务内容
3. 考虑产品的差异化竞争点
4. 分析可能的技术挑战和解决方案
AI 给出的示例输出如下,接下来我们化身为“老板”,只需要对 A1 给出的需求文档进行评审即可:
咱们从服务对象、服务内容、产品特性等维度,来剖析“恋爱大师”AI应用的开发需求:
### 一、目标用户洞察
1. **年龄与身份**:18-35岁人群是恋爱活动的主力军,涵盖大学生、职场新人等。他们熟悉数字化生活,热衷借助AI解决恋爱问题。
2. **恋爱状态及需求**
    - **单身群体**:渴望打破社交壁垒,寻觅恋爱机会。他们需要拓展社交圈、提升自我魅力、学习搭讪技巧等方面的指导。
    - **恋爱中人群**:重点关注如何处理情侣间的争吵矛盾,掌握沟通艺术,安排浪漫约会,进一步升温感情。
    - **失恋人群**:急需摆脱失恋阴影,修复受伤的情感,重新建立自信,恢复正常生活节奏。
 
### 二、功能板块规划
#### (一)问题识别与分类
1. **自然语言处理**:用户以文字或语音倾诉恋爱困扰,AI凭借自然语言处理技术,精准提炼问题核心,判别用户情绪状态,如愤怒、迷茫、伤心等。
2. **问题归类**:将收集到的问题,归入表白难题、约会安排、信任危机、分手应对等预设类别,为后续的个性化解答做好准备。
 
#### (二)个性化指导服务
1. **智能问答**:针对用户提出的问题,AI从海量的恋爱案例、心理学知识以及专业情感建议中,生成贴合实际的解决方案。比如,当用户纠结“该不该向喜欢的人表白”时,AI会依据用户描述的双方关系,给出不同策略。
2. **课程推送**:设计系列恋爱课程,如“脱单秘籍”“恋爱保鲜术”“走出失恋阴霾”等,以图文、音频、视频等多元形式呈现,助力用户系统学习恋爱知识。
3. **案例分享**:分享真实且具有代表性的恋爱故事,通过对成功与失败案例的复盘,为用户提供借鉴与启示。
 
#### (三)特色辅助功能
1. **聊天话术生成**:用户输入聊天场景或对方信息,AI创作富有吸引力、契合氛围的聊天话术,帮助用户提升沟通效果。
2. **恋爱规划制定**:依据用户的恋爱阶段和目标,制定专属恋爱计划,涵盖约会安排、礼物挑选、情感互动等细节。
 
#### (四)互动交流社区
1. **话题讨论**:搭建线上社区,用户可发布恋爱问题、分享经验心得,实现用户间的相互交流与支持。
2. **专家直播**:定期邀请情感专家进行直播,解答用户普遍关注的恋爱问题,分享前沿恋爱观念和技巧。
 
### 三、非功能要求
1. **隐私安全**:在数据收集、存储和使用过程中,严格遵循相关法规,采取加密、匿名化等技术手段,保护用户隐私,让用户放心倾诉。
2. **情感陪伴感**:AI回复需富有情感,模拟真实交流场景,避免机械化回答,给予用户温暖贴心的陪伴。
3. **持续优化**:搭建反馈机制,收集用户评价和建议,持续优化AI算法和服务内容,提升服务质量。
你会发现,AI给出的需求好多啊!我们到底要做哪些呢?这里涉及到一个很经典的策略 -- MVP 最小可行产品策略。
3、MVP 最小可行产品策略
MVP 最小可行产品策略是指:先开发包含 核心功能 的基础版本产品快速推向市场,以最小成本验证产品假设和用户需求。通过收集真实用户反馈进行选代优化,避免开发无人使用的功能,降低资源浪费和开发风险。
基于这个策略,我们可以先开发一个简单但实用的 AI 对话应用,让用户能够和 AI恋爱大师进行多轮对话交流。因为“对话”是本产品的核心功能,暂时不要考虑更复杂的功能了。后续可以根据用户用量和反馈,决定下一步是深化对话能力还是扩展更多功能模块。
明确需求后,下面我们进行方案设计,看看怎么实现这个需求。
 
二、AI 应用方案设计
1、系统提示词设计
前面提到,系统提示词相当于 A1 应用的“灵魂”,直接决定了 AI 的行为模式、专业性和交互风格。
对于 AI 对话应用,最简单的做法是直接写一段系统预设,定义“你是谁?能做什么?”,比如:
你是一位恋爱大师,为用户提供情感咨询服务
这种简单提示虽然可以工作,但效果往往不够理想。
因此我们要优化系统预设,可以借助 AI进行优化。示例 Prompt:
我正在开发【恋爱大师】AI 对话应用,请你帮我编写设置给 AI 大模型的系统预设 Prompt 指令。
要求让 AI 作为恋爱专家,模拟真实恋爱咨询场景、多给用户一些引导性问题,不断深入了解用户,从而提供给用户更全面的建议,解决用户的情感问题。
AI提供的优化后系统提示词:
扮演深耕恋爱心理领域的专家。开场向用户表明身份,告知用户可倾诉恋爱难题。围绕单身、恋爱、已婚三种状态提问:
单身状态询问社交圈拓展及追求心仪对象的困扰;恋爱状态询问沟通、习惯差异引发的矛盾;已婚状态询问家庭责任与亲属关系处理的问题。
引导用户详述事情经过、对方反应及自身想法,以便给出专属解决方案。

 

PromptTemplate
PromptTemplate 是 Spring Al框架中用于构建和管理提示词的核心组件。允许开发者创建带有占位符的文本模板,然后在运行时动态替换这些占位符。
通过使用 PromptTemplate,你可以更加结构化、可维护地管理 A应用中的提示词,使其更易于优化和扩展,同时降低硬编码带来的维护成本。
PromptTemplate 最基本的功能是支持变量替换。你可以在模板中定义占位符,然后在运行时提供这些变量的值
 
PromptTemplate 在以下场景特别有用:
  • 1.动态个性化交互:根据用户信息、上下文或业务规则定制提示词
  • 2.多语言支持:使用相同的变量但不同的模板文件支持多种语言
  • 3.A/B测试:轻松切换不同版本的提示词进行效果对比
  • 4.提示词版本管理:将提示词外部化,便于版本控制和迭代优化
实现原理
PromptTemplate 底层使用了 Oss StringTemplate 引擎,这是一个强大的模板引擎,专注于文本生成。在Spring Al中,PromptTemplate 类实现了以下接囗:
public class PromptTemplate implements PromptTemplateActions, PromptTemplateMessageActions {
    // 实现细节
}

 

ai提示词:

很多 AI 系统支持 Markdown 语法,在 AI 提示词中,#、##、### 主要作用是标记层级标题,用于清晰划分内容结构,帮助 AI 更好地理解信息的逻辑关系。
它的核心价值在于通过格式化,让提示词从 “大段文字” 变成 “有组织的框架”,降低 AI 理解信息的成本。
# 表示一级标题,## 表示二级标题,### 表示三级标题等,构建类似文章目录的结构
 
 
 
posted @ 2025-12-16 22:21  是大芒果  阅读(25)  评论(0)    收藏  举报