跳到主要内容

678 篇博文 含有标签「ai-engineering」

查看所有标签

LLM 成本预测:多数团队在上线前都会忽略的估算难题

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个团队发布了一款支持聊天机器人。在测试阶段,每月账单看起来还在可控范围内——工程团队演示期间仅花费了几百美元。上线三周后,发票寄到了:4.7 万美元。没人虚报 Token 数量,也没人算错账。生产环境的工作负载与他们模拟的完全不是一回事。

这种模式在不断重复。团队估算 LLM 成本的方式就像估算数据库查询成本一样——通过测量一个典型的请求并乘以预期访问量。这种思维模型在 LLM 上彻底失效了,因为两个最大的成本驱动因素(输出 Token 长度和工具调用开销)是在推理阶段决定的,其行为在设计阶段无法完全预测。

本文讨论的是如何在发布前进行更好的预测,而不是在账单到期后如何优化。

LLM 作为数据工程师:AI 驱动的 ETL 中的静默失败

· 阅读需 13 分钟
Tian Pan
Software Engineer

你手写的 ETL 管道处理了 95% 的记录。那些边界情况——带有逗号的货币字符串、格式不一致的日期、不统一的国家代码——流向了你的数据仓库,并悄悄地破坏了你的仪表板。直到季度报告看起来不对劲时,才有人注意到。你又在管道中添加了一个特殊情况。循环往复。

LLM 可以解决这个问题。它们能从原始样本中推断模式(schema),处理任何工程师都预料不到的杂乱边界情况,并能以极短的开发时间将非结构化文档转换为结构化记录。已经有几个团队推出了这种方案。其中一些团队也经历过 LLM 悄无声息地将 "$1,200,000" 转换成 1200 而不是 1200000,在结构完全有效的情况下将严重程度分数从 "high" 切换到 "low",以及以通过了所有模式检查的方式连接了错误的业务外键。

问题不在于 LLM 不擅长数据工程。而在于它们的失败模式对 ETL 来说恰恰是完全错误的:高置信度、不报错、且输出结构有效。

模型弃用本质上是系统迁移:如何应对模型供应商的停用计划

· 阅读需 13 分钟
Tian Pan
Software Engineer

一家运行生产级 AI 分诊助手的医疗保健公司收到了一封令所有团队都心生畏惧的邮件:他们的推理服务商将在 90 天后停用他们正在使用的模型。他们更新了模型字符串,进行了快速的手动冒烟测试,然后发布了替代版本。三周后,新模型开始主动提供未经请求的诊断意见。Token 使用量暴增了 5 倍。整个 Prompt 模板由于新模型对指令表述的解读不同而失效。由于输出 Schema 发生了偏移,JSON 解析也宣告失败。

这并非个案。如果你仅仅将模型停用视为一种配置变更,而不是一次系统迁移,那么这就是你在模型停用周期中的常态体验。

模型升级即破坏性变更:你的部署流水线遗漏了什么

· 阅读需 14 分钟
Tian Pan
Software Engineer

当 OpenAI 在其较新的模型中弃用 max_tokens 而改用 max_completion_tokens 时,已经稳定运行了数月的应用程序开始返回 400 错误。没有任何公告触发警报,你的代码中也没有错误。模型改变了,但你的假设没有变。这是将模型升级视为破坏性变更(Breaking Change)的典型案例 —— 只不过大多数变更更加隐蔽,因此更难被发现。

基础模型的更新并不遵循与库发布相同的“社会契约”。Git 提交中没有 BREAKING CHANGE: 前缀。没有语义化版本(SemVer)的提升来告知你的 CI 流程去报错。输出格式变窄、语调偏移、JSON 结构重组、推理路径缩短 —— 下游消费者是通过逐渐恶化的用户体验和混乱的数据分析慢慢发现这些问题的,而不是通过抛出的异常。

多用户 AI 会话:没人在设计阶段考虑的上下文归属问题

· 阅读需 10 分钟
Tian Pan
Software Engineer

2024 年 8 月,安全研究人员发现 Slack AI 在回答查询时会将公开频道和私密频道的内容同时拉入同一个上下文窗口。公开频道中的攻击者可以精心构造一条消息,当 Slack AI 摄取该消息时,就会将指令注入受害者的会话——由于 Slack AI 不引用来源,由此导致的数据外泄几乎无从追踪。这种攻击甚至可以泄露私信中嵌入的 API 密钥。Slack 在负责任披露后修复了这一问题。

这并不是传统意义上的漏洞。它是将上下文视为无用户访问控制的共享可变资源所带来的后果。而这正是大多数正在构建共享 AI 助手的团队现在都在犯的错误,只是更加悄无声息而已。

多语言 Token 税:为非英语用户构建 AI 的实际成本

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的产品路线图写着“进军日本和巴西市场”。你的财务模型显示 LLM API 支出项为每月 $X。这两个数字都是错的,而且你直到国际化推广前几周才会发现这一点。

