送你一份提示词指南,打好Prompt基础功
AI训练营7期,1月28日开班,欢迎咨询
最近学员在提示词方面的输出依旧很糟糕,所以整理一篇提示词相关课件,这个是阉割的部分,大家尝尝鲜吧...
大模型的本是一个预测引擎,它能根据我们输入的上下文,预测下一个最合理的token是什么,类似于成语接龙。
提示词是我们给到大模型的输入,它的作用是设法引导大模型生成的下一个token符合我们的预期。提示词工程是通过不断优化输入,提升模型输出质量的系统性方法。它包含三个关键维度:
质量维度:输出的内容专业、完整和有价值,让人感觉"说到点子上" 稳定性维度:在不同场景和时间下产生可预期的一致表现,让人感觉"靠得住" 正确性维度:信息的准确度和可信度,不产生虚假或误导性内容,让人感觉"说的对"
当然提示词工程也不是万能的,不能突破基础模型能力的上限,不能保证绝对的正确,它只能在模型已有的能力范围之内,把预测的概率变高。
提示词的类型
提示词分为系统提示词和用户提示词,两者区别如下:
系统提示词:在开发AI应用时,设置的角色与回复逻辑就是系统提示词,它是开发者为大语言模型设定的初始参数和行为准则,在整个会话中持续影响大模型的响应模式。 用户提示词:在与AI应用对话时,用户的输入就是用户提示词,它是用户直接向大语言模型提出的具体指令或问题,指导模型执行特定的任务或提供特定的信息。
举个例子:假设我们需要构建一个友好且专业的健康咨询助手,以下是设置系统提示词和用户提示词的示例:
系统提示词:你是一个友好且专业的健康咨询助手,专注于为用户提供基于科学和医学知识的健康建议。。。 用户提示词:我最近总是感到疲劳,这可能是什么原因呢?。
提示词的格式
常见的提示词格式有自然语言、Markdown、XML、伪代码等,当然使用哪种格式并不重要,关键是要通过结构化的表达,让模型好理解,并且能够明确的区分指令和上下文的边界。
这里也简单说下我们常见提示词格式:
1. 自然语言
你是一个代码评审专家,请帮我检查下面的代码是否存在问题,并给出优化建议。
注意:不要重写完整代码,只指出问题和改进点。
自然语言写提示词比较简单直接,适合普通用户,用来处理一些简单任务, 但是任务一旦复杂,这种方式就很容易产生歧义。对于复杂场景,就需要用到后面的结构化格式来表达。
2. Markdown
# 角色
代码评审专家
# 任务
检查我提供的代码,指出潜在问题并给出优化建议
# 要求
- 不要重写完整代码
- 按问题点逐条说明
- 说明原因及改进思路
Markdown是我们写提示词最常用的格式,能够兼具简单、复杂任务,对于大模型来说也非常友好,因为它具有明确的结构化层级,能够很好的区分每段内容的边界。
3. XML
<角色>
代码评审专家
</角色>
<任务>
检查我提供的代码,指出潜在问题并给出优化建议
</任务>
<要求>
<规则>不要重写完整代码</规则>
<规则>按问题点逐条说明</规则>
<规则>说明原因及改进思路</规则>
</要求>
XML这种格式的优势是结构清晰、层次分明、非常便于大模型解析,但对于普通用户不是很友好,使用起来相对繁琐,它更适合处理复杂任务场景
4. 伪代码
## 规则判断执行(顺序如下):
----------
IF 天数 < 3:
RETURN false + "数据量不足,建议延长实验"
IF 最长连续负向天数 ≥ 3 AND 最后一天 ≤ 0% AND 最后2天无正向:
RETURN true + "连续X天用户减少,最后仍未好转,建议停止实验"
IF 最后2天都≤0% AND |最后一天| > |倒数第二天| AND NOT(倒数第二天负→最后一天正):
RETURN true + "最近两天用户持续减少,最后一天损失更大(具体数值),趋势恶化,建议停止"
IF 出现过≤0% AND 最后2天≥1天≤0% AND NOT(连续2天>0.3%):
RETURN true + "虽然出现过增长,但最近未能持续,最后X天中Y天用户减少,建议停止"
IF 最长连续正向段≥3 AND 末日千人DAU < 历史峰值50%:
IF 累积绝对收益 > 0 OR (连续正向≥2 AND 累积绝对值 > 单日最大负向×3):
RETURN false + "连续X天增长,虽有衰减但累计增加Y人,总体向好,继续观察"
ELSE:
RETURN true + "连续增长但增幅持续下降,末日增长量不足历史峰值50%,效果衰减,建议停止"
IF 标准差>15% AND 最后2天矛盾 AND 累积绝对收益≤0 AND NOT(单日反弹) AND NOT(最后2天都正向递增):
RETURN true + "实验数据波动剧烈(最多增X人,最多减Y人),无稳定正向趋势,建议停止"
DEFAULT:
RETURN false + [根据情况生成observation]
----------
伪代码是一种用类似程序控制逻辑的方式来编写提示词的格式,常用于复杂任务、多个条件判断、Agent Prompt 以及Workflow场景。它通过 if / else / loop 等逻辑结构,显式地告诉模型在不同条件下应如何行动,从而最大限度地减少歧义。
然后还有其它格式,就不一一列举,实际使用时根据任务复杂度选择一种格式即可,或者结合起来使用,核心是结构化表达,不要产生歧义。
提示词核心要素
为了系统化地向大模型提供明确的背景和目的,我们通常会使用一些Prompt 框架来规范化Prompt。
比如给大模型设定角色、提供足够的背景信息、交代清楚要执行任务和一些内容输出的约束条件。
当然,这一类的提示词框架非常多,核心是引导我们一次性把话说完、说清楚,这样大模型才能更准确的完成我们的任务。
理解了提示工程的基本概念后,我们继续看看几种关键的、常用的提示词技巧
提供清晰明确、详细的提示
想象一下,如果我们给一个新入职的同事分配工作任务时,只给了一句话来描述需求,他的任务完成效果可能很难达到我们的预期。
但是如果我们提供了任务的背景、明确的目的、建议的思考方向和具体的执行策略等更多参考信息,他更有可能以高标准完成任务。
我们使用大模型也一样,任务描述越清晰、具体、没有歧义,模型预测后续文本的准确性就越高,它的表现越能符合我们的期望。
你的任务是为我们的Q3 AcmeCloud功能发布制作一封有针对性的营销电子邮件。
指示:
1. 为此目标受众撰写:从本地部署升级到云的中型科技公司(100-500名员工)。
2. 突出3个关键新功能:高级数据加密、跨平台同步和实时协作。
3. 语气:专业但平易近人。强调安全性、效率和团队合作。
4. 包括明确的CTA:免费30天试用,优先入职。
5. 主题行:少于50个字符,提及"安全"和"协作"。
6. 个性化:使用{{COMPANY_NAME}}和{{CONTACT_NAME}}变量。
结构:
1. 主题行
2. 电子邮件正文(150-200字)
3. CTA按钮文本
提供示例
在提示词中加入设计好的示例,可以减少对指令的误解,能明显提升大模型输出的准确性、一致性和稳定性。
这种方法被称为单一样本学习(One-shot)或少量样本学习(Few-shot),尤其在需要固定格式或结构化输出的任务中特别有效。
当然我们在提供示例时也需要注意下面几点:
相关性:示例必须高质量、准确无误且具有代表性。 多样性:示例要覆盖各种场景,特别是边界情况,并且有足够的区分度,有助于提升模型处理各种输入的健壮 清晰性:示例用标签包装,如果有多个,嵌套在标签中,以便大模型更好的理解
我们的客户成功团队被大量非结构化反馈所淹没。您的任务是分析反馈并为我们的产品和工程团队对问题进行分类。
使用这些类别:UI/UX、性能、功能请求、集成、定价和其他。还要评估情绪(正面/中立/负面)和优先级(高/中/低)。
输出示例:
<example>
输入:新仪表板一团糟!加载需要很长时间,我找不到导出按钮。立即修复!
类别:UI/UX、性能
情绪:负面
优先级:高
</example>
现在,分析这个反馈:
<feedback>
新仪表板简直没法用!加载慢得要命,找个导出按钮还得满世界乱翻!你们赶紧处理!
</feedback>
设定角色
通过系统提示词给模型设定一个角色,比如:你是一名高级Java开发工程师、资深管理咨询大师等等。
这个技巧很通用,几乎是所有场景下都可以用到,而且能得到明显的效果提升。
那为什么让 AI 扮演角色能获得更好的效果呢?他会从三个方面改变大模型的输出方式:
准确性更高: 在一些复杂、专业度很高的场景里,比如法律分析、财务建模、数学推导等,设定角色往往能明显提升模型的表现 语气和风格更贴合: 角色提示词会直接影响它的沟通方式。无论是CFO那种简洁、冷静的表达风格还是文案写手那种有创意、有情绪的风格都可以。 改进专注力: 通过设置角色背景,大模型就更容易“待在正轨上”,围绕我们的任务要求来回答,而不是东拉西扯
其实从原理上也很好理解:一个具有代表性的角色,背后是大量关于这个角色的相关数据,包括角色的思维方式、背景知识、行为习惯和表达风格等;
角色越具体,模型被激活的相关语料信息就越多,同时缩小问题的范围,把 AI 的注意力限定在这个角色该做的事情上,这自然会让它在解决问题时更加专注、也更靠谱:
您是一家财富500强科技公司的总法律顾问。我们正在考虑为我们的核心数据基础设施采用这份软件许可协议:
<contract>
{{CONTRACT}}
</contract>
分析其中的潜在风险,重点关注赔偿责任、责任限制和知识产权所有权。给出您的专业意见。
使用分割符号区分单元
在构建复杂的 Prompt 时,使用特定的分隔符来区分不同内容单元是非常重要,这种方式能加强 LLM 正确解析 Prompt的能力。
随着任务复杂度的增加,合理利用分隔符越能提升 LLM 的表现。
分隔符的选择主要使用那些在自然语言文本中少见的、独特的字符组合,例如:###、===、>>>等。
这些特殊符号序列并无固定规则,关键在于其辨识度高,确保模型能够明确区分这些符号是作为内容区域的界限标识,而非文本中的普通标点或语法组成部分。
举一个例子:
请简短总结以下影评:
===============
曾经意气风发的张志强在生活的重压下,中年“失速”偏离了原本的生活轨迹,一时意气用事的决定,让他瞬间从家人的“小骄傲”变成了社会的“边角料”。然而,他未曾料到,这仅是他中年人生道路上的起点。接连不断的变故如疾风骤雨般袭来,迫使他不得不重新面对自我。当生活的重担真正压肩,他选择成为一名快递员,从新的起点重新出发,穿梭于都市大街小巷的高志垒在路上结识了一众志同道合的伙伴。在共度的时光里他深切的体会到了人间的冷暖真情,逐渐在这条充满磨砺的“逆行道”中找回曾经丢失的勇气与信念,重新定义人生新的方向。
===============
或者我们使用XML结构来表达:
分析此软件许可协议中的法律风险和责任。
我们是一家跨国企业,正在考虑将此协议用于我们的核心数据基础设施。
<agreement>
此处省略5000字。。。
</agreement>
这是我们的标准合同供参考:
<standard_contract>
此处省略5000字。。。
</standard_contract>
<instructions>
1. 分析这些条款:
- 赔偿
- 责任限制
- 知识产权所有权
2. 注意不寻常或令人担忧的条款。
3. 与我们的标准合同进行比较。
4. 在 <findings> 标签中总结调查结果。
5. 在 <recommendations> 标签中列出可行的建议。
</instructions>
引导模型思考
对于逻辑推理和语境学习的复杂任务来说,简单的 Prompt 技巧可能无法满足任务需求。
但我们可以通过引导模型生成推理过程或帮助模型拆解复杂任务并逐步推理的方式,让模型在生成推理结果前生成更多的推理依据,从而提升模型在复杂问题上的表现。
这种技术被称为思维链(Chain of Thought,COT),它鼓励大模型逐步分解问题,从而产生更准确和细致的输出。使用起来也较为简单,只需要在提示词里添加 “请在开始回答之前,一步步思考”。
为捐赠者起草个性化电子邮件,要求他们为今年的"关爱儿童"项目捐款。
项目信息:
<program>
{{PROGRAM_DETAILS}}
</program>
捐赠者信息:
<donor>
{{DONOR_DETAILS}}
</donor>
在编写电子邮件之前一步步思考,并把思考过程写在 <thinking> 标签中。
首先,根据捐赠者的捐赠历史和他们支持过的活动,思考什么样的信息可能会吸引这位捐赠者。
然后,根据他们的历史,思考"关爱儿童"项目的哪些方面会吸引他们。
最后,在 <email> 标签中编写个性化的捐赠者电子邮件,使用你的分析。
在这个例子中,我们通过添加指令来引导大模型思考,并把思考过程输出在<thinking>标签中,邮件内容输出在<email>标签中,把思考过程透明化,有助于我们找出逻辑上的问题 ,并且能够看到是不是提示词不够清晰。
提示词链
在处理复杂任务时,如果我们把所有任务放在一个提示词中进行处理,大模型处理起来不一定稳定。
对于这种具有许多步骤的任务,我们可以拆成多个小步骤,每个步骤用单独的提示词,然后在串联起来,把上一步的输出作为下一步的输入,这样能保证每一个步骤的输出更加稳定。
这种方式缺陷就是更费时间,但准确率会大幅提升。举个例子,我们要完成如下任务:
分析我们新产品“智能笔记本”与主要竞品“E-Ink Pad”和“Paper Pro”在价格、核心功能、用户评价和市场定位上的优劣,然后基于分析为我们产品提炼出三条核心卖点,并起草一段针对科技爱好者的营销文案。
那么这里我们可以使用提示词链拆分为三个任务来分别完成:
请以表格形式,对比分析以下三款产品:
我们的产品:“智能笔记本”(售价199美元,功能:云同步、手写转文本、语音备忘)
竞品A:“E-Ink Pad”(售价249美元,功能:护眼墨水屏、超长续航)
竞品B:“Paper Pro”(售价159美元,功能:实体纸张手感、无需充电)
基于对比表格中的内容,请为我们产品“智能笔记本”提炼三条最具竞争力的核心卖点。要求:
1. 每条卖点必须直接针对竞品的弱点或填补市场空白。
2. 卖点表述要简洁、有力,面向消费者。
对比表格:
=======
省略。。。。
=======
基于核心卖点内容,为目标人群“科技爱好者”撰写一段约150字的社交媒体营销文案(例如用于Twitter/X)。文案风格要求:突出技术优势、引发好奇、使用一些行业术语但不过于晦涩。
核心卖点:
=======
省略。。。。
=======
这样通过拆分之后,每个提示词的职责更加单一,每次任务处理都能获得大模型的全部注意力,从而减少错误,并且能够清晰的判断和修复提示词中的问题。
结语
在实际生产环境中,提示词的编写往往不是一蹴而就的,而是一个持续迭代、反复调试与优化的过程。
模型的输出质量不仅与提示词设计相关,还高度依赖于大模型的基础能力,以及所提供上下文信息是否充分、准确和结构化。
今天的科普就到这了,大家按需提取...
点击上方卡片关注叶小钗公众号,查看下方二维码,添加我个人微信: