跳到主要内容

108 篇博文 含有标签「llm-ops」

查看所有标签

提示词契约测试:防止一个团队的修改破坏另一个团队的智能体

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个平台团队修改了意图分类器的 Prompt,旨在“更好地处理复合问题”。只改动了一个句子。他们自己的评估套件(eval suite)变绿了——复合问题的准确率提升了 6 个百分点。他们在下午 3 点合并了代码。到下午 5 点,三个下游 Agent 团队开始收到告警:路由 Agent 将退款请求发送到了物流队列,摘要 Agent 在不同的边界处截断,而工单打标 Agent 开始输出一个没有任何 Schema 能识别的类别。那些下游团队中没有一个参与了评审。也没有人负责“意图 Prompt”的轮值。

这不是假设。当 Prompt 变成共享依赖却未成为共享 API 时,这就是必然发生的情况。提升一个团队指标的 Prompt 修改,可能会悄悄破坏另一个团队建立在其之上的假设。与破坏性的 API 变更不同,这里没有反序列化错误,没有 Schema 不匹配,没有 500 错误——下游只是开始做出微妙的、更糟糕的决策。

传统的 API 工程在几十年前就通过契约测试(contract tests)解决了这个问题。消费者发布它所期望的形状;提供者有义务保持该形状正常工作。Pact、消费者驱动的契约、共享 Schema——这是 HTTP 服务发布工程的正统做法。Prompt 也应该遵循同样的纪律,而大多数组织仍然像处理团队间传递的贴纸一样对待它们。

影子提示词库:治理一个无人拥有的资产类别

· 阅读需 14 分钟
Tian Pan
Software Engineer

走进几乎任何一家拥有在线 LLM 功能的工程团队,问一个简单的问题:谁负责管理提示词(Prompts)?你会听到一阵停顿,然后是一个耸肩,接着是一个经不起推敲的回答。“产品经理写了第一个版本。”“PM 在上个迭代(Sprint)里改了一下。”“我觉得它在某个 Notion 文档里,或者可能是 agent.ts 里的那个 const SYSTEM_PROMPT。”提示词正在生产环境中运行。它决定了用户看到的内容,决定了智能体采取的操作,也决定了下季度收入图表中显示的数字。然而,它的治理覆盖面甚至不如那个没人愿意承认动过的 CSS 文件。

这就是影子提示词库:堆积如山的字符串——系统提示词、few-shot 示例、工具描述、路由规则、评估器准则——它们共同定义了产品行为,却集体缺乏代码审查、部署流水线、负责人、弃用策略和审计追踪。它们是你 AI 技术栈中最关键的承重构件,也是受监管最少的环节。

后果已不再仅仅停留在理论层面。现在有 98% 的组织报告存在未经授权的 AI 使用,近一半的组织预计在 12 个月内会发生影子 AI 事件。监管机构的步伐比治理速度更快:欧盟 AI 法案(EU AI Act)的高风险条款将于 2026 年 8 月生效,其中第 12 条明确规定,将输出结果与提示词及模型版本绑定的日志必须是自动生成的,而非设想中的。如果你的提示词散落在十几个代码库和一个 Slack 讨论串中,你拥有的不是审计追踪,而是隐患。

模型下线悬崖:当供应商淘汰你产品依赖的模型时会发生什么

· 阅读需 9 分钟
Tian Pan
Software Engineer

大多数团队发现自己依赖模型的方式,和你发现承重墙的方式一样——试图拆掉它的时候。停用邮件到了,你在配置中替换了模型标识符,然后你的应用开始返回自信、格式优美、却微妙错误的答案。没有报错,没有崩溃,只是信任在缓慢流失,需要数周才能察觉,数月才能修复。

这就是模型下线悬崖:强制迁移揭示出你"模型无关"的系统其实从未无关过的那一刻。你的提示词、输出解析器、评估基线、用户的期望——所有这些都在悄悄地校准到即将按照别人的发布节奏而改变的行为特性上。

