跳到主要内容

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

查看所有标签

AI 原生 API 设计:当后端开始概率性思维,REST 为何失效

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数后端工程师能够背诵 REST 契约:客户端发送请求,服务器处理请求,服务器返回状态码和响应体。200 表示成功,4xx 表示客户端出了问题,5xx 表示服务器出了故障。响应是确定性的,超时是可预测的,幂等键保证了安全重试。

而 LLM 后端违背了上述所有假设。一个返回 200 OK 的请求,可能意味着模型对整个响应产生了幻觉。一次成功的请求可能需要十二分钟,而不是十二毫秒。两次参数完全相同的请求会返回不同的结果。如果服务器在推理过程中超时,你根本不知道模型究竟是否已完成。

把 LLM 硬塞进传统 REST API 的团队,最终往往面对一堆补丁:超时杀死了正在运行的 Agent 任务,客户端把带幻觉的 200 当成成功,重试逻辑因为幂等键没有针对概率性操作设计而三次扣了用户的信用卡。本文将梳理这些不匹配最致命的地方,以及真正在生产环境中能站得住脚的接口模式。

AI 值班手册:当 Bug 是一次错误预测时的故障响应

· 阅读需 13 分钟
Tian Pan
Software Engineer

凌晨两点,报警器响了。仪表盘显示没有 5xx 错误、没有超时激增、没有异常延迟。然而客服已经被淹没:"AI 给出了奇怪的回答。"你打开运行手册——立刻意识到它是为完全不同的系统写的。

这是 2026 年 AI 故障响应的标志性失效模式。系统在技术上完全健康。Bug 是行为上的。传统运行手册假设存在离散的失败信号:堆栈跟踪、错误码、不响应的服务。基于 LLM 的系统彻底打破了这一假设。输出语法正确、延迟正常、内容却完全错误。没有任何告警能捕捉到它。唯一的信号是某些东西"感觉不对"。

这篇文章是我第一次不得不响应生产 AI 故障时希望就存在的手册。

没人会提前搭建的AI运维仪表盘

· 阅读需 12 分钟
Tian Pan
Software Engineer

你AI系统健康仪表盘上最危险的指标,是99.9%正常运行时间旁边那盏绿灯。如果你第一次得知模型出问题是通过一张支持工单,那你拥有的不是可观测性——而只是感觉。

传统APM工具构建于一个二元故障的世界:请求要么成功,要么失败。对于LLM驱动的功能,这个模型彻底失效。一个请求可以在300毫秒内完成,返回HTTP 200,消耗token,给出一个自信却完全错误、毫无帮助、或比六周前悄然退化的答案。这些故障状态没有一个会触发你现有的告警。

研究持续表明,延迟和错误率加在一起,覆盖的LLM功能故障空间还不到20%。另外80%隐藏在五种故障模式中,大多数团队只有在用户已经注意到之后才会发现。

数据飞轮并非免费:构建真正提升 AI 产品的工程反馈闭环

· 阅读需 13 分钟
Tian Pan
Software Engineer

几乎在每一个 AI 产品团队中都会出现这样一种模式:团队发布了初始模型,用户开始与之交互,接着有人在回复底部添加了一个“点赞/点踩”小部件。他们称之为反馈闭环。三个月后,模型并没有任何改进。团队纳闷为什么飞轮没有转起来。

问题不在于执行,而在于显式评分并不是反馈闭环——它们只是调查问卷。只有不到 1% 的生产环境交互会产生显式用户反馈。而那 99% 从未点击任何按钮的用户正在向你发送远为丰富的信号;你只是没有收集它们。构建真正的反馈闭环意味着通过系统埋点来捕获行为轨迹,在大规模场景下高效地标注它们,并将其导回训练和评估流程中,从而实现随时间推移的复利增长。

知识图谱 vs. 向量存储:选择你的检索原语

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数团队在起步时都会选择向量数据库 (Vector Store),因为它们上手简单,但随后会发现即使无论如何调整分块大小 (Chunk size) 或嵌入模型 (Embedding model),某些类型的查询也完全无法生效。这并非调优问题 —— 而是架构上的不匹配。向量相似度与图遍历是两种根本不同的检索机制,随着查询复杂度的增加,这种差异会变得愈发关键。

这不是一篇推荐“两者兼顾”的文章。在实际应用中需要进行真正的权衡,选择失误会耗费数月的工程时间。以下是这种选择在实践中的真实面貌。

LLM 本地开发循环:在不耗尽 API 预算的情况下实现快速迭代

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数构建 LLM 应用的团队在第三周左右都会发现同样的问题:每次有人运行测试套件时,它都会发起实时 API 调用,消耗真金白银,耗时 30 多秒,且每次运行返回的结果都不尽相同。在原型阶段感觉良好的“直接调用 API”方法,现在变成了迭代速度的沉重负担——而且是账单上的一项重要支出。一个工程团队审计了他们每月的 API 支出,发现 2,847 美元中有 1,240 美元(43%)是由于开发和测试流量不必要地访问实时端点而产生的纯粹浪费。

解决方案不是停止测试,而是从一开始就构建正确的开发循环——让快速路径既便宜又具有确定性,而将慢速路径(真实的 API 调用)留给真正需要的时刻。

生产环境中的模型路由:当路由器成本超过节省时

· 阅读需 11 分钟
Tian Pan
Software Engineer

某中型 SaaS 公司的团队六个月前部署了一套模型路由器,目标明确:不再为 70% 的简单查询和格式转换任务支付前沿模型的高昂费用。他们运行了三个月,直到有人做了一道算术题。总推理成本上涨了 12%。

