跳到主要内容

158 篇博文 含有标签「prompt-engineering」

查看所有标签

你的 Prompt 是一笔没有类型系统的负债

· 阅读需 11 分钟
Tian Pan
Software Engineer

三个词差点毁掉一个生产功能。一个团队在例行的文案优化中,向一个面向客户的 prompt 添加了"请简洁回答"。四小时内,结构化输出错误率急剧攀升,下游解析崩溃,创收工作流陷入停滞。修复方案很简单——回退变更。噩梦在于他们根本不知道是哪次变更导致了问题,因为这个 prompt 以硬编码字符串常量的形式存在,没有版本历史,没有测试,也没有回滚机制。这个事故本可以通过大多数团队至今仍未构建的基础设施来预防。

Prompt 现在是你系统中最重要、却治理最薄弱的代码。

正确的 Prompt 版本管理:将 LLM 指令视为生产软件

· 阅读需 9 分钟
Tian Pan
Software Engineer

三个词。就这么多。

一个团队在现有 prompt 中添加了三个词,目的是改善"对话流畅性"——这个调整在 playground 里看起来无害。几个小时内,结构化输出错误率急剧攀升,一个创收工作流停止运作,工程师们争相还原 prompt 改动前的内容。没有版本历史,没有回滚机制,只有一条 Slack 消息,来自某个"大致记得"内容的人,以及一份与 Google 文档中过时副本的 diff。

这不是假设场景,而是几乎每个规模化交付 LLM 功能的组织都在重复经历的模式。Prompt 从应用代码中的字符串起步,经过非正式编辑演化,积累了无文档记录的微小调整,最终到达无人确信生产环境里运行着什么、也不知道为何如此表现的状态。

解决方案不是一个新工具,而是对团队一直以配置文件方式对待的东西施加工程纪律。

系统提示词蔓延:当你的 AI 指令变成 Bug 的源头

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数团队都是通过惨痛的教训才发现系统提示词蔓延(System Prompt Sprawl)问题的。AI 功能发布了,用户发现了边缘情况,而修复方案总是如出一辙:增加另一条指令。六个月后,你就有了一个 4,000 token 的系统提示词,没人能完全记在脑子里。模型开始执行一些并非初衷的任务——不是因为它坏了,而是因为你写的指令之间存在细微的矛盾,而模型正悄悄地代表你处理这些矛盾。

蔓延并不是一种灾难性的故障。这正是它的危险之处。当你的指令发生冲突时,模型不会崩溃或抛出错误。它会做出选择,通常很流利,通常看起来很合理,而且通常错误得刚好足以成为真正的支持负担。

时间上下文注入:让 LLM 真正知道今天是几号

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 LLM 功能已经上线。用户开始问那些涉及时间的问题——"最新政策是什么?""帮我总结本周发生的事""这条信息还是最新的吗?"——模型自信、流畅地回答,却答错了。

模型不知道今天是几号。它从来都不知道。你熟悉的聊天界面让你忘了这件事,因为那些界面在背后悄悄注入了当前日期。但你的 API 集成不会。你发布的系统在不知道自己处于时间轴哪个位置的情况下,仍然在推理时间相关的问题——这是一类 bug,会在你还没想到去找它之前就出现在生产环境里。

智能体规范差距:为什么你的智能体忽略你写的内容

· 阅读需 14 分钟
Tian Pan
Software Engineer

你写了一份详尽的规范。你描述了任务,列出了约束条件,并给出了示例。Agent 运行了——但做了一些与你预期完全不同的事情。

这就是规范差距 (specification gap):你写的指令与 Agent 理解的任务之间的距离。这不是模型能力的问题,而是规范的问题。2025 年发布的关于多 Agent 系统失败的研究发现,与规范相关的议题占所有失败的 41.77%,而 79% 的生产环境故障可以追溯到任务是如何规范化的,而不是模型能做什么。

大多数编写 Agent 规范的团队都在犯同一类错误:像给一个称职的同事写邮件一样写指令,然后期望一个没有任何共享上下文的自主系统在数千次运行中正确执行这些指令。

能力激发差距:升级到更新模型为何会破坏你的产品

· 阅读需 10 分钟
Tian Pan
Software Engineer

你升级到了最新模型,结果产品却变差了。不是灾难性的崩溃——新模型在基准测试中得分更高,能处理更难的问题,拒绝的不该拒绝的内容也更少了。但你的产品实际需要的那项能力?退化了。你精心调优的提示现在产出的是模棱两可、过度修饰的输出,而你需要的是明确的断言。你的领域特定格式指令被"贴心地改进"成了通用格式。那种让工作流程可靠运行的严格指令遵从感,现在像是在自动驾驶。

