mcpField
P
prompt-engineering-patterns

prompt-engineering-patterns

github.com/wshobsonAgent 工作流41.9k23.7k 次安装2 周前更新
代码仓库

关于 prompt-engineering-patterns

此技能汇集提升 LLM 提示词表现、可靠性和可控性的方法,适用于构建生产级应用和专用 AI 助手。涵盖少样本示例、结构化输出、提示词优化与模板设计。

主要功能

  1. 01少样本示例选择与构建
  2. 02链式思维与多路径验证
  3. 03JSON 和 Pydantic 结构化输出
  4. 04迭代优化并评估提示词
  5. 05设计可复用模板与系统提示词

适用场景

  1. 01优化生产应用中的提示词一致性
  2. 02为 LLM 构建可靠的结构化输出
  3. 03调试并改进不稳定的提示词
  4. 04创建专用 AI 助手的系统提示词

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wshobson/agents --skill prompt-engineering-patterns

安装后在 Claude Code 中输入/prompt-engineering-patterns确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
few-shot-examples.json
prompt-template-library.md
references/
chain-of-thought.md
details.md
few-shot-learning.md
prompt-optimization.md
prompt-templates.md
system-prompts.md
scripts/
optimize-prompt.py

详细介绍

提示词工程模式

掌握高级提示词工程技术,以最大化大模型的性能、可靠性和可控性。

何时使用本技能

  • 为生产环境的大模型应用设计复杂提示词
  • 优化提示词性能和一致性
  • 实现结构化推理模式(思维链、思维树)
  • 构建具有动态示例选择的少样本学习系统
  • 创建支持变量插值的可复用提示词模板
  • 调试和优化产生不一致输出的提示词
  • 为专用 AI 助手实现系统提示词
  • 使用结构化输出(JSON 模式)实现可靠解析

核心能力

1. 少样本学习
  • 示例选择策略(语义相似度、多样性采样)
  • 在示例数量与上下文窗口限制之间取得平衡
  • 使用输入-输出对构建有效示范
  • 从知识库中动态检索示例
  • 通过策略性示例选择处理边缘情况
2. 思维链提示
  • 逐步推理引导
  • 使用 "Let's think step by step" 的零样本 CoT
  • 带推理轨迹的少样本 CoT
  • 自洽性技术(采样多条推理路径)
  • 验证与校验步骤
3. 结构化输出
  • 用于可靠解析的 JSON 模式
  • Pydantic 模式强制执行
  • 类型安全的响应处理
  • 针对格式错误输出的错误处理
4. 提示词优化
  • 迭代优化工作流
  • 提示词变体的 A/B 测试
  • 衡量提示词性能指标(准确率、一致性、延迟)
  • 在保持质量的同时减少 token 使用量
  • 处理边缘情况和失败模式
5. 模板系统
  • 变量插值与格式化
  • 条件式提示词段落
  • 多轮对话模板
  • 基于角色的提示词组合
  • 模块化提示词组件
6. 系统提示词设计
  • 设定模型行为和约束
  • 定义输出格式和结构
  • 确立角色和专长
  • 安全准则和内容政策
  • 上下文设定和背景信息

快速开始

from langchain_anthropic import ChatAnthropic
from langchain_core.prompts import ChatPromptTemplate
from pydantic import BaseModel, Field

# Define structured output schema
class SQLQuery(BaseModel):
    query: str = Field(description="The SQL query")
    explanation: str = Field(description="Brief explanation of what the query does")
    tables_used: list[str] = Field(description="List of tables referenced")

# Initialize model with structured output
llm = ChatAnthropic(model="claude-sonnet-5")
structured_llm = llm.with_structured_output(SQLQuery)

# Create prompt template
prompt = ChatPromptTemplate.from_messages([
    ("system", """You are an expert SQL developer. Generate efficient, secure SQL queries.
    Always use parameterized queries to prevent SQL injection.
    Explain your reasoning briefly."""),
    ("user", "Convert this to SQL: {query}")
])

# Create chain
chain = prompt | structured_llm

# Use
result = await chain.ainvoke({
    "query": "Find all users who registered in the last 30 days"
})
print(result.query)
print(result.explanation)

详细模式与示例

详细的模式文档位于 references/details.md。当上述导航层级不够用时,请阅读该文件。

最佳实践

  1. 要具体:模糊的提示词会产生不一致的结果
  2. 展示而非描述:示例比描述更有效
  3. 使用结构化输出:通过 Pydantic 强制执行模式以确保可靠性
  4. 广泛测试:在多样且有代表性的输入上进行评估
  5. 快速迭代:小改动可能产生大影响
  6. 监控性能:在生产环境中跟踪指标
  7. 版本控制:将提示词视为代码并进行适当版本管理
  8. 记录意图:解释提示词为何如此组织

常见陷阱

  • 过度设计:在尝试简单提示词之前就开始使用复杂提示词
  • 示例污染:使用与目标任务不匹配的示例
  • 上下文溢出:因示例过多而超出 token 限制
  • 指令模糊:留下多种解释空间
  • 忽视边缘情况:未在异常或边界输入上进行测试
  • 无错误处理:假设输出始终格式良好
  • 硬编码值:未对提示词进行参数化以便复用

成功指标

跟踪提示词的以下 KPI:

  • 准确率:输出的正确性
  • 一致性:相似输入之间的可复现性
  • 延迟:响应时间(P50、P95、P99)
  • Token 使用量:每个请求的平均 token 数
  • 成功率:有效且可解析输出的百分比
  • 用户满意度:评分和反馈

评论

支持 Markdown