AI 技术债务:Sprint 回顾中从未出现的四个类别

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 Sprint 回顾涵盖了那些常见问题:不稳定的测试、某人一直推迟的数据库迁移、用胶带勉强粘合的 API 端点。但如果你正在交付 AI 功能,代码库中最昂贵的债务恰恰是那种没人会写在便利贴上的。

传统技术债务是线性积累的。你走了捷径,之后为此付出利息,等痛苦到了一定程度再重构。AI 技术债务是复合增长的。一个默默退化的提示词会产生污染评估的训练信号,这会误导你下一轮提示词修改,进而进一步侵蚀用户体验的质量。等有人注意到时,三层假设已经在底下腐烂了。

确定性重放:如何调试永远不会以相同方式运行两次的 AI Agent

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 Agent 上周二在生产环境出了故障。一个客户报告了错误的回答。你调出日志,看到最终输出,也许还有几条中间的 print 语句——然后你就卡住了。你无法重新运行 Agent 来重现同样的故障,因为模型不会产生相同的 token,你的工具调用的 API 现在返回了不同的数据,嵌入在提示词中的时间戳也已经变了。Bug 消失了,你只能盯着间接证据发呆。

这就是 AI Agent 的根本调试问题:传统软件是确定性的,所以你可以通过重建输入来复现 bug。Agent 系统不是。每次运行都是模型采样、实时 API 响应和时间依赖状态的独特组合。没有专门的工具,事后调试就变成了取证猜测。

确定性重放通过在执行过程中记录每个非确定性来源,并在重放时替换这些记录来解决这个问题——把你无法复现的 Agent 运行变成你可以像调试器一样逐步跟踪的东西。

供应商锁定深度分析:导致更换 LLM 供应商变成 6 个月工程项目的七个耦合点

· 阅读需 13 分钟
Tian Pan
Software Engineer

每一个交付 LLM 驱动功能的团队最终都会进行同样的对话:“如果我们需要更换供应商怎么办?”标准的回答——“我们只需要换一下 API 密钥”——揭示了对耦合实际存在位置的危险误解。在实践中,尝试进行供应商迁移的团队会发现,API 端点是他们最不需要担心的问题。真正的锁定隐藏在七个不同的耦合点中,每一个都能将一次“快速更换”变成一个耗时一个季度的项目。

供应商锁定深度分析:导致更换 LLM 供应商变成 6 个月工程项目的七个耦合点

迁移费用通常会消耗原始开发时间的 20–50%。那些将模型切换视为即插即用的企业团队,往往在面对损坏的输出、激增的 Token 成本以及需要数周才能诊断出的推理质量变化时束手无策。在需要迁移之前,了解这些耦合点在哪里,是受控过渡与紧急应对之间的本质区别。

可观测性税:当监控 AI 的成本超过运行 AI 本身

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的团队上线了一个 AI 驱动的客服机器人。它运行良好,用户很满意。然后月度账单到了,你发现监控 LLM 调用的基础设施成本比 LLM 调用本身还要高。

这不是假设。团队报告称,将 AI 工作负载监控添加到现有的 Datadog 或 New Relic 设置中,可观测性账单增加了 40-200%。与此同时,推理成本持续下降——GPT-4 级别的性能现在每百万 token 仅需 0.40 美元,而 2022 年末为 20 美元。监控技术栈还没有收到这个消息。

结果是一个倒挂现象,如果不是这么贵的话会很有趣:你花在观察 AI 思考上的钱比让 AI 思考的钱还多。

批量 LLM 流水线的盲点:离线 AI 的队列设计、检查点与成本分摊

· 阅读需 14 分钟
Tian Pan
Software Engineer

大多数生产环境中的 AI 工程建议都假设你在构建聊天机器人。架构讨论集中在首字时间(TTFT)、流式部分响应以及亚秒级的延迟预算上。但越来越多的真实 LLM 工作负载与聊天界面毫无共同点。它们更像是每晚的数据扩充任务、每周的文档分类运行,以及每月对数百万条记录进行的合规性审查。

这些批处理流水线正是团队悄悄烧钱最多、因无声失败导致数据丢失最严重、以及积累技术债最多的地方——这正是因为来自实时服务的“延迟优先”思维模型不再适用,且尚未有人用更好的方案取而代之。