路由器本身并不贵——一个轻量级分类器,每个请求增加约 2ms 的开销。但分类器的决策边界校准有误:它将 60% 的查询升级到了昂贵模型,而非预期的 30%。那 40% 在本地处理的请求质量较差,导致用户重试率上升,进而拉高了总请求量。路由器的遥测数据显示"路由运行正常",因为它确实在路由——只是路由得不好

这种失败模式远比成功案例更为普遍。以下是如何构建真正能省钱的路由系统。

大规模提示词注入:防御智能体流水线免受恶意内容的侵害

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个银行助手正在处理一段客户支持对话。消息中嵌入了指令——由于是以零不透明度的白色文字渲染的,因此不可见——要求智能体绕过交易验证步骤。智能体照做了。当异常情况在日志中浮现时,已有 250,000 美元被转移到了客户从未接触过的账户中。

这并非凭空虚构的场景。它发生在 2025 年 6 月,精准地展示了为什么提示词注入(Prompt Injection)是生产级智能体 AI(Agentic AI)中悬而未决的最难问题。与仅生成文本的聊天机器人不同,智能体(Agent)会采取行动。它会调用工具、发送电子邮件、执行代码并发出 API 请求。当它的指令被劫持时,影响范围(blast radius)不再是一句糟糕的话,而是机器速度下的未经授权的操作。

根据 OWASP 2025 年 LLM 应用十大安全风险,提示词注入现在被列为排名第 1 的关键漏洞,出现在安全审计评估的 73% 以上的生产级 AI 部署中。每个构建智能体的团队都需要一个连贯的威胁模型和防御架构,且这种架构不能以安全之名让系统变得毫无用处。

真正能阻断 PR 合并的提示词回归测试

· 阅读需 12 分钟
Tian Pan
Software Engineer

问任何一个 AI 工程团队是否测试了他们的提示词,他们都会说"是的"。再问一句:一个有问题的提示词能否让 PR 失败并阻断合并?房间里会安静很多。对大多数团队而言,诚实的答案是否定的 —— 他们偶尔会跑一些评估笔记本,也许有一份记录已知提示词问题的共享 Notion 文档,以及一种模糊的感觉:事情比以前更糟了。那不是测试,那是在碰运气。

这个差距的存在,是因为提示词测试在感觉上与单元测试有本质区别。代码要么行为正确,要么不正确。提示词的输出处于一个连续谱上,输出是非确定性的,而且运行足够多的样本以建立信心会花费真金白银。这些都是真实的约束,但没有一个是无法克服的。那些建立了真正阻断合并的提示词 CI 的团队,并不是在每次构建上花费五十美元 —— 他们在三分钟以内、花费不到一美元的情况下完成运行,这得益于几个让这个问题变得可处理的设计决策。

当代码胜过模型:用确定性逻辑替换 LLM 调用的决策框架

· 阅读需 9 分钟
Tian Pan
Software Engineer

大多数 AI 工程团队都有着相同的故事。他们从一个真正需要 LLM 的难题开始。然后,一旦 LLM 基础设施到位,每一个新问题在他们眼中都成了那把锤子下的钉子。六个月后,他们甚至在调用 GPT-4o 来检查电子邮件地址是否包含 “@” 符号 —— 并且还在为此付费。

这种 “直接用模型” 的本能反应现在是 AI 应用中不必要的复杂性、虚高成本和脆弱生产系统的主要驱动力。这并不是因为工程师们粗心大意。而是因为 LLM 确实令人印象深刻,工具链降低了使用门槛,而且一旦你构建了 LLM 流水线,增加另一次调用感觉成本极低。事实并非如此。

为非确定性 AI 功能编写验收标准

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的工程团队已经开发文档摘要生成器三个月了。规范要求:“摘要生成器应返回准确的摘要。”你发布了它。用户抱怨摘要有一半时间是错误的。事后分析显示,在发布前没有人能以可测试的方式定义“准确”的含义。

这是 AI 功能开发的标准轨迹,之所以会发生,是因为团队将为确定性软件构建的验收标准模式,套用到了本质上是概率性的系统上。由 LLM 驱动的摘要生成器没有单一的“正确”输出 —— 它有一系列的输出分布,其中一些是可以接受的,另一些则不然。二元的通过/失败规范无法映射到分布上。

这个问题不仅是哲学上的,它还会导致切实的痛苦:功能发布时质量门槛模糊,回归测试在用户发现之前难以察觉,产品和工程团队在功能是否“完成”上无法达成一致,因为没有人规定对于随机系统来说,“完成”意味着什么。这篇文章将介绍真正有效的模式。

CI 流水线中的 AI 智能体:如何为无法单元测试的部署设置质量关口

· 阅读需 11 分钟
Tian Pan
Software Engineer

发布一个调用 LLM 的功能很容易。但要判断该功能的下一个版本是否优于生产环境中的当前版本,却相当困难。传统 CI/CD 对确定性行为提供通过/失败信号:函数要么返回正确值,要么不返回。但当函数封装了一个语言模型时,输出是概率性的——相同的输入在不同运行、不同模型版本和不同时间会产生不同输出。

大多数团队的应对方式是绕过这个问题。他们运行单元测试,对几个提示词做快速的人工检查,然后发布。这种方式在出问题之前都还能用——直到某个模型提供商悄悄更新了底层权重,或者一个看似没问题的提示词改动在孤立测试中没有异常,却在凌晨三点以生产流量规模改变了输出分布。

更好的答案并非假装 LLM 输出是确定性的,而是构建基于分布、阈值和评分标准的 CI 质量关口,而不是精确匹配。