提示工程 prompt-engineering

提示工程是一种技能,专注于设计和优化人工智能模型特别是大语言模型的输入提示,以提升输出质量和准确性。涉及模式如结构化提示、链式思考、少样本学习等,关键词包括提示优化、大模型、AI、自然语言处理、AIGC、智能体应用。

大模型微调 0 次安装 0 次浏览 更新于 3/8/2026

名称: 提示工程 描述: 提示工程模式,包括结构化提示、链式思考、少样本学习和系统提示设计

提示工程

结构化系统提示

您是一名高级代码审查员。您的角色是分析拉取请求中的以下方面:
1. 正确性 - 逻辑错误、边界情况、差一错误
2. 安全性 - 注入攻击、身份验证、数据暴露
3. 性能 - N+1 查询、不必要的分配、缺少索引
4. 可维护性 - 命名、复杂性、测试覆盖率

对于发现的问题,按以下格式响应:
- 严重性: critical | warning | suggestion
- 文件和行引用
- 问题描述
- 如何修复(附代码片段)

如果代码写得好,简要说明。不要虚构问题。

结构化系统提示应包括角色、范围、输出格式和约束。明确说明模型不应做什么。

链式思考

分析此数据库查询的性能问题。

逐步思考:
1. 识别涉及的表和连接
2. 检查 WHERE 和 JOIN 条件是否有适当索引
3. 查找全表扫描或笛卡尔积
4. 估计每一步的行数
5. 建议具体的索引创建或查询重构

查询:
SELECT o.*, u.name, p.title
FROM orders o
JOIN users u ON o.user_id = u.id
JOIN products p ON o.product_id = p.id
WHERE o.created_at > '2024-01-01'
AND u.country = 'US'
ORDER BY o.created_at DESC
LIMIT 50;

链式思考提示通过强制模型展示中间步骤,提高推理任务的准确性。

少样本示例

将自然语言转换为 SQL。遵循以下示例:

输入: "上个月有多少订单?"
输出: SELECT COUNT(*) FROM orders WHERE created_at >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '1 month') AND created_at < DATE_TRUNC('month', CURRENT_DATE);

输入: "总支出最高的前5名客户"
输出: SELECT customer_id, SUM(total_amount) AS total_spent FROM orders GROUP BY customer_id ORDER BY total_spent DESC LIMIT 5;

输入: "从未被订购过的产品"
输出: SELECT p.* FROM products p LEFT JOIN order_items oi ON p.id = oi.product_id WHERE oi.id IS NULL;

现在转换:
输入: "过去季度的每个国家的平均订单价值"

提供3-5个展示期望格式和边界情况的多样化示例。

工具使用 / 函数调用

{
  "tools": [
    {
      "name": "search_codebase",
      "description": "在整个代码库中搜索代码模式。当需要查找实现、用途或定义时使用。",
      "parameters": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "要搜索的正则表达式模式或关键词"
          },
          "file_type": {
            "type": "string",
            "description": "文件类型过滤器(例如 'ts', 'py')"
          }
        },
        "required": ["query"]
      }
    }
  ]
}

编写工具描述,解释何时使用工具,而不仅仅是做什么。

提示模板模式

def build_review_prompt(diff: str, context: str, rules: list[str]) -> str:
    rules_text = "
".join(f"- {rule}" for rule in rules)

    return f"""根据以下规则审查此代码差异:
{rules_text}

代码库上下文:
{context}

待审查的差异:

{diff}


用 JSON 数组响应发现的问题。如果没问题,返回空数组。
每个发现:{{"severity": "critical|warning|info", "line": number, "message": "string", "suggestion": "string"}}"""

反模式

  • 模糊指令,如“要帮助”或“尽力而为”
  • 当需要确定性输出时要求模型“有创意”
  • 未指定输出格式(JSON、markdown、纯文本)
  • 将太多不相关任务塞入单个提示
  • 使用否定(“不要做 X”)而不说明该做什么
  • 未使用对抗性或边界情况输入测试提示

检查表

  • [ ] 系统提示定义角色、范围、格式和约束
  • [ ] 链式思考用于多步推理任务
  • [ ] 少样本示例覆盖典型和边界情况
  • [ ] 明确指定输出格式(JSON 模式、markdown 等)
  • [ ] 工具描述解释何时以及为何使用每个工具
  • [ ] 用对抗性输入测试提示
  • [ ] 根据任务适当设置温度和 top_p 参数
  • [ ] 提示模板参数化,而不是硬编码字符串