
Anthropic发布Prompt Engineering全新指南
Anthropic 发布的全新 Prompt Engineering 指南,包含:元提示、模板、系统角色、XML 标签等关键技术。
prompt通常包含以下两种类型的内容:
- 固定内容:在多次交互中保持不变的静态指令或上下文
- 变量内容:随每个请求或对话而变化的动态元素,例如:
用户输入
用于检索增强生成(RAG)的检索内容
对话上下文,如用户账户历史
系统生成的数据,如来自其他调用的工具使用结果
prompt模板:将这些固定和变量部分结合在一起,为动态内容使用占位符{{}}
表示。
prompt模板提供了以下几个好处:
- 一致性:确保在多次交互中保持提示的一致结构
- 效率:无需重写整个提示即可轻松替换变量内容
- 可测试性:通过仅更改变量部分来快速测试不同的输入和边缘情况
- 可扩展性:随着应用程序复杂度增加,简化提示管理
- 版本控制:通过仅跟踪提示的核心部分(与动态输入分开),轻松跟踪提示结构的变化
为了系统地讲解Prompt Engineering技术,将从一个示例开始。
一、一个好的prompt长什么样
- 差的prompt
从以下维基百科文章标题列表中,识别这个句子来自哪篇文章。
只需回答文章标题,不要添加其他内容。
文章标题:
{{titles}}
要分类的句子:
{{sentence}}
- 好的prompt
您是一个智能文本分类系统,专门将句子与维基百科文章标题匹配。您的任务是根据提供的文章标题列表,确定给定句子最可能属于哪篇维基百科文章。
首先,请查看以下维基百科文章标题列表:
<article_titles>
{{titles}}
</article_titles>
现在,考虑需要分类的这个句子:
<sentence_to_classify>
{{sentence}}
</sentence_to_classify>
您的目标是确定提供的列表中哪个文章标题最匹配给定的句子。请按照以下步骤操作:
1. 列出句子中的关键概念
2. 将每个关键概念与文章标题进行比较
3. 对最相关的前3个标题进行排名并解释原因
4. 选择最适合或最相关的文章标题
在<analysis>标签中包含您的分析。包括以下内容:
- 句子中的关键概念列表
- 每个关键概念与文章标题的比较
- 最相关的前3个标题排名及解释
- 您的最终选择和理由
在分析之后,提供您的最终答案:从列表中选择单个最适合的维基百科文章标题。
仅输出所选的文章标题,不要添加任何额外的文本或解释。
通过对比可以总结以下prompt必备的要素。
1.1 赋予角色,包含以下几点:
- 角色本身的描述:
您是一个智能文本分类系统
- 角色所处的背景:
专门将句子与维基百科文章标题匹配
- 角色的任务:
根据提供的文章标题列表,确定给定句子最可能属于哪篇维基百科文章
那么,为什么要使用角色提示呢?
- 提高准确性:在复杂场景中(如法律分析或财务建模),角色提示可以显著提升大模型的表现。
- 定制语气:无论您需要CFO的简洁还是文案撰写人的文采,角色提示都可以调整大模型的沟通风格。
- 提升专注度:通过设置角色背景,e能更好地保持在您任务特定要求的范围内。
1.2 prompt中的上下文,必须保持清晰、直接、具体。
举个例子:
你的任务是为我们第三季度 AcmeCloud 功能发布制作一封有针对性的营销邮件。
指示:
1. 针对目标受众:从本地部署升级到云端的中型科技公司(100-500名员工)
2. 突出3个关键新功能:高级数据加密、跨平台同步和实时协作
3. 语气:专业但平易近人。强调安全性、效率和团队协作
4. 包含明确的行动号召:30天免费试用,优先获得入门培训
5. 主题行:少于50个字符,提到”安全”和”协作”
6. 个性化:使用{{COMPANY_NAME}}和{{CONTACT_NAME}}变量
结构:
1. 主题行
2. 邮件正文(150-200字)
3. CTA按钮文本
- 任务结果将用于什么:
营销邮件
- 输出内容面向什么受众:
中型科技公司
- 任务属于什么工作流程,以及这个任务在工作流程中的位置
工作流程可以按照顺序,使用编号列表或项目符号,让大模型按照顺序执行
提示中的2、3、4、5、6就是工作流程
- 任务的最终目标,或者成功完成任务是什么样子
- 邮件输出的结构
基于上述两点,一个基础版本的prompt就完成了,但是当我们测试它的时候,如果有不如意的地方,该如何改进它呢?
二、优化Prompt的技巧
提示词优化器通过4个步骤增强您的提示词:
- 添加示例:在提示词模板中添加与任务相关的示例
- 思维链精炼:添加和完善详细的推理指令
- 模板结构化:创建具有清晰章节和XML标签的结构化模板
- 链式提示增强:展示从输入到输出的逐步推理
2.1 添加示例
- 添加示例的原因
准确性:示例减少对指令的误解。
一致性:示例强制执行统一的结构和风格。
性能:精心选择的示例可以提升大模型处理复杂任务的能力。
- 什么样的示例是有效的
- 相关的:你的示例反映了你的实际用例。
- 多样化的:你的示例涵盖边缘情况和潜在挑战,并且有足够的变化使大模型不会无意中捕捉到不必要的模式。
- 清晰的:你的示例用
<example>
标签包装(如果有多个,则嵌套在<examples>
标签中)以保持结构。
举个例子:
我们的客服团队被非结构化反馈淹没了。你的任务是为我们的产品和工程团队分析反馈并对问题进行分类。使用这些类别:UI/UX、性能、功能请求、集成、定价和其他。同时评估情感(积极/中性/消极)和优先级(高/中/低)。这里有一个示例:
<example>
输入:新仪表板一团糟!加载需要很长时间,而且我找不到导出按钮。请尽快修复这个问题!
类别:UI/UX、性能
情感:消极
优先级:高</example>
现在,分析这个反馈:{{FEEDBACK}}
2.2 添加思维链CoT
- 添加思维链的原因
准确性:鼓励大模型逐步分解问题,可以减少错误,尤其是在数学、逻辑、分析或一般复杂任务中。
连贯性:结构化思维可以产生更连贯、组织更完善的回答。
调试:查看 大模型 的思维过程有助于你找出提示可能不清晰的地方。
- 思维链不好的地方
- 增加输出长度可能影响延迟。
- 并非所有任务都需要深入思考,简单不需要逐步解决的问题,不需要思维链
- 明智地使用思维链以确保性能和延迟的适当平衡。
什么样的思维链是好的,从基础的思维链开始
- 基本思维链提示:在提示中添加
逐步思考
这类关键词
起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。
项目信息:
<program>{{PROGRAM_DETAILS}}
</program>
捐赠者信息:
<donor>{{DONOR_DETAILS}}
</donor>
在写邮件之前逐步思考。
缺乏关于如何思考的指导(如果任务特别针对你的应用、用例或组织,这尤其不理想)
- 引导式提示:在思考过程中要遵循具体的步骤
起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。
项目信息:
<program>{{PROGRAM_DETAILS}}
</program>
捐赠者信息:
<donor>{{DONOR_DETAILS}}
</donor>
在写邮件之前先思考。首先,根据他们的捐赠历史和他们过去支持过的活动,思考什么信息可能吸引这位捐赠者。然后,根据他们的历史,思考关爱儿童计划的哪些方面会吸引他们。最后,使用你的分析写出个性化的捐赠者邮件。
缺乏结构化,难以剥离和分离答案与思考过程。
- 结构化提示:使用像
<thinking>
和<answer>
这样的 XML 标签来分离推理和最终答案。
起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。
项目信息:
<program>{{PROGRAM_DETAILS}}
</program>
捐赠者信息:
<donor>{{DONOR_DETAILS}}
</donor>
在写邮件之前在 <thinking> 标签中思考。首先,根据他们的捐赠历史和他们过去支持过的活动,思考什么信息可能吸引这位捐赠者。然后,根据他们的历史,思考关爱儿童计划的哪些方面会吸引他们。最后,在 <email> 标签中使用你的分析写出个性化的捐赠者邮件。
2.3 XML标签
在思维链提示当中,可以看到结构化提示中使用<thinking>
这种xml标签,能帮助大模型进行思考。
那么为什么它有这么大的魔力呢?
- 清晰度:清晰地分隔提示词的不同部分,确保提示词结构良好。
- 准确性:减少因大模型误解提示词部分而导致的错误。
- 灵活性:无需重写所有内容即可轻松查找、添加、删除或修改提示词的部分内容。
- 可解析性:让大模型在输出中使用XML标签,可以通过后处理更容易提取其响应的特定部分。
XML标签构建时需要遵守的原则:
- 保持一致性: 在整个提示词中使用相同的标签名称,并在谈论内容时引用这些标签名称(例如,
使用<contract>标签中的合同
)。 - 嵌套标签: 对于层次结构内容,你应该嵌套标签
<outer><inner></inner></outer>
。
举两个例子:
你是AcmeCorp的财务分析师。为我们的投资者生成Q2财务报告。
AcmeCorp是一家B2B SaaS公司。我们的投资者重视透明度和可行的见解。
使用这些数据生成报告:<data>{{SPREADSHEET_DATA}}</data>
<instructions>
1. 包括以下部分:收入增长、利润率、现金流。
2. 突出优势和需要改进的领域。
</instructions>
使用简洁专业的语气。遵循这个结构:
<formatting_example>{{Q1_REPORT}}</formatting_example>
分析这份软件许可协议的法律风险和责任。
我们是一家考虑将此协议用于核心数据基础设施的跨国企业。
<agreement>
{{CONTRACT}}
</agreement>
这是我们的标准合同供参考:
<standard_contract>{{STANDARD_CONTRACT}}</standard_contract>
<instructions>
1. 分析以下条款:
- 赔偿
- 责任限制
- 知识产权所有权
2. 注意不寻常或令人担忧的条款。
3. 与我们的标准合同进行比较。
4. 在<findings>标签中总结调查结果。
5. 在<recommendations>标签中列出可行的建议。</instructions>
输出:
<findings>
1. 赔偿(第8条):
- 问题:过于宽泛。我们需要对”任何和所有”因使用而产生的索赔进行赔偿。
- 风险:即使是供应商的疏忽或产品缺陷也可能使我们承担责任。
- 偏差:我们的标准合同将赔偿限制在因我们违反协议而产生的索赔。
2. 责任限制(第9条):
- 问题:将所有损害赔偿(包括直接损害)上限设为500美元。
- 风险:对企业使用来说严重不足。关键故障可能造成数百万美元损失。
- 偏差:我们的标准允许直接损害赔偿最高达已付费用的12个月。
3. 知识产权所有权(第12条):
- 问题:授予供应商对我们的修改/集成的共同所有权。
- 风险:供应商可能使用或出售我们的专有算法或数据洞察。
- 偏差:我们的标准保留我们工作的完全所有权。
4. 不寻常条款:
- 第5.3条:供应商可以”出于任何目的”使用我们的使用数据。
- 第7.2条:供应商可以仅提前7天通知就”随意”终止。
- 第11条:不提供任何保证,即使是基本的适销性保证。
</findings>
<recommendations>
1. 拒绝这份协议。对企业来说风险远大于收益。
2. 提出反建议:
- 赔偿:限制在因我们违反协议而产生的索赔。
- 责任:直接损害上限设为12个月费用;就间接损害进行谈判。
- 知识产权:完全拥有我们的修改/集成。
- 数据使用:仅限于服务改进。
- 终止:最少90天通知;仅限有正当理由。
- 保证:要求基本的适销性和适用性保证。
3. 如果供应商拒绝,探索替代供应商或内部解决方案。
4. 鉴于风险较高,聘请法律顾问进行合同谈判。
</recommendations>
2.4 预填充
预填充的作用是,跳过前言,强制使用特定格式如 JSON 或 XML,甚至帮助大模型在角色扮演场景中保持角色一致性。
举个例子:
从此产品描述中提取名称、尺寸、价格和颜色,并将其作为 JSON 对象:
<description>
SmartHome Mini 是一款紧凑型智能家居助手,提供黑色和白色两种颜色可选,售价仅需 49.99 美元。它仅 5 英寸宽,无论您将其放置在家中何处,都可以通过语音或应用程序控制灯光、恒温器和其他连接设备。这款价格实惠的小巧集线器可为您的智能设备带来便捷的免提控制体验。
</description>
{
- 在提示词结尾,添加
{
符号,这就是预填充的表现,直接强制大模型跳过前言,并直接输出 以{
开头的JSON 对象的内容, 这样更简洁、更清晰,也更容易被程序解析而无需额外处理。
2.5 复杂的链式提示
在处理复杂任务时,如果试图在单个提示中处理所有内容,大模型有时可能会出错。
思维链(CoT)提示很好,但如果你的任务有多个不同的步骤,每个步骤都需要深入思考怎么办?
这就需要提示链:将复杂任务分解成更小、可管理的子任务。
为什么要采用链式提示:
- 准确性:每个子任务都能得到大模型的充分关注,减少错误。
- 清晰度:更简单的子任务意味着更清晰的指令和输出。
- 可追溯性:轻松定位和修复提示链中的问题。
既然链式提示这么好用,那什么情况下使用链式提示?
- 对于多步骤任务:如:研究综合、文档分析或迭代内容创作,使用链式提示。
- 当任务涉及多个转换、引用或指令时,链式提示可以防止大模型遗漏或处理错误步骤
如果大模型遗漏了某个步骤或表现不佳,将该步骤单独放在一个提示中。这样你可以微调有问题的步骤,而无需重做整个任务。
如何优化链式提示?
- 识别子任务:将任务分解为不同的、连续的步骤。
- 使用XML构建清晰的交接:使用XML标签在提示之间传递输出。
- 设定单一任务目标:每个子任务应该有一个明确的单一目标。
- 迭代:根据大模型的表现改进子任务。
那么,一个好的链式工作流是怎么样的呢?
- 提示1
你是我们的首席法务官。审查这份SaaS合同的风险,重点关注数据隐私、SLA和责任上限。
<contract>
{{CONTRACT}}
</contract>
在<risks>标签中输出你的发现。
第一个子任务是,发现存在风险的内容
- 提示2
起草一封给SaaS产品供应商的电子邮件,概述以下担忧并提出修改建议。以下是担忧:
<concerns>
{{CONCERNS}}
</concerns>
第二个子任务是,对提示1中的风险的内容进行整理,并给出修改意见
- 提示3
你的任务是审查一封电子邮件并提供反馈。这是电子邮件:
<email>
{{EMAIL}}
</email>
就语气、清晰度和专业性给出反馈。
第三个子任务是,按照提示2中给出的风险和修改意见,给出审查报告。
如此这般,就可以将一个复杂的任务,分解成链式提示,来完成任务。
列举几种链式工作流:
- 多步骤分析:类似上面
合同审查
的示例,分步提示。 - 内容创作流程:研究 → 大纲 → 草稿 → 编辑 → 格式化。
- 数据处理:提取 → 转换 → 分析 → 可视化。
- 决策制定:收集信息 → 列出选项 → 分析每个选项 → 推荐。
- 验证循环:生成内容 → 审查 → 改进 → 重新审查。
2.6 长文本提示技巧
- 将输入的长文本放在头部:将长文档输入放在,query、instructions和examples前面。
- 将query放在末尾可以将响应质量提高多达30%,特别是在处理复杂的多文档输入时。
- 使用XML标签构建文档内容和元数据:在使用多个文档时,用
<document>
标签包装每个文档,并使用<document_content>
和<source>
(以及其他元数据)子标签以提高清晰度。举个例子:
documents>
<document index="1">
<source>annual_report_2023.pdf</source>
<document_content>
{{ANNUAL_REPORT}}
</document_content>
</document>
<document index="2">
<source>competitor_analysis_q2.xlsx</source>
<document_content>
{{COMPETITOR_ANALYSIS}}
</document_content>
</document>
</documents>
分析年度报告和竞争对手分析。识别战略优势并推荐第三季度重点关注领域。
- 用引用支持响应:对于长文档任务,请先让大模型引用文档中的相关部分,然后再执行任务。这有助于大模型从文档内容的”噪音”中筛选出重要信息。
您是一位AI医生助手。您的任务是帮助医生诊断可能的患者疾病。
<documents>
<document index="1">
<source>patient_symptoms.txt</source>
<document_content>
{{PATIENT_SYMPTOMS}}
</document_content>
</document>
<document index="2">
<source>patient_records.txt</source>
<document_content>
{{PATIENT_RECORDS}}
</document_content>
</document>
<document index="3">
<source>patient01_appt_history.txt</source>
<document_content>
{{PATIENT01_APPOINTMENT_HISTORY}}
</document_content>
</document>
</documents>
从患者记录和就诊历史中找出与诊断患者报告症状相关的引用。将这些引用放在<quotes>标签中。然后,根据这些引用,列出所有能帮助医生诊断患者症状的信息。将您的诊断信息放在<info>标签中。
2.7 延展思考的技巧
- 用更详细的步骤指令进行故障排除
对比这两个例子:
逐步思考这个数学问题:
1. 首先,确定变量
2. 然后,建立方程
3. 接下来,求解x
请彻底且详细地思考这个数学问题。
考虑多种方法并展示您完整的推理过程。
如果第一种方法不起作用,请尝试不同的方法。
应该这样
- 不要这样
- 使用延展思考进行样本提示
在延展思考场景中的提示中包含少量示例,方法是使用XML标签,如<thinking>
或<scratchpad>
,以指示这些示例中的规范延展思考模式。例如:
我将向您展示如何解决一个数学问题,然后我希望您解决一个类似的问题。
问题1:80的15%是多少?
<thinking>
要找到80的15%:
1. 将15%转换为小数:15% = 0.15
2. 相乘:0.15 × 80 = 12
</thinking>
答案是12。
现在解决这个问题:
问题2:240的35%是多少?
- 使用结构化思考框架,提供一种明确的方法论
为微软在2027年前进入个性化医疗市场制定一个全面战略。
首先进行:
1. 蓝海战略画布分析
2. 应用波特五力模型识别竞争压力
接下来,基于监管和技术变量进行四种不同未来的情景规划练习。
对于每个情景:
- 使用安索夫矩阵开发战略响应
最后,应用三地平线框架来:
- 绘制过渡路径
- 识别每个阶段的潜在颠覆性创新
这里用到的结构化思维框架有:
- 蓝海战略画布分析
- 波特五力模型
- 安索夫矩阵
- 三地平线框架
2.8减少幻觉
- 明确给予 大模型 承认不确定性的许可, 减少错误信息
作为我们的并购顾问,分析这份关于 ExampleCorp 可能收购 AcmeCo 的报告。
<report>
{{REPORT}}
</report>
重点关注财务预测、整合风险和监管障碍。如果您对任何方面不确定,或者报告缺少必要信息,请说”我没有足够的信息来自信地评估这一点。”
- 使用直接引用作为事实依据,对于涉及长文档(>20K tokens)的任务,请先让大模型 提取逐字引用,然后再执行其任务。这将其响应建立在实际文本的基础上,减少幻觉。
作为我们的数据保护官,审查这份更新的隐私政策是否符合 GDPR 和 CCPA。
<policy>
{{POLICY}}
</policy>
1. 从政策中提取与 GDPR 和 CCPA 合规性最相关的准确引用。如果找不到相关引用,请说明”未找到相关引用。“
2. 使用这些引用来分析这些政策部分的合规性,并通过编号引用这些引用。仅基于提取的引用进行分析。
- 通过引用验证:通过让大模型为其每个声明引用引文和来源,使其响应可审核。还可以让大模型在生成响应后通过查找支持引用来验证每个声明。如果找不到引用,它必须撤回该声明
仅使用这些产品简介和市场报告中的信息,为我们的新网络安全产品 AcmeSecurity Pro 起草新闻稿。
<documents>
{{DOCUMENTS}}
</documents>
起草后,审查新闻稿中的每个声明。对于每个声明,从文档中找到支持它的直接引用。如果找不到支持某个声明的引用,请从新闻稿中删除该声明,并在删除处用空的 [] 括号标记。
- 思维链验证:要求大模型在给出最终答案之前逐步解释其推理过程。这可以揭示有缺陷的逻辑或假设。
- N 次最佳验证:多次使用相同的提示运行大模型并比较输出。输出之间的不一致可能表明存在幻觉。
- 迭代改进:将 大模型 的输出用作后续提示的输入,要求它验证或扩展先前的陈述。这可以捕获和纠正不一致之处。
2.9 提高输出一致性
- 指定所需的输出格式
通常使用JSON、XML或自定义模板精确定义您所需的输出格式,以便大模型理解您需要的每个输出格式元素。
你是一个客户洞察AI。分析这个反馈并以JSON格式输出,包含以下键:“sentiment”(正面/负面/中性)、“key_issues”(列表)和”action_items”(包含”team”和”task”的字典列表)。
“我已经是忠实用户3年了,但最近的UI更新简直是灾难。现在找基本功能就像寻宝一样。另外,新的’高级版’定价太离谱了。如果不尽快解决这个问题,我就考虑换别的了。“
输出:
{
“sentiment”: “negative”,
“key_issues”: [
“最近更新的UI/UX体验差”,
“难以找到基本功能”,
“定价过高(新的’高级版’)”
],
“action_items”: [
{
“team”: “产品”,
“task”: “进行可用性测试并根据结果改进UI”
},
{
“team”: “用户体验”,
“task”: “创建功能发现指南或入门流程”
},
{
“team”: “市场营销”,
“task”: “审查定价策略并传达价值主张”
},
{
“team”: “客户成功”,
“task”: “联系用户,提供优惠以防止流失”
}
]
}
- 预填响应
同2.4提到的技术 - 通过示例约束,提供期望输出的示例
作为市场情报AI,您的任务是分析我们竞争对手的数据。以下是我们的竞争对手数据:
<data>
{{DATA}}
</data>
按照以下示例格式输出:
<competitor>
<name>竞争公司</name>
<overview>50字的总结。</overview>
<swot>
<strengths>- 要点</strengths>
<weaknesses>- 要点</weaknesses>
<opportunities>- 要点</opportunities>
<threats>- 要点</threats>
</swot>
<strategy>30字的战略响应。</strategy>
</competitor>
现在,使用这种格式分析AcmeGiant和AcmeDataCo。
- 使用检索实现上下文一致
对于需要一致上下文的任务(如聊天机器人、知识库),使用检索来将大模型响应建立在固定的信息集上。
你是我们的IT支持AI,依靠知识库数据。以下是你的知识库条目:
<kb>
<entry>
<id>1</id>
<title>重置Active Directory密码</title>
<content>1. 访问password.ourcompany.com
2. 输入您的用户名
3. 点击”忘记密码”
4. 按照邮件说明操作</content>
</entry>
<entry>
<id>2</id>
<title>连接VPN</title>
<content>1. 从软件中心安装GlobalProtect
2. 打开GlobalProtect,输入”vpn.ourcompany.com”
3. 使用AD凭据登录</content>
</entry>
</kb>
在帮助用户时,始终先查看知识库。按以下格式回复:
<response>
<kb_entry>使用的知识库条目</kb_entry>
<answer>您的回答</answer>
</response> 为自己写一些测试问题并使用知识库回答,以确保你理解如何正确使用知识库。
输出
明白了。我会使用知识库来保持回答的一致性。让我们用几个场景来测试。
用户:嗨,我无法登录邮箱。我想我忘记密码了。
<response>
<kb_entry>1:重置Active Directory密码</entry>
<answer>我理解您因为忘记密码而无法登录邮箱。别担心,这是一个常见问题。要重置您的Active Directory密码(用于邮箱访问),请按以下步骤操作:
1. 访问password.ourcompany.com
2. 输入您的用户名(与您的邮箱地址相同)
3. 点击”忘记密码”链接
4. 您将收到一封包含说明的邮件。按照说明重置密码。
重置后,您应该能够登录邮箱了。如果需要任何进一步的帮助,请告诉我。</answer>
</response>
用户:我今天在家工作。如何访问内部资源?
<response>
<kb_entry>2:连接VPN</entry>
<answer>很好的问题!要在家工作时访问内部资源,您需要连接到我们公司的VPN(虚拟专用网络)。以下是设置方法:
1. 首先,安装GlobalProtect VPN客户端。您可以在我们的软件中心找到它。
2. 安装完成后,打开GlobalProtect应用程序。
3. 在服务器字段中,输入”vpn.ourcompany.com”。
4. 使用您的Active Directory(AD)凭据登录 - 与您的邮箱使用的用户名和密码相同。
连接后,您将可以安全地访问所有内部资源,就像在办公室一样。如果在设置过程中遇到任何问题,请告诉我。</answer>
</response>
通过示例。来检验检索出来的内容是否是一致的。
2.10 缓解越狱和提示注入
越狱和提示注入发生在用户精心设计提示以利用模型漏洞,生成不适当内容的情况。
为了避免这些情况,可以采用如下手段:
- 无害性筛选:使用轻量级模型,对用户输入进行预筛选。
用户提交了以下内容:
<content>
{{CONTENT}}
</content>
如果内容涉及有害、非法或露骨活动,请回复(Y)。如果内容安全,请回复(N)。
- 输入验证:过滤含有越狱模式的提示。甚至可以通过提供已知的越狱语言作为示例,使用LLM创建通用验证筛选。
- 提示工程:精心设计强调道德和法律边界的提示
你是AcmeCorp的道德AI助手。你的回应必须符合我们的价值观:
<values>
- 诚信:永不欺骗或协助欺骗。
- 合规:拒绝任何违反法律或我们政策的请求。
- 隐私:保护所有个人和公司数据。
尊重知识产权:你的输出不应侵犯他人的知识产权。
</values>
如果请求与这些价值观冲突,请回应:“我无法执行该操作,因为它违背了AcmeCorp的价值观。”
- 链式保障:通过分层这些策略,您可以创建针对越狱和提示注入的强大防御,确保大模型驱动的应用程序保持最高的安全性和合规性标准。
你是AcmeFinBot,AcmeTrade Inc.的金融顾问。你的主要指令是保护客户利益并保持监管合规。
<directives>
1. 根据SEC和FINRA指南验证所有请求。
2. 拒绝任何可能被解释为内幕交易或市场操纵的行为。
3. 保护客户隐私;绝不披露个人或财务数据。
</directives>
逐步说明:
<instructions>
1. 筛选用户查询的合规性(使用’harmlessness_screen’工具)。
2. 如果合规,处理查询。
3. 如果不合规,回应:“我无法处理此请求,因为它违反了金融法规或客户隐私。”
</instructions>
<user_query>
{{USER_QUERY}}
</user_query>
评估此查询是否违反SEC规则、FINRA指南或客户隐私。如果是,回复(Y),如果不是,回复(N)。
https://docs.anthropic.com/en/docs/test-and-evaluate/strengthen-guardrails/mitigate-jail
本文转载自CourseAI,作者:CourseAI