Tokenization(分词)——将用户文本转换为模型可处理的整数的步骤——对英语有着深刻的偏向。一段日语文本所需的 Token 数量可能是同义英语句子的 2–8 倍。这个倍数直接影响到 API 成本、上下文窗口余量和响应延迟。那些根据英语基准测试来模拟 AI 预算,然后直接切换语言选项的团队,通常会被比预期高出 3–5 倍的账单吓一跳。

复合 AI 系统中的流水线归因:在薄弱环节找到你之前先找到它

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的检索精度提升了。重排分数改善了。生成器的忠实度指标比上个季度更好。然而用户却在抱怨系统越来越差。

这是生产级 AI 工程中最令人困惑的故障模式之一,而且发生频率远超团队预期。当你构建一个复合 AI 系统——检索结果送入重排器,重排器送入生成器,生成器再送入验证器——你就继承了一个根本性的归因问题。端到端质量是唯一真正重要的指标,却也是最难付诸行动的。你无法修复"系统变差了"。你需要修复某个特定组件。而在一个四阶段流水线中,这件事出乎意料地困难。

生产分布差距:为什么内部测试人员找不到用户遇到的Bug

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 AI 功能在内部测试中表现出色。工程师拍手叫好,产品经理竖起大拇指,评估套件在基准测试中显示了 94% 的准确率。然后你上线了,两周之内,用户就遇到了你从未见过的故障模式——错误的答案、混乱的输出,以及让模型显得极为糟糕的边缘情况。

这就是生产分布差距(production distribution gap)。这不是一个新问题,但对 AI 系统来说,它比确定性软件严重得多。理解其背后的原因——并制定具体的解决方案——是决定 AI 功能悄然侵蚀用户信任还是随着使用不断改进的关键分水岭。

零样本、少样本还是思维链:生产环境下的决策框架

· 阅读需 11 分钟
Tian Pan
Software Engineer

询问大多数工程师为什么在生产环境中使用 Few-shot 提示词,你会听到类似这样的回答:“它看起来效果更好。” 询问他们为什么要加入思维链(Chain-of-thought),答案通常是:“我读到过它有助于推理。” 这些回答并不完全错误。但它们只是披着工程外壳的惯例。关于每种提示词技术何时真正胜出的证据已经足够具体,你可以系统性地做出决定——而正确的选择可以将 Token 成本降低 60–80%,或者防止你甚至没察觉到的性能退化。

以下是研究结果,以及如何将其应用到你的技术栈中。

测试检索-生成接缝:RAG 系统中的集成测试盲区

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的检索器在 94% 的情况下都能返回正确文档。你的 LLM 在给定良好上下文时能正确回答 96% 的问题。可以上线了。能出什么问题?

把这两个数字相乘:0.94 × 0.96 = 0.90。在不考虑任何边缘情况、提示词格式问题、token 截断,以及检索器与正确文档一起返回的干扰文档之前,你就已经损失了 10% 的查询。但更深层的问题不是这个算术——而是你的单元测试永远不会发现这一点。检索器在隔离测试中通过了。生成器在隔离测试中通过了。失败的是两者的组合,而大多数团队对此没有任何测试。

这就是检索-生成接缝:检索器交付内容与生成器实际能够使用的内容之间的接口。它是生产 RAG 系统中测试最不充分的边界,也是大多数故障的根源。

推理模型经济学:思维链何时物有所值

· 阅读需 11 分钟
Tian Pan
Software Engineer

一家中型 SaaS 公司的团队在阅读了一些基准测试后,在每个提示词中都加入了“让我们一步步思考”(let's think step by step)。他们的响应质量有了明显的提升——但他们的 LLM 账单也翻了三倍。当他们深入研究日志时,发现大部分额外的 Token 都花在了支持单分类和会议记录总结等任务上,而在这些任务中,额外的推理对输出质量并没有明显的改善。

扩展思考模型对于难题来说是真正的能力飞跃。但如果不加区别地应用,它们也是一个可靠的成本陷阱。一个经过良好调优的推理部署与一个昂贵的部署之间的区别通常归结为一点:理解哪些任务真正受益于思维链(chain-of-thought),而哪些任务只是在为显而易见步骤的冗长叙述买单。

从影子模式到自动驾驶:AI功能自主性的准备框架

· 阅读需 11 分钟
Tian Pan
Software Engineer

某金融科技公司首次部署AI交易审批代理时,产品团队在一周离线评估结果良好后便确信模型已准备好自主运行。他们将其推进至副驾驶模式——代理提出审批建议,人工可以覆盖——审批率看起来很不错。三周后,一个规律浮现:模型在系统性地低批准来自非英语用户的交易,这种偏差与姓名模式相关,而非风险信号。在上线前没有人检查过分段层级的性能。这不是欺诈检测失败,而是阶段门控失败。

大多数团队原则上理解AI功能应该渐进式上线。但他们缺少的是一个具体的工程框架来定义"渐进"的实际含义:哪些指标解锁每个阶段、在升级之前需要哪些监控,以及什么触发自动回滚。没有这些,自主性升级就变成了组织层面的乐观主义行为,而非可重复的工程决策。