关于 prompt-engeneering
一项提供提示词编写技巧、审查流程和参考资料的技能,适用于不同 LLM。内容涵盖结构化指令、输出约束、歧义处理、工具使用、安全性与评估。
主要功能
- 01用 XML 标签组织提示词
- 02约束输出格式与任务范围
- 03处理歧义与不确定性
- 04指导工具使用和 Agent 更新
- 05从八个维度审查提示词
- 06查阅提示工程技巧目录
适用场景
- 01设计多步骤任务的提示词
- 02检查提示词的安全性与清晰度
- 03规划结构化数据提取
- 04适配不同模型的提示词
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ codealive-ai/ prompt-engineering-skill --skill prompt-engeneering安装后在 Claude Code 中输入/prompt-engeneering确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/claude-family-prompting.mdevaluation-redteaming.mdfailure-taxonomy.mdgemini3-family-prompting.mdgpt5-family-prompting.mdgpt5-prompting-guide.mdmistakes-context.mdmistakes-debt.mdmistakes-hallucinations.mdmistakes-security.mdmistakes-structure.mdprompt-audit-checklist.mdprompting-introduction.mdprompting-risks.mdprompting-techniques.md详细介绍
提示词工程
适用于任何大模型的通用技巧,帮助编写有效的提示词。
核心原则
1. 使用 XML 标签构建结构
使用 XML 标签创建清晰、可解析的提示词:
<context>Background information here</context>
<instructions>
1. First step
2. Second step
</instructions>
<examples>Sample inputs/outputs</examples>
<output_format>Expected structure</output_format>
优点:
- 清晰度:区分上下文、指令和示例
- 准确性:防止模型混淆各个部分
- 灵活性:便于单独修改各个部分
- 可解析性:便于提取结构化输出
最佳实践:
- 全程使用一致的标签名称(使用
<instructions>,不要有时改用<steps>) - 明确引用标签:“使用
<context>标签中的数据……” - 使用嵌套标签表示层级:
<examples><example id="1">...</example></examples> - 与其他技巧结合使用:用
<thinking>表示思维链,用<answer>表示最终输出
2. 控制输出形式
明确指定长度、格式和结构方面的限制:
<output_spec>
- Default: 3-6 sentences or ≤5 bullets
- Simple yes/no questions: ≤2 sentences
- Complex multi-step tasks:
- 1 short overview paragraph
- ≤5 bullets: What changed, Where, Risks, Next steps, Open questions
- Use Markdown with headers, bullets, tables when helpful
- Avoid long narrative paragraphs; prefer compact structure
</output_spec>
3. 防止偏离范围
明确限制模型不应执行的操作:
<constraints>
- Implement EXACTLY and ONLY what is requested
- No extra features, components, or embellishments
- If ambiguous, choose the simplest valid interpretation
- Do NOT invent values, make assumptions, or add unrequested elements
</constraints>
4. 明确处理歧义
避免幻觉和过度自信:
<uncertainty_handling>
- If the question is ambiguous:
- Ask 1-3 precise clarifying questions, OR
- Present 2-3 plausible interpretations with labeled assumptions
- When facts may have changed: answer in general terms, state uncertainty
- Never fabricate exact figures or references when uncertain
- Prefer "Based on the provided context..." over absolute claims
</uncertainty_handling>
5. 为长上下文提供依据
对于超过 10k 个 token 的输入,添加重新锚定上下文的指令:
<long_context_handling>
- First, produce a short internal outline of key sections relevant to the request
- Re-state user constraints explicitly before answering
- Anchor claims to sections ("In the 'Data Retention' section...")
- Quote or paraphrase fine details (dates, thresholds, clauses)
</long_context_handling>
Agent 提示词
工具使用规则
<tool_usage>
- Prefer tools over internal knowledge for:
- Fresh or user-specific data (tickets, orders, configs)
- Specific IDs, URLs, or document references
- Parallelize independent reads when possible
- After write operations, restate: what changed, where, any validation performed
</tool_usage>
用户进度更新
<user_updates>
- Send brief updates (1-2 sentences) only when:
- Starting a new major phase
- Discovering something that changes the plan
- Avoid narrating routine operations
- Each update must include a concrete outcome ("Found X", "Updated Y")
- Do not expand scope beyond what was asked
</user_updates>
高风险输出的自检
<self_check>
Before finalizing answers in sensitive contexts (legal, financial, safety):
- Re-scan for unstated assumptions
- Check for ungrounded numbers or claims
- Soften overly strong language ("always", "guaranteed")
- Explicitly state assumptions
</self_check>
结构化提取
对于数据提取任务,务必提供架构:
<extraction_spec>
Extract data into this exact schema (no extra fields):
{
"field_name": "string",
"optional_field": "string | null",
"numeric_field": "number | null"
}
- If a field is not present in source, set to null (don't guess)
- Re-scan source for missed fields before returning
</extraction_spec>
网络研究提示词
<research_guidelines>
- Browse the web for: time-sensitive topics, recommendations, navigational queries, ambiguous terms
- Include citations after paragraphs with web-derived claims
- Use multiple sources for key claims; prioritize primary sources
- Research until additional searching won't materially change the answer
- Structure output with Markdown: headers, bullets, tables for comparisons
</research_guidelines>
示例:修改前后
不使用结构:
You're a financial analyst. Generate a Q2 report for investors. Include Revenue, Margins, Cash Flow. Use this data: {{DATA}}. Make it professional and concise.
使用结构:
You're a financial analyst at AcmeCorp generating a Q2 report for investors.
<context>
AcmeCorp is a B2B SaaS company. Investors value transparency and actionable insights.
</context>
<data>
{{DATA}}
</data>
<instructions>
1. Include sections: Revenue Growth, Profit Margins, Cash Flow
2. Highlight strengths and areas for improvement
3. Use concise, professional tone
</instructions>
<output_format>
- Use bullet points with metrics and YoY changes
- Include "Action:" items for areas needing improvement
- End with 2-3 bullet Outlook section
</output_format>
提示词迁移检查清单
在不同模型或版本之间调整提示词时:
- 更换模型,保持提示词不变 — 隔离变量
- 固定推理/思考深度,使其匹配先前模型的特征
- 运行评估 — 如果结果良好,即可发布
- 如果出现回归,调整提示词 — 调整详细程度/格式/范围限制
- 每次小幅修改后重新评估 — 每次只改一处
快速参考
| 技巧 | 标签模式 | 使用场景 |
|---|---|---|
| 区分各部分 | <context>、<instructions>、<data> | 任何复杂提示词 |
| 控制长度 | 使用 <output_spec> 指定字数/项目符号数量限制 | 防止冗长 |
| 防止偏离范围 | 使用 <constraints> 明确写出“不要” | 功能蔓延 |
| 处理不确定性 | <uncertainty_handling> | 事实查询 |
| 思维链 | <thinking>、<answer> | 推理任务 |
| 提取 | 使用 JSON 结构的 <schema> | 数据解析 |
| 研究 | <research_guidelines> | 支持网络访问的 Agent |
| 自检 | <self_check> | 高风险领域 |
| 工具使用 | <tool_usage_rules> | Agent 系统 |
| 控制主动性 | <persistence>、<context_gathering> | Agent 自主性 |
| 角色设定 | <role> + 行为限制 | 语气与风格 |
提示词技术目录
提示词技术综合目录。完整详情、示例和学术参考资料请参阅 references/prompting-techniques.md。
| 技术 | 使用场景 |
|---|---|
| 零样本提示 | 无需示例即可直接执行任务;分类、翻译、摘要 |
| 少样本提示 | 通过示例进行上下文学习;格式控制、标签校准、风格匹配 |
| 思维链(CoT) | 逐步推理;算术、逻辑、常识推理任务 |
| 元提示 | 将 LLM 用作协调者,委派任务给专业提示词;复杂的多领域任务 |
| 自一致性 | 对多个 CoT 路径采样,选择占多数的答案;提高数学和推理任务的准确性 |
| 生成知识 | 先生成相关知识,再作答;常识和事实性问答 |
| 提示链 | 将复杂任务拆分为按顺序执行的子任务;文档分析、多步骤工作流 |
| 思维树(ToT) | 通过前瞻和回溯探索多个推理分支;规划、谜题 |
| RAG | 生成前检索外部文档;知识密集型任务、最新数据 |
| ART(自动推理 + 工具) | 使用 CoT 自动选择并协调工具;需要计算、搜索、API 的任务 |
| APE(自动提示工程师) | 由 LLM 生成并评分候选提示词;大规模优化提示词 |
| 主动提示(Active-Prompt) | 识别不确定的示例,有选择地进行标注以用于 CoT;自适应少样本提示 |
| 定向刺激 | 添加提示/关键词来引导生成方向;摘要、对话 |
| PAL(程序辅助 LM) | 通过生成代码而非文本进行推理;数学、数据处理、符号任务 |
| ReAct | 交替进行推理过程与工具操作;搜索、问答、决策型 Agent |
| 反思(Reflexion) | Agent 根据语言反馈对失败进行自我反思;迭代改进、调试 |
| 多模态 CoT | 两阶段流程:先生成推理依据,再结合文本和图像作答;视觉推理任务 |
| 图提示 | 基于结构化图的提示词;节点分类、关系抽取、图任务 |
提示词基础
LLM 设置、提示词要素、格式和实用示例请参阅 references/prompting-introduction.md。内容包括:
- LLM 设置 — temperature、top-p、最大长度、停止序列、频率/存在惩罚
- 提示词要素 — 指令、上下文、输入数据、输出标识
- 设计建议 — 从简单开始、明确具体、避免含糊、说明要做什么(而不是不要做什么)
- 任务示例 — 摘要、抽取、问答、分类、对话、代码生成、推理
风险与误用
对抗性攻击、事实性问题和偏差缓解请参阅 references/prompting-risks.md。内容包括:
- 对抗性提示 — 提示注入、提示泄露、越狱(DAN、Waluigi 效应)、防御策略
- 事实性 — 基于真实情况、校准置信度、承认不知情的模式
- 偏差 — 示例分布偏斜、示例顺序效应、均衡的少样本设计
提示词审计 / 评审
如果需要审计、评审或改进提示词,请遵循以下工作流。完整检查清单及各项检查的参考资料请参阅 prompt-audit-checklist.md。
工作流
- 完整阅读提示词 — 确定其目的、目标模型和部署场景(交互式聊天、Agent 系统、批处理流水线、RAG 增强)
- 检查 8 个维度 — 逐项检查,并按严重程度记录问题(严重 / 警告 / 建议):
| # | 维度 | 检查内容 |
|---|---|---|
| 1 | 清晰度与具体性 | 任务定义、成功标准、受众、输出格式、相互冲突的约束 |
| 2 | 结构与格式 | 章节划分(XML 标签)、提示词异味(单体式、层次混杂、负面偏向) |
| 3 | 安全与防护 | 控制与数据分离、提示词中的机密信息、抵御注入的能力、工具权限 |
| 4 | 幻觉与事实准确性 | 角色设定、依据、无来源引用、不确定性的处理 |
| 5 | 上下文管理 | 信息位置(是否埋在中间)、上下文大小、RAG 文档数量、重新提供依据 |
| 6 | 可维护性与技术债务 | 硬编码值、重新生成的逻辑、模型锁定、可测试性 |
| 7 | 模型特定适配 | 特定模型的参数和注意事项(参见下方的模型特定指南) |
| 8 | 评估准备情况 | 评估标准、对抗性测试用例、模式强制、监控 |
- 生成报告 — 问题表(维度、检查项、严重程度、问题、修复方案)+ 重写后的提示词或针对性修复建议。使用检查清单参考中的报告模板。
- 针对每个问题,引用相关参考文件,方便用户深入了解。
快速决策:优先检查哪些维度
- 面向用户的聊天机器人 → 优先检查安全(#3)、幻觉(#4)、清晰度(#1)
- 带工具的 Agent 系统 → 优先检查安全(#3)、上下文(#5)、可维护性(#6)
- 批处理 / 流水线 → 优先检查结构(#2)、评估(#8)、可维护性(#6)
- RAG 增强 → 优先检查上下文(#5)、安全(#3)、幻觉(#4)
常见错误与反模式
三个互补层面 — 根据需求选择:
按类别深入分析 — 根本原因、作用机制、预防检查清单(摘自《指令架构》,2026 年):
| 错误类别 | 主要问题 | 参考资料 |
|---|---|---|
| 幻觉与逻辑 | 模糊性引发的虚构、自动化偏见、提示词过载、验证任务中的逻辑失误、缺少角色设定 | mistakes-hallucinations.md |
| 结构脆弱性 | 对格式敏感(差异最高达 76 个百分点)、可复现性危机、提示词异味目录(6 种反模式)、审慎阶梯 | mistakes-structure.md |
| 上下文退化 | “中间遗失”导致的 U 形注意力、RAG 过度检索、简单粗暴的数据加载、向上下文工程的转变 | mistakes-context.md |
| 提示词债务 | 再生成代码的令牌成本、债务分类(提示词 / 超参数 / 框架 / 成本)、多 Agent 解决方案、自动修复 | mistakes-debt.md |
| 安全 | 直接 / 间接注入、越狱、系统提示词泄露(OWASP LLM07:2025)、RAG 投毒、多模态注入、对抗性后缀 | mistakes-security.md |
快速参考 — 包含 MRP、风险评分、案例研究和行动项的 18 类问题分类:failure-taxonomy.md。可从这里了解概况,或确定应优先处理哪些类别。涵盖:控制平面与数据平面模型、启发式风险评分、真实事件(EchoLeak CVE-2025-32711、Mata 诉 Avianca 案、Samsung 影子 AI)。
如何衡量与测试 — 评估指标、CI 门禁、红队测试、工具:evaluation-redteaming.md。涵盖:TruthfulQA、FActScore、SelfCheckGPT、PromptBench、AILuminate、LLM 评审的陷阱、护栏库、尚待研究的问题。
模型专属指南
每个模型系列都有其独特的参数、注意事项和模式。请查阅目标模型的参考指南:
- Claude Family — Opus/Sonnet 4.6:自适应思考(
effort参数)、预填充弃用(改用 Structured Outputs)、修复工具过度触发、提示词缓存、引用、上下文工程、Agentic 子 Agent 模式、视觉能力、从 4.5 迁移 - GPT-5 Family — GPT-5/5.1/5.2:
reasoning_effort参数(不同版本的默认值各异)、verbosityAPI 控制、命名工具(apply_patch)、Agentic 主动性模板、压缩 API、对指令冲突的敏感性、迁移路径 - Gemini 3 Family — Gemini 2.5/3/3.1:temperature 必须设为 1.0、
thinking_budget与thinking_level的区别、约束的位置(提示词末尾)、角色优先级、函数调用、结构化输出、多模态、图像生成 - GPT-5.2 Specifics — 压缩 API 代码示例、网络研究 Agent 提示词、完整的 XML 规范块