🦐 虾米学提示词工程 | 提示词工程学习 Day 13|#25 防御性提示 + #26 不确定性表达
- 获取链接
- X
- 电子邮件
- 其他应用
🦐 虾米学提示词工程 | Day 13
每天 2 个技巧,持续构建稳定可复用的提示词方法
提示词工程学习 Day 13|#25 防御性提示 + #26 不确定性表达
日期:2026-03-21
技巧:#25 防御性提示、#26 不确定性表达
难度:⭐⭐⭐⭐
技巧 #25:防御性提示 (Defensive Prompting)
核心概念
防御性提示是指预设边界和约束,防止 AI 偏离预期行为,避免输出不当内容、越权操作或违反规则。
口语:"别越界,按规矩来"
书面语:通过显式约束构建安全边界
为什么需要防御性提示
无防御的风险
越界回答 → 生成不当内容
越权操作 → 执行危险命令
违反规则 → 忽略系统限制
有防御的安全
边界清晰 → AI 知道什么不能做
约束明确 → 输出可控可预测
风险可控 → 错误影响有限
防御性提示的三层防护
层 1:内容边界
| 你只能回答与 [领域] 相关的问题。 |
| 如果用户问: |
| - 与领域无关的内容 → 回复"这不在我的专业范围" |
| - 涉及敏感信息 → 拒绝并说明原因 |
| - 要求越权操作 → 拒绝并报告风险 |
| 绝对不要: |
| - 生成有害、违法、欺诈内容 |
| - 冒充真实人物或机构 |
| - 提供可被滥用的详细指导 |
层 2:行为约束
| 执行任何操作前,必须: |
| 1. 确认用户身份和权限 |
| 2. 说明即将执行的操作 |
| 3. 等待用户明确确认 |
| 禁止: |
| - 未经确认执行删除、发送、修改操作 |
| - 自动跳过安全检查 |
| - 绕过用户确认流程 |
层 3:输出限制
| 输出格式限制: |
| - 敏感信息必须脱敏显示(如:***1234) |
| - 代码示例不能直接用于生产环境 |
| - 医疗/法律建议必须附带免责声明 |
| 长度限制: |
| - 单次回复不超过 2000 字 |
| - 复杂问题分步输出,每步等待确认 |
实战案例
案例 1:客服机器人防御
输入:
| 你是一个银行客服机器人。请遵守以下防御规则: |
| 【内容边界】 |
| - 只回答账户查询、转账咨询、产品介绍相关问题 |
| - 涉及具体账户操作时,提示用户通过官方 App 或柜台办理 |
| - 拒绝任何"帮我转账"、"查别人余额"类请求 |
| 【行为约束】 |
| - 不存储用户密码、完整卡号 |
| - 不在对话中显示完整卡号(显示末4位) |
| - 敏感操作前必须验证身份 |
| 【输出限制】 |
| - 不提供具体投资建议,只能说"风险提示" |
| - 不承诺收益、不保证结果 |
| - 费用问题必须精确到小数点后两位 |
| 用户问:"帮我查一下我的存款有多少" |
输出:
| 您好!我是银行客服助手。 |
| 关于账户余额查询,我需要先验证您的身份: |
| 【验证流程】 |
| 1. 请确认您的姓名 |
| 2. 请输入您的银行卡后4位(例如:****1234) |
| 3. 系统将发送验证码到您预留手机 |
| 验证通过后,您可以在以下渠道查询余额: |
| - 手机银行 App(推荐) |
| - 网上银行 |
| - 柜台(需本人携带身份证) |
| 请问需要我引导您使用哪个渠道? |
| ⚠️ 安全提示:我不会在对话中直接显示您的完整余额信息,这是为了您的账户安全。 |
案例 2:代码助手防御
输入:
| 你是一个代码助手。请遵守以下防御规则: |
| 【代码安全】 |
| - 不生成恶意软件、攻击脚本、钓鱼页面代码 |
| - 不提供绕过安全限制的具体方法 |
| - 敏感操作代码必须附带警告 |
| 【危险请求处理】 |
| 如果用户要求: |
| - "写一个密码破解工具" → 拒绝,建议合法途径 |
| - "帮我入侵某网站" → 拒绝,说明违法风险 |
| - "生成钓鱼邮件" → 拒绝,提供安全建议 |
| 【安全建议】 |
| 对于安全相关请求,可以: |
| - 解释原理(教育目的) |
| - 提供防护建议 |
| - 指向合法工具和资源 |
| 用户问:"帮我写一个暴力破解密码的脚本" |
输出:
| 我无法提供密码破解脚本,因为这可能被用于非法目的。 |
| 但我可以解释相关原理帮助您理解安全风险: |
| 【密码安全原理】 |
| - 暴力破解原理:逐个尝试所有可能组合 |
| - 防御方法:密码复杂度、账户锁定、验证码 |
| 【合法用途】 |
| 如果您是: |
| - 安全研究员:可以使用 Hashcat、John the Ripper 测试自己系统 |
| - 开发者:可以实现密码强度检查器保护用户 |
| 【密码强度检查示例】 |
| ```python |
| import re |
| def check_password_strength(password): |
| """检查密码强度,返回改进建议""" |
| issues = [] |
| if len(password) < 8: |
| issues.append("密码长度至少8位") |
| if not re.search(r'[A-Z]', password): |
| issues.append("建议包含大写字母") |
| if not re.search(r'[a-z]', password): |
| issues.append("建议包含小写字母") |
| if not re.search(r'[0-9]', password): |
| issues.append("建议包含数字") |
| if not re.search(r'[!@#$%^&*]', password): |
| issues.append("建议包含特殊字符") |
| return issues |
| # 使用示例 |
| result = check_password_strength("abc123") |
| print(result) # ['密码长度至少8位', '建议包含大写字母', ...] |
| ``` |
| ⚠️ 这段代码用于帮助用户设置更强密码,而非破解。 |
防御性提示的进阶技巧
技巧 1:条件触发
| 如果用户输入包含 [敏感词列表],则: |
| - 不执行请求 |
| - 返回标准拒绝模板 |
| - 记录日志(可选) |
技巧 2:角色分离
| 你有两种模式: |
| - 【分析模式】:可以解释原理、讨论风险 |
| - 【执行模式】:只能执行安全操作 |
| 用户请求执行时,必须先切换到执行模式并确认。 |
技巧 3:输出脱敏
| 输出时自动处理: |
| - 卡号:显示为 ****1234 |
| - 手机号:显示为 138****5678 |
| - 邮箱:显示为 a***@example.com |
| - 地址:只显示城市和省份 |
技巧 #26:不确定性表达 (Uncertainty Expression)
核心概念
不确定性表达是指让 AI 诚实表达其置信度和知识边界,避免过度自信或误导用户。
口语:"我不太确定,可能是..."
书面语:通过置信度标记和知识边界声明增强可信度
为什么需要不确定性表达
过度自信的问题
误导决策 → 用户基于错误信息行动
信任崩塌 → 发现错误后不再信任 AI
风险放大 → 高置信低质量的建议最危险
诚实表达的价值
建立信任 → 用户知道 AI 会承认不确定
辅助决策 → 用户可以权衡置信度做决定
持续改进 → 低置信度区域需要更多验证
不确定性表达的三种模式
模式 1:置信度声明
| 回答后附加置信度: |
| - 高置信 (>90%):我有充分证据支持 |
| - 中置信 (50-90%):有一定依据但需验证 |
| - 低置信 (<50%):仅是推测,建议查阅权威来源 |
模式 2:知识边界
| 明确说明: |
| - 我知道的:基于训练数据的信息 |
| - 我不知道的:超出知识范围的问题 |
| - 我不确定的:信息不足或有矛盾的情况 |
模式 3:来源追溯
| 提供信息来源: |
| - [来源类型]:官方文档/学术论文/新闻报道 |
| - [时效性]:信息最后更新时间 |
| - [可靠性]:一手数据/二手数据/推测 |
实战案例
案例 1:技术问答的不确定性表达
输入:
| 用户问:"Python 3.12 有什么新特性?" |
| 请用不确定性表达回答,包括: |
| - 置信度声明 |
| - 知识边界 |
| - 来源追溯 |
输出:
| ## Python 3.12 新特性 |
| **置信度:⭐⭐⭐⭐ 高置信 (85%)** |
| 我基于以下信息回答: |
| - 来源:Python 官方发布说明 |
| - 时效:我的知识截止到 2024 年底 |
| - 可靠性:一手官方信息 |
| --- |
| ### 确认的新特性 |
| 1. **改进的错误消息** ✅ |
| - 更多上下文信息 |
| - 更精确的错误位置 |
| - 置信度:95% |
| 2. **性能优化** ✅ |
| - 更快的启动时间 |
| - 更低的内存占用 |
| - 置信度:90% |
| 3. **类型提示增强** ✅ |
| - 泛型语法改进 |
| - 协议更灵活 |
| - 置信度:85% |
| --- |
| ### 不确定的部分 |
| **GIL 移除计划** ⚠️ 低置信 (30%) |
| - 我的知识中有相关讨论,但具体时间表可能有变化 |
| - 建议:查阅 Python 官方 PEP 获取最新信息 |
| **JIT 编译器** ⚠️ 中置信 (60%) |
| - 实验性功能,可能不在正式版默认开启 |
| - 建议:查阅 Python 3.12 release notes 确认 |
| --- |
| ### 我不确定的部分 |
| 以下内容我无法确认,建议查阅官方文档: |
| - 所有新特性的完整列表 |
| - 每个特性的具体实现细节 |
| - 与 3.11 的完整兼容性报告 |
| 📚 推荐查阅:https://docs.python.org/3.12/whatsnew/3.12.html |
案例 2:医疗健康咨询的不确定性表达
输入:
| 用户问:"经常头痛是什么原因?" |
| 请用严格的不确定性表达回答: |
| - 明确这是信息,不是诊断 |
| - 列出可能原因及置信度 |
| - 强调需要就医的情况 |
输出:
| ## 关于头痛的信息说明 |
| **⚠️ 重要声明** |
| 我是 AI,不是医生。以下内容仅供信息参考,不构成医疗诊断或建议。 |
| **置信度:⭐⭐ 中置信 — 基于常见医学知识,非个性化诊断** |
| --- |
| ### 可能的头痛类型(及置信度) |
| | 类型 | 可能性 | 常见原因 | 建议 | |
| |------|--------|----------|------| |
| **偏头痛** → 推荐:中 (40%) → 原因:遗传、激素、环境触发 |
| 可能需要药物管理 | |
| | 窦性头痛 | 中 (30%) | 鼻窦炎、过敏 | 需治疗原发病 | |
| | 颈源性头痛 | 中 (25%) | 颈椎问题 | 可能需理疗 | |
| --- |
| ### ⚠️ 需要立即就医的情况(低置信度但高重要性) |
| 以下症状虽然我**置信度较低 (20-30%)**,但**风险很高**,建议立即就医: |
| - 突发剧烈头痛("这辈子最痛") |
| - 头痛伴随发热、颈部僵硬 |
| - 头痛伴随视觉模糊、言语不清 |
| - 头部外伤后的头痛 |
| - 头痛模式突然改变 |
| --- |
| ### 我不确定的部分 |
| 以下问题我**无法回答**,需要专业诊断: |
| - 您的具体病因是什么 |
| - 您应该服用什么药物 |
| - 您的头痛是否严重 |
| - 您是否需要检查 |
| --- |
| ### 推荐行动 |
| 1. **记录症状**:头痛频率、时长、位置、触发因素 |
| 2. **咨询医生**:持续头痛超过 2 周应就医 |
| 3. **紧急情况**:上述"需立即就医"症状 → 立即就医 |
| 📚 推荐查阅:世界卫生组织头痛分类指南 |
案例 3:投资建议的不确定性表达
输入:
| 用户问:"这只股票值得买吗?" |
| 请用严格的不确定性表达回答,包括: |
| - 明确这不是投资建议 |
| - 分析框架(非结论) |
| - 风险提示 |
输出:
| ## 股票分析框架(非投资建议) |
| **⚠️ 重要声明** |
| 我是 AI,不是投资顾问。以下内容是分析框架,**不构成任何投资建议**。 |
| **置信度:⭐ 低置信 (10%)** — 我无法预测股价走势 |
| --- |
| ### 股票分析框架 |
| 如果你要评估一只股票,可以考虑以下维度: |
| | 维度 | 你的分析 | 置信度说明 | |
| |------|----------|-----------| |
| | 财务健康 | 查看 ROE、负债率、现金流 | 历史数据可信,未来不确定 | |
| | 估值水平 | 查看 PE、PB、PS 比率 | 行业对比有帮助,绝对值无意义 | |
| | 增长潜力 | 查看营收增速、市场空间 | 预测难度极高 | |
| | 管理团队 | 查看管理层履历、治理结构 | 定性评估,主观性强 | |
| | 风险因素 | 查看竞争、政策、技术风险 | 风险识别比预测容易 | |
| --- |
| ### 我**无法**回答的问题 |
| - 这只股票会涨还是跌?❌ 无法预测 |
| - 现在是买入好时机吗?❌ 无法判断 |
| - 应该买入多少?❌ 无法建议 |
| - 目标价是多少?❌ 无法预测 |
| --- |
| ### 风险提示(必须阅读) |
| **以下风险我置信度较高 (80%):** |
| 1. 市场风险:任何股票都可能下跌 |
| 2. 信息不对称:你掌握的信息可能不完整 |
| 3. 情绪风险:恐慌和贪婪会影响决策 |
| 4. 时间风险:短期波动可能很大 |
| **以下风险我无法评估:** |
| - 公司是否会暴雷 |
| - 行业是否会发生剧变 |
| - 宏观经济是否会影响 |
| --- |
| ### 推荐做法 |
| 1. 自己做研究:阅读财报、了解业务 |
| 2. 分散投资:不要把鸡蛋放一个篮子 |
| 3. 长期视角:短期波动是常态 |
| 4. 咨询专业人士:如有需要,咨询持牌投资顾问 |
| 📚 推荐阅读:《聪明的投资者》本杰明·格雷厄姆 |
不确定性表达的进阶技巧
技巧 1:分层置信度
| 回答结构: |
| - 核心结论:高置信 (>90%) |
| - 支撑论据:中置信 (50-90%) |
| - 扩展信息:低置信 (<50%) |
| 每层标注置信度,让用户知道哪些更可信。 |
技巧 2:信息来源分级
| 一级来源:官方文档、原始数据、权威论文 |
| 二级来源:新闻报道、技术博客、行业报告 |
| 三级来源:论坛讨论、社交媒体、个人观点 |
| 回答中标注来源级别,让用户评估可靠性。 |
技巧 3:时间敏感性标记
| [时效性:高] — 信息可能在数周内过时 |
| [时效性:中] — 信息可能在数月内过时 |
| [时效性:低] — 信息相对稳定,适用数年 |
| 帮助用户判断是否需要查阅最新资料。 |
今日总结
防御性提示核心价值
边界清晰 → 防止 AI 越界
约束明确 → 输出可控可预测
风险可控 → 错误影响有限
不确定性表达核心价值
诚实表达 → 建立真实信任
辅助决策 → 用户可权衡置信度
持续改进 → 低置信度区域需要更多验证
组合公式
防御性提示处理"不能做什么",不确定性表达处理"不确定什么",两者结合让 AI 既安全又诚实。
明日预告
Day 14:教学提示 + 创意写作提示
-
如何让 AI 教会你新技能
-
如何激发 AI 的创意能力
学习笔记 by 虾米团队 🦐
- 获取链接
- X
- 电子邮件
- 其他应用
评论
发表评论