Prompt Engineering提示词工程

Prompt:作为模型推理与生成的输入上下文,用于提供任务指令、约束条件、背景信息与期望输出格式,从而引导模型产生目标响应。

Prompt四要素框架

|---------------|------------------|----------------|
| 要素 | 作用 | 常见表述 |
| Role(角色) | 告诉模型该用哪个领域的知识和语气 | "你是一位???" |
| Task(任务) | 说明要完成什么动作 | "请完成以下内容:??" |
| Contxext(上下文) | 补充和任务相关的背景 | "当前??,??" |
| Format(格式) | 规定输出长什么样 | "输出为??格式,包含??" |

Prompt调试

|------|---------------------------------------------|
| 步骤 | 做法 |
| 准备样例 | 选10-30条代表性输入,覆盖正常、边缘、异常场景 |
| 固定变量 | 固定模型、Temperature、System Prompt 和检索材料,避免变量混杂 |
| 记录指标 | 看格式合规率、事实错误率、字段缺失率、人工修改次数 |
| 单点修改 | 每次只改一个prompt变量 |
| 回归测试 | 上线后保留失败样例,定期回放,防止新规则修一坏三 |

常用提示词技巧

1.角色扮演

给模型一个具体身份,回答会更贴近对应领域。角色越具体,通常越稳。

2.思维链(Chain-of-Thought,CoT)

在普通模型上,要求模型给出简要推理过程,可能提升复杂任务稳定性;但在 reasoning model 上,不应假设能看到完整内部推理链。工程实践里更建议要求模型输出"关键依据、检查步骤、最终结论",而不是暴露完整草稿。

调试时看检查点也够用:你要知道它用了哪些变量、引用了哪些证据、在哪一步可能拐错弯,而不是把所有中间念头都打印出来。

CoT 类型名称 具体例子
Few-shot CoT 在 prompt 中给出 2--3 个"数学题 + 分步推理 + 答案"的示例,再让模型解一道新数学题。
Zero-shot CoT 在问题后加入"请逐步分析后给出答案",例如:一个商品原价 200 元,打 8 折后再减 20 元,最终价格是多少?请逐步分析。
Self-Consistency CoT 让模型对同一道逻辑题生成多条不同推理路径,再选择出现频率最高或最一致的答案。
Guided CoT / 引导式 CoT 要求模型按固定步骤回答,例如:先识别条件 → 再列出公式 → 再计算 → 最后验证答案。
Least-to-Most CoT 面对复杂任务时,先拆成简单子问题,例如先判断每个条件含义,再组合条件求最终答案。
Plan-and-Solve CoT 先让模型制定解题计划,例如:先列出解题步骤,再按照步骤完成计算并给出结论。
Tree-of-Thought(ToT) 对一道开放题生成多个候选方案,如 A、B、C 三种解法,再分别评估优缺点并选择最优方案。
Graph-of-Thought(GoT) 将多个推理节点组织成图结构,例如在商业分析中同时考虑用户、成本、市场、风险等因素,并合并得出结论。
Program-of-Thought(PoT) 让模型把计算问题转化为代码执行,例如用 Python 计算一组销售数据的均值、方差和趋势。
ReAct(Reasoning + Acting) 模型一边推理一边调用工具,例如先判断需要实时信息,再调用搜索工具查询天气,最后基于结果给出出行建议。

3.少样本学习

复杂任务或者格式严格的任务,给1~3个示例,示例会告诉模型输出应该长什么样。示例尽量和真实任务同类型,能覆盖边缘情况,格式要足够清楚。必要时可以用 XML 标签包起来。

4.任务分解

如果任务复杂,可以拆解为几个小任务让模型一步一步做。

静态分解适合流程固定的任务。任务开始前就把步骤规划好。

动态分解适合探索性任务。执行过程中根据当前结果,再决定下一步做什么。

5.结构化输出

如果希望模型按固定格式输出,prompt里要把schema说清楚。

Schema:是一种用于描述数据结构与格式约束的规范,定义字段名称、数据类型、必填规则、取值限制、嵌套关系等,以保证数据可验证、可解析、可交换。

6.XML标签与预填充

XML 标签:是在 prompt 中用类似 <instruction>...</instruction><context>...</context><output_format>...</output_format> 的标签包裹不同信息模块,帮助模型区分指令、背景、输入数据和输出要求,从而提升上下文解析的准确性与结构稳定性。

预填充(Prefill):指在模型开始生成前,提前给出输出的开头、格式框架或部分内容,引导模型沿着指定结构继续生成,降低跑题和格式漂移的概率。

复杂场景处理

长文本处理:

1.把文档放在 Query 之前。先给模型材料,再把问题和指令放到后面,通常效果更稳。多文档任务可以用 XML 标签做结构化。

2.先引用,再分析。长文档任务里,可以先让模型提取相关原文,再基于引用做判断。

减少幻觉

1.在 Prompt 里明确允许模型承认不知道。

2.涉及长文档时,可以要求模型先提取逐字引用,再根据引用分析。

3.做 Best-of-N 验证(多次采样一致性检查)。

4.做迭代验证,把模型上一轮输出作为下一轮输入,让它检查事实、补充证据或者修正表述。

提高输出一致性

使用 JSON Schema 或 XML Schema 直接定义结构。

预填充,比如需要 JSON,就先给一个 {。需要 XML,就先给 <response>

链式提示设计

链式提示(Prompt Chaining)就是把一个大任务拆成多条 Prompt,每条 Prompt 只处理一个子任务。设计时记住几条就行:任务要拆小,前一步输出要能传给下一步,每一步只做一件事,哪一步出错就单独调哪一步。链式提示最大的价值是方便定位问题。

企业级安全实践

|------------------|------------------------|--------------------------|
| 类型 | 常见来源 | 主要目标 |
| Prompt Injection | 外部内容,比如网页、邮件、文档、工具返回结果 | 覆盖引用指令,诱导Agent调错工具或泄露上下文 |
| Jailbreak | 用户直接输入的对抗性指令 | 绕过模型安全策略,让模型回答本不应该回答的内容 |

Prompt 注入(Prompt Injection)指的是攻击者通过构造外部输入,试图覆盖或篡改 Agent 原本的系统指令。

Jailbreak(越狱提示):指通过特殊 prompt 诱导模型绕过系统指令、安全策略或行为边界,使其生成本应被限制、拒绝或不符合规范的内容。

prompt注入防护

防护层级 术语说明 核心作用
输入层防护(Input Sanitization / Prompt Injection Detection) 对用户输入、网页内容、文档内容等外部文本进行清洗、分类、风险检测与恶意指令识别。 在信息进入模型前识别"忽略之前指令""泄露系统提示"等注入内容。
上下文层防护(Context Isolation / Instruction Hierarchy) 将系统指令、开发者指令、用户输入、外部检索内容进行权限分层与语义隔离,防止低优先级内容覆盖高优先级指令。 保证模型遵循系统指令优先级,不被外部内容篡改行为边界。
输出层防护(Output Validation / Policy Enforcement) 对模型输出进行格式校验、安全审查、敏感信息过滤与工具调用权限控制。 防止模型输出违规内容、泄露隐私,或执行危险操作。

越狱与提示词注入缓解

越狱和提示词注入通常要组合处理。输入进来前,先做无害性筛选。对明显的越狱模式、已知攻击语句、危险工具调用意图做过滤。进入执行阶段后,再配合权限控制、沙箱隔离、人工审批。这里不能指望一条 Prompt 解决所有问题。安全要靠多层策略叠起来。

提示词路由(Prompt Routing):指根据用户输入的意图、任务类型、复杂度或上下文特征,将请求自动分发到不同的 prompt 模板、模型、工具链或 Agent 流程,以提升响应准确性、效率与可控性。

相关推荐
garmin Chen4 小时前
Prompt工程入门:让AI按你的要求工作(2)--Prompt 高阶优化与结构化设计
java·人工智能·python·ai·prompt
YHHLAI4 小时前
Prompt 做 NLP 任务开发|ES6 + 模块化
自然语言处理·prompt·es6
sugar__salt6 小时前
基于Prompt的NLP项目实战:ES6模块化落地开发指南
javascript·自然语言处理·prompt·es6
晚笙coding6 小时前
从零讲透 LangChain 提示词模板:不只是 Prompt,而是“可复用的 AI 指令工厂”
人工智能·langchain·prompt
张哈大6 小时前
MCP:重塑AI工具调用的统一标准,告别重复造轮子的时代
人工智能·python·ai·prompt
Hello_WOAIAI16 小时前
还在手打Prompt?这份2025最新AI绘画关键词+教程+报告资料包直接拿走
人工智能·ai作画·prompt
海棠AI实验室1 天前
把“选题三角”做成一个评分系统:Prompt 工程 + 多模型投票实战
人工智能·prompt
TheRouter1 天前
LLM 应用的A/B 测试工程:如何在生产中安全切换模型、Prompt 和参数
安全·prompt
java1234_小锋1 天前
LangChain4j 开发Java Agent智能体- 对话与提示词工程(Prompt)
java·开发语言·prompt·langchain4j