提示工程实用技巧
大型语言模型(LLM)已经从研究实验室进入了开发人员、分析师甚至非技术人员的日常工作中。无论是在编写SQL查询、总结文档、生成代码还是头脑风暴产品想法,LLM的有效性在很大程度上取决于你的提示的质量。
而这里有一个真相:提示不是魔法,而是工程。
在这篇文章中,我们将探讨适用于LLM的实用提示工程技术。我会分享框架、经过测试的策略和你可以立即应用的例子来提高结果。在文章结束时,你不仅会理解为什么提示能以这种方式工作,还会了解如何系统地设计它们以实现可靠性、精确性和可扩展性。
这是一篇较长的文章(约3000字),因为我们会深入探讨。拿一杯咖啡,打开Jupyter笔记本(你会想尝试一些东西),让我们开始吧。
1、为什么提示工程很重要
如果你曾经要求一个LLM “为按地区每月销售生成SQL查询”,然后得到一个不完整或错误的结果,你已经知道为什么提示很重要了。
与确定性程序不同,LLM是概率生成器。它们基于你的输入预测下一个最可能的标记。这意味着你的提示不仅仅是指令——它也是输入分布的一部分,影响输出。
可以这样想象:
- 一个模糊的提示就像在一个陌生的城市向一个陌生人问路。你会得到一个困惑的答案,甚至可能是错误的街道。
- 一个清晰且结构化的提示就像给他们一张GPS地图。你大大提高了到达目的地的可能性。
好的提示 = 减少猜测,增加一致性,减少后期编辑。
2、一个好的提示的基本要素
在深入高级技术之前,让我们先建立基础:
- 角色定义 → LLM应该扮演什么角色?
示例:“你是一位专门从事时间序列预测的数据科学家。” - 任务明确性 → 它应该做什么?
示例:“生成一个使用Prophet进行周销售预测的Python函数。” - 约束条件 → 它应该遵循哪些规则?
示例:“将预测限制在12周内,并仅返回Python代码。” - 上下文 → 它需要哪些背景信息?
示例:“这是CSV的标题:['date', 'sales', 'region']。使用'date'作为时间列。” - 输出格式 → 答案应该如何结构化?
示例:“以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 → 提取关键发现。
- 提示2 → 概括方法。
- 提示3 → 生成最终的高管摘要。
这种模块化方法更容易调试且更具可扩展性。
3.9 负面提示
告诉模型不要做什么。
示例:
用简单的术语解释随机森林。
不要使用数学公式。
不要超过三段。
这减少了无关的延伸。
3.10 自动化优化提示
手动提示对于一次性查询来说是可以的。但对于工作流程,你需要自动化。
- 使用Python脚本生成提示的不同变体。
- 使用日志记录跟踪模型的响应。
- 对提示进行A/B测试以衡量哪种提示产生更高的准确性。
示例(Python片段):
prompts = [
"用三个要点总结这段文字:",
"提供一个简洁的三点总结:",
"给我这段文档的三个要点:"
]
for p in prompts:
response = llm_api(prompt=p + text)
log(p, response)
这样,你就像调整超参数一样来优化提示。
4、常见的提示工程错误
我们也要讨论什么是不应该做的:
- 提示过度加载 → 如果一次问10个问题,模型可能会错过一半。
- 缺乏规范 → “总结这个”而不指定长度、风格或重点 = 模糊输出。
- 忽视迭代 → 第一个提示很少是最好的。像调试代码一样迭代。
- 盲目信任输出 → 总是验证事实的正确性,特别是在关键领域。
5、数据科学工作流程的实际应用
由于这是数据科学集体,让我们将技术锚定在实际用例中:
- SQL生成: 使用表模式示例的少样本提示。
- 数据清洗: 作为“数据整理者”的角色提示,逐步推理。
- 探索性数据分析(EDA): 思维链生成假设,然后自动生成可视化代码。
- 文档: 使用分隔符提示自动生成函数文档字符串。
- 报告写作: 使用提示链生成结构化的高管摘要。
这些并不是未来用例——它们是日常生产力的提升。
6、提示工程的未来
随着模型的改进,提示工程会变得过时吗?
不完全是。将其视为人工智能的用户界面设计。模型会变得更聪明,但人类始终需要:
- 明确地定义意图。
- 将混乱的目标转化为结构化的输入。
- 优化效率、一致性和自动化。
可能发生改变的是工具:内置提示测试的IDE、监控仪表板和共享提示库。但核心技能——有效地与LLM沟通——将保持不变。
7、结束语
提示工程是艺术与科学的结合。
- 艺术在于清晰、创造性且富有同理心地提出问题。
- 科学在于像其他系统一样构建、测试和优化提示。
回顾一下,最实用的技术如下:
- 角色提示
- 少样本学习
- 思维链
- ReAct推理
- 自洽性
- 指令层次结构
- 分隔符和格式
- 提示链
- 负面提示
- 自动化优化
掌握这些将使你不仅成为一个更好的提示撰写者,而且成为一个更有效的数据科学家、开发者或AI从业者。
所以下次你打开你的LLM界面时,记住:这不是关于与聊天机器人交谈。而是关于设计一场对话。
如果你把它当作工程来看待,你会得到感觉像魔法的结果。
原文链接:Practical Prompt Engineering Techniques for LLMs
汇智网翻译整理,转载请标明出处