提示工程实用技巧

在这篇文章中,我们将探讨适用于LLM的实用提示工程技术。

提示工程实用技巧

大型语言模型(LLM)已经从研究实验室进入了开发人员、分析师甚至非技术人员的日常工作中。无论是在编写SQL查询、总结文档、生成代码还是头脑风暴产品想法,LLM的有效性在很大程度上取决于你的提示的质量。

而这里有一个真相:提示不是魔法,而是工程。

在这篇文章中,我们将探讨适用于LLM的实用提示工程技术。我会分享框架、经过测试的策略和你可以立即应用的例子来提高结果。在文章结束时,你不仅会理解为什么提示能以这种方式工作,还会了解如何系统地设计它们以实现可靠性、精确性和可扩展性

这是一篇较长的文章(约3000字),因为我们会深入探讨。拿一杯咖啡,打开Jupyter笔记本(你会想尝试一些东西),让我们开始吧。

1、为什么提示工程很重要

如果你曾经要求一个LLM “为按地区每月销售生成SQL查询”,然后得到一个不完整或错误的结果,你已经知道为什么提示很重要了。

与确定性程序不同,LLM是概率生成器。它们基于你的输入预测下一个最可能的标记。这意味着你的提示不仅仅是指令——它也是输入分布的一部分,影响输出。

可以这样想象:

  • 一个模糊的提示就像在一个陌生的城市向一个陌生人问路。你会得到一个困惑的答案,甚至可能是错误的街道。
  • 一个清晰且结构化的提示就像给他们一张GPS地图。你大大提高了到达目的地的可能性。

好的提示 = 减少猜测,增加一致性,减少后期编辑

2、一个好的提示的基本要素

在深入高级技术之前,让我们先建立基础:

  1. 角色定义 → LLM应该扮演什么角色?
    示例:“你是一位专门从事时间序列预测的数据科学家。”
  2. 任务明确性 → 它应该做什么?
    示例:“生成一个使用Prophet进行周销售预测的Python函数。”
  3. 约束条件 → 它应该遵循哪些规则?
    示例:“将预测限制在12周内,并仅返回Python代码。”
  4. 上下文 → 它需要哪些背景信息?
    示例:“这是CSV的标题:['date', 'sales', 'region']。使用'date'作为时间列。”
  5. 输出格式 → 答案应该如何结构化?
    示例:“以Markdown代码块的形式返回输出,不要包含解释文本。”

这五个要素是有效提示的DNA。

3、实用的提示工程技术

让我们从理论转向实践。以下是一些在OpenAI、Anthropic和开源LLM中一致有效的技术。

3.1 角色提示

人类根据他们的角色会有不同的反应。LLM也是如此。通过分配一个角色,你可以引导模型进入特定的风格、语气和知识库

示例:

你是一位资深的数据科学家,正在指导一位初级分析师。    
用体育类比解释梯度提升是如何工作的。    
保持解释在200字以内。

结果?LLM采用了一种导师角色,而不是堆砌教科书术语。

3.2 少样本提示

与其告诉LLM “做X”,不如展示LLMX的样子。

示例: 情感分类。

Q: "该模型表现非常出色。"    
A: 正面    

Q: "这个实验完全是一场灾难。"    
A: 负面    

Q: "数据集有一些不一致之处,但可以清理。"    
A: 中性    

这是因为LLM是模式学习者。少量的例子锚定了响应风格。

小贴士: 使用多样但有代表性的例子。太多可能导致“过拟合”到你的例子,太少则可能无法设定模式。

3.3 思维链(CoT)提示

对于推理任务,明确告诉LLM要逐步思考

示例:

你正在解决一个数学问题。    
在给出最终答案之前,请逐步解释你的推理过程。    

问题: 一列火车以60公里/小时的速度行驶2小时,然后以90公里/小时的速度行驶1小时。    
平均速度是多少?

这会提高准确性,因为模型将问题分解成更小的推理步骤。

事实: 谷歌研究人员表明,CoT在多步骤推理任务中可将性能提高高达40%

3.4 ReAct提示(Reason + Act)

有时你希望LLM既能推理又能行动。这种混合方法让模型解释它在想什么,然后执行一个动作

示例(伪代理):

问题: "今天伦敦的天气怎么样?"    

推理: 我需要调用一个天气API,包括今天的日期和位置。    
动作: fetch_weather("London", "2025-08-26")

这是基于LLM的代理(如LangChain工具)的基础。即使你不是在构建代理,这样结构化的提示也能使输出可预测。