这就是能力激发差距:模型在原则上能做什么与它在生产环境中你的提示下实际做什么之间的鸿沟。而随着每一轮以安全为重点的训练循环,这个差距系统性地扩大。

对话设计师在 AI 产品质量中的隐形角色

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数工程团队把系统提示词当作配置文件对待——需要快速迭代的技术字符串,存储在环境变量中,部署时的仪式感和修改一个超时值差不多。系统提示词有内联注释。错误提示一条也没有。能力披露就是产品经理在上线当天往 Notion 文档里打的那段话。

这正是整整一类 AI 产品故障的根源——这类问题不会出现在你的评估套件里。模型回答了问题,延迟没有问题,JSON 验证通过了。但用户在三次会话之后就停止信任这款产品,周活跃用户曲线再也没能回升。

缺失的那门学科叫对话设计。它影响输出质量的方式,大多数工程监控在架构上是盲目的。

提示词考古:从无文档遗留提示词中还原设计意图

· 阅读需 10 分钟
Tian Pan
Software Engineer

你加入了一个团队,他们已经在生产环境中运行某个 LLM 功能十八个月了。这个功能运作正常——用户喜欢它,业务也在乎它——但没有人能确切解释这个提示词做了什么,或者为何要这样写。编写它的工程师已经离职。当时讨论它的 Slack 消息埋在某个不复存在的频道里。提示词躺在数据库记录中,长达 900 个 token,没有注释,提交信息除了"更新提示词"什么都没有。

而现在,你被要求去修改它。

这种情况比业界承认的要普遍得多。提示词被当成配置值来对待:写起来很快,代码审查中看不到,一旦跑通就被遗忘。区别在于,配置错误的 feature flag 会立即暴露问题,而配置错误的提示词会在数周内悄悄地降低某些边缘情况的处理质量,直到有人注意到。

提示词债务螺旋:单行补丁如何摧毁生产环境的提示词

· 阅读需 10 分钟
Tian Pan
Software Engineer

进入生产环境六个月后,你面向客户的 LLM 功能的系统 Prompt 已从最初清爽的 11 行增长到超过 400 个 token,充斥着各种条件指令、对冲表述和异常处理。质量明显比发布时更差,但当时的每一次单独修改似乎都是合理的。没人知道哪些条款相互冲突,也没人知道其中一半是否仍然必要。没人敢动它。

这就是 Prompt 债务螺旋——大多数处于生产阶段的团队已经深陷其中。

提示词治理问题:管理存在于代码库之外的业务逻辑

· 阅读需 10 分钟
Tian Pan
Software Engineer

一位初级产品经理在产品冲刺期间编辑了一个面向客户的提示词,让它"听起来更友好"。两周后,一位后端工程师调整了同一个提示词以修复格式问题。一位机器学习工程师,对这两次更改毫不知情,在一条单独的系统消息中添加了思维链指令,这与产品经理的编辑产生了冲突。这些变更都没有工单,都没有审查人,也都没有回滚计划。

这就是大多数团队管理提示词的方式。在五个提示词时,这令人烦恼。在五十个时,这是一个隐患。

提示词本地化技术债:隐藏在多语言 AI 产品中的无声质量梯度

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 AI 功能上线时,任务成功率达到了 91%。你运行了评估,迭代了提示词,并不断调优,直到达到质量标准。然后你面向全球发布了——三个月后,一名东京的用户提交了一个支持工单,称你的 AI “不太理解”他们的输入。你的日本用户一直都在默默忍受一个比英语用户体验差 15–20 个百分点的功能。你的团队中没有人注意到这一点,因为没有人去衡量它。

这就是提示词本地化债务(Prompt Localization Debt):你为之构建 AI 的语言与用户所使用的其他每种语言之间不断累积的性能差距。它不会在仪表盘上显现,也不会导致服务中断。它只是静悄悄地制造出二等公民用户。

共享提示服务问题:多团队 LLM 平台与依赖噩梦

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个周二下午,某中型 AI 初创公司的平台团队合并了一个对共享系统提示的"小幅改进"。到周四,三个独立的产品团队相继提交了 bug。一个团队的评估套件准确率从 87% 跌至 61%。另一个团队的 RAG 流水线开始产生幻觉引用。第三个团队的安全过滤器完全停止拦截某类有害输出。四天后,没有人把这些问题联系起来。

这就是共享提示服务问题,任何拥有多个团队基于同一 LLM 平台进行开发的组织都会遭遇它。

共享提示服务问题:多团队 LLM 平台与依赖噩梦