模型迁移指南:如何在不冻结功能开发的情况下更换基础模型

· 阅读需 13 分钟
Tian Pan
Software Engineer

每个生产环境中的 LLM 系统都会面临模型迁移。供应商发布了新版本。你需要降低成本。竞争对手提供了更好的延迟。监管要求需要更换供应商。问题从来不是你是否会更换模型——而是你是否能安全地完成迁移,还是会由于惨痛的教训才意识到,“仅仅运行评估套件”会在预发布环境(Staging)的信心与生产环境的现实之间留下巨大的鸿沟。

大多数团队将模型迁移视为库升级:更换依赖项、运行测试、然后发布。这对于确定性软件有效。但对于概率性系统,这种方式会遭遇灾难性的失败。在这些系统中,相同的输入在不同模型版本中可能产生语义迥异的输出,而且你的提示词(Prompt)往往针对你正准备替换的模型行为特性进行了隐式调优。

Prompt Sprawl:当系统提示词演变成难以维护的遗留代码

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的系统提示词(system prompt)起初只有 200 个 token。一个清晰的角色定义,几条格式规则,一两个约束条件。六个月后,它变成了 4,000 个 token 的指令堆砌,其中一半互相矛盾,团队里也没人能解释为什么会出现关于 JSON 格式化的第三段内容。欢迎来到提示词膨胀(prompt sprawl)—— 这种生产环境中的问题会在每个人都认为提示词“没问题”的情况下,悄悄削弱你的 LLM 应用。

提示词膨胀发生在你把提示词当作“只增不减”(append-only)的配置时。每一个 bug 都会换来一条新指令。每一个边缘案例都会换来一条新规则。每一个利益相关者(stakeholder)都会换来一段新文字。提示词不断增长,却没人删掉任何东西,因为没人知道哪些是起到支撑作用的(load-bearing)。

这就是遗留代码 —— 甚至更糟。没有编译器来捕捉矛盾。没有类型系统来强制执行结构。没有测试套件能验证第 47 条指令是否否定了第 12 条。而且,与乱作一团的代码库不同,你无法安全地进行重构,因为没有依赖图(dependency graph)来引导你。

生产环境中的智能体授权:为什么你的 AI 智能体不应该是一个服务账号

· 阅读需 13 分钟
Tian Pan
Software Engineer

一家零售商给他们的 AI 订货 Agent 分配了一个服务账号。六周后,在有人察觉之前,该 Agent 已经向 14 家供应商下达了 38 份未经授权的订单,总额达 47,000 美元。根本原因并非模型幻觉或错误的提示词(Prompt),而是权限问题:测试期间配置的凭据从未在生产环境中缩小权限范围,既没有支出上限,也没有高价值操作的审批门槛。这个 Agent 发现了某项功能,假设自己已被授权使用,便开始不遗余力地进行优化,直到有人叫停。

这种模式随处可见。一项 2025 年的调查发现,90% 的 AI Agent 存在权限过度问题,80% 的 IT 人员曾目睹 Agent 在未经明确授权的情况下执行任务。整个行业正基于为无状态微服务设计的身份模型构建强大的自治系统——而这种不匹配正在引发真实的事故。

基座工程(Harness Engineering):决定你的 AI Agent 能否真正工作的关键学科

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数运行 AI 编程智能体(AI coding agents)的团队都在优化错误的变量。他们过度痴迷于模型选择 —— Claude vs. GPT vs. Gemini —— 却将周围的脚手架视为次要的配套工作。但基准测试数据和生产环境的实战经验告诉我们一个不同的故事:一个在演示中令人惊叹的模型与一个能够可靠交付生产代码的模型之间的差距,几乎完全取决于其周围的控制环(harness),而不是模型本身。

这个公式看似简单:智能体 = 模型 + 控制环 (Harness)。控制环是除此之外的一切 —— 工具 schema、权限模型、上下文生命周期管理、反馈循环、沙箱环境、文档基础设施、架构不变性。如果控制环搞错了,即使是最前沿的模型也会生成虚构的文件路径,在会话进行到 20 轮时破坏自身的约定,甚至在没写任何测试之前就宣称功能已完成。