3.5 自洽性

LLM有时会幻觉。一种减少这种方法的方法:多次以轻微变化的方式提出同一个问题,然后汇总结果

示例:

而不是:

“总结这篇研究论文。”

尝试:

“生成这篇论文的三个不同摘要。然后将它们综合成一个最终摘要。”

令人惊讶的是,这减少了事实错误,因为模型“交叉检查”自己。

3.6 指令层次结构

将指令分层重要性。模型通常首先遵守最高层的指令。

示例:

主要任务: 总结这份财务报告。    

约束条件:    
1. 将摘要限制在200字以内。    
2. 使用项目符号。    
3. 分别突出显示风险和机会。    

上下文: [插入报告文本]

可以把它看作是一种提示架构。这种结构最小化了模型忽略约束的风险。

3.7 分隔符和显式格式

模糊性会摧毁提示。使用清晰的分隔符,如三重引号、XML标签或JSON。

示例:

在三个项目符号中总结以下文本。

对于结构化输出:

以以下键返回答案:    
{ "summary": string, "keywords": list, "tone": string }

这使得后处理自动化且可靠。

3.8 提示链

将复杂任务分解成较小的步骤并链接提示。

示例: 研究摘要

  1. 提示1 → 提取关键发现。
  2. 提示2 → 概括方法。
  3. 提示3 → 生成最终的高管摘要。

这种模块化方法更容易调试且更具可扩展性。

3.9 负面提示

告诉模型不要做什么。

示例:

用简单的术语解释随机森林。    
不要使用数学公式。    
不要超过三段。

这减少了无关的延伸。

3.10 自动化优化提示

手动提示对于一次性查询来说是可以的。但对于工作流程,你需要自动化。

  • 使用Python脚本生成提示的不同变体。
  • 使用日志记录跟踪模型的响应。
  • 对提示进行A/B测试以衡量哪种提示产生更高的准确性。

示例(Python片段):

prompts = [  
    "用三个要点总结这段文字:",  
    "提供一个简洁的三点总结:",  
    "给我这段文档的三个要点:"  
]  

for p in prompts:  
    response = llm_api(prompt=p + text)  
    log(p, response)

这样,你就像调整超参数一样来优化提示。

4、常见的提示工程错误

我们也要讨论什么是不应该做的

  1. 提示过度加载 → 如果一次问10个问题,模型可能会错过一半。
  2. 缺乏规范 → “总结这个”而不指定长度、风格或重点 = 模糊输出。
  3. 忽视迭代 → 第一个提示很少是最好的。像调试代码一样迭代。
  4. 盲目信任输出 → 总是验证事实的正确性,特别是在关键领域。

5、数据科学工作流程的实际应用

由于这是数据科学集体,让我们将技术锚定在实际用例中:

  • SQL生成: 使用表模式示例的少样本提示。
  • 数据清洗: 作为“数据整理者”的角色提示,逐步推理。
  • 探索性数据分析(EDA): 思维链生成假设,然后自动生成可视化代码。
  • 文档: 使用分隔符提示自动生成函数文档字符串。
  • 报告写作: 使用提示链生成结构化的高管摘要。

这些并不是未来用例——它们是日常生产力的提升。

6、提示工程的未来

随着模型的改进,提示工程会变得过时吗?

不完全是。将其视为人工智能的用户界面设计。模型会变得更聪明,但人类始终需要:

  • 明确地定义意图
  • 将混乱的目标转化为结构化的输入
  • 优化效率、一致性和自动化

可能发生改变的是工具:内置提示测试的IDE、监控仪表板和共享提示库。但核心技能——有效地与LLM沟通——将保持不变。

7、结束语

提示工程是艺术与科学的结合。

  • 艺术在于清晰、创造性且富有同理心地提出问题。
  • 科学在于像其他系统一样构建、测试和优化提示。

回顾一下,最实用的技术如下:

  • 角色提示
  • 少样本学习
  • 思维链
  • ReAct推理
  • 自洽性
  • 指令层次结构
  • 分隔符和格式
  • 提示链
  • 负面提示
  • 自动化优化

掌握这些将使你不仅成为一个更好的提示撰写者,而且成为一个更有效的数据科学家、开发者或AI从业者。

所以下次你打开你的LLM界面时,记住:这不是关于与聊天机器人交谈。而是关于设计一场对话

如果你把它当作工程来看待,你会得到感觉像魔法的结果。


原文链接:Practical Prompt Engineering Techniques for LLMs

汇智网翻译整理,转载请标明出处