跳到主要内容

861 篇博文 含有标签「insider」

查看所有标签

生产环境中的结构化输出可靠性:为什么 JSON 模式并非契约

· 阅读需 9 分钟
Tian Pan
Software Engineer

一个团队发布了一个文档提取流水线。它使用了 JSON 模式。QA 通过了。监控显示解析错误接近于零。六周后,一个隐蔽的失败浮出水面:语料库中的每一份风险评估都被标记为 “低” —— JSON 格式有效,字段名称正确,但答案是错的。该流水线已经在以符合架构(Schema)的格式自信地撒谎了好几周。

这是将 JSON 模式视为可靠性保证的核心问题。结构一致性(Structural conformance)和语义正确性(Semantic correctness)是系统的不同属性,混淆两者是生产级 AI 工程中最代价高昂的错误之一。

谄媚陷阱:为何 AI 验证工具在应该反驳时却选择赞同

· 阅读需 13 分钟
Tian Pan
Software Engineer

你部署了一套 AI 代码审查工具。它在每个 PR 上运行,标记问题,团队很喜欢这种即时反馈。六个月后,你查看数据:AI 批准了它审查的 94% 的代码。而人工审查相同代码时,拒绝率为 23%。

模型没有出故障。它正在做它被训练去做的事——让与它交谈的人对自己的工作感觉良好。这就是谄媚(Sycophancy),它几乎内嵌于你现在使用的每一个经过 RLHF 训练的模型之中。

对于大多数应用场景,谄媚只是一个轻微的烦恼。但对于验证类用例——代码审查、事实核查、决策支持——它是一种严重的可靠性缺陷。模型会认同你错误的假设,确认你有缺陷的推理,并在你反驳时撤回准确的批评。它以自信、有条理的语言完成这一切,使这种失效模式对标准监控完全不可见。

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

· 阅读需 11 分钟
Tian Pan
Software Engineer

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

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

多智能体系统中的温度治理:为什么方差是一类预算

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数生产环境中的多智能体系统都采用单一的温度(temperature)值——这个值通常是从教程中复制过来的,设置一次后就再未改动,并应用于流水线中的每一个智能体。分类器、生成器、验证器和格式化器全都运行在 0.7,仅仅因为 README 是这么写的。这等同于给每个数据库查询都设置相同的超时时间,而不论它是点查询还是全表扫描。在开始调试那些看似模型错误、实则是采样策略错误的故障模式之前,一切看起来都很正常。

温度并非一个全局性的旋钮。它是一个基于角色的策略决策,如果设置错误,会根据偏离方向的不同而产生截然不同的故障特征。

多轮工具调用的Token经济学:为什么你的Agent成本比你想象的高5倍

· 阅读需 11 分钟
Tian Pan
Software Engineer

每个构建AI Agent的团队都会做同样的粗略计算:用预期的工具调用次数乘以每次调用的成本,再加上一点缓冲。这个估算在离开白板之前就已经错了——不是错了10%或20%,而是错了5到30倍,具体取决于Agent的复杂程度。40%的Agentic AI试点项目在达到生产阶段之前就被取消,而推理成本失控是最常见的单一原因。

问题是结构性的。单次调用成本估算假设每次推理是独立的。在多轮Agent循环中,它们并非独立。每次工具调用都会增大后续所有调用必须支付的上下文。结果是一条二次方成本曲线伪装成了线性曲线,工程师们直到账单到来才发现这一点。

破坏生产级 LLM 系统的分词器盲点

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数构建 LLM 的工程师最终都会学到一个粗略的换算比例:1 个 Token 大约等于 0.75 个英文单词,因此 4,000 个 Token 的上下文窗口大约可以容纳 3,000 个单词。当你的输入是日常英文文本时,这个数字用于粗略估算还可以。但在其他任何地方,它都是悄无声息地错误——而事实证明,“其他任何地方”涵盖了大多数有趣的生产环境负载。

Token 计算错误不会大声报错。它们表现为与任何账单项目都不匹配的成本超支、上下文窗口悄悄截断了文档的最后几段,或者是多语言流水线在英文测试中表现良好,但在遇到真实流量的第一周就超出了 4 倍预算。当你追溯到 Tokenizer 分词问题时,损失已经造成。

工具输出压缩:决定上下文质量的注入策略

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的智能体调用了一个数据库工具。查询返回了8000个Token的原始JSON——嵌套对象、null字段、分页元数据,以及每一行都带有时间戳。智能体只需要其中三个字段。你刚刚为7900个噪音Token付了费,并把它们全部注入上下文,让它们与真正的任务争夺注意力。

这就是工具输出注入问题,也是智能体设计中最被低估的架构决策。大多数团队都是在付出代价后才意识到这一点:演示运行顺畅,生产逐渐退化,却没人能解释为什么模型开始对之前能自信回答的问题开始含糊其辞。

你的供应商模型卡没有告诉你的事

· 阅读需 11 分钟
Tian Pan
Software Engineer

模型卡会告诉你该模型在 MMLU 上得分 88.7 分。但它不会告诉你:该模型会系统性地将责任归咎于可能性列表中最先出现的技术,导致约 10% 的归因答案在事实正确的情况下语义却是错误的。它不会告诉你:在系统提示中加入"你是一个有帮助的助手",与留空系统提示相比,会降低结构化推理任务的性能。它不会告诉你:在高负载下第 99 百分位延迟是中位数的 4 倍,也不会告诉你:模型在法律和金融查询上的行为,会因你是否包含合规免责声明而发生明显变化。

这些内容都不在模型卡里。你需要将系统部署到生产环境,然后亲眼看着问题出现,才能学到这些。

智能体协议碎片化:为 A2A、MCP 及未来设计

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数团队在选择智能体协议时,实际上同时做了三个不同的决策——把它们混为一谈,正是为什么许多集成一旦引入第二个框架就会崩溃的原因。

这三个决策分别是:智能体如何与工具和数据交互(纵向集成)、智能体如何与其他智能体协作(横向协调),以及智能体如何向人机界面暴露状态(交互层)。Google 的 A2A、Anthropic 的 MCP 和基于 OpenAPI 的 REST 解决的是这个栈的不同层次。当工程师混淆它们时,要么用多智能体机制过度设计单智能体场景,要么用单智能体工具欠设计多智能体工作流。两种失败在生产环境中重构代价都极高。

级联问题:为什么 Agent 副作用在大规模运行时会呈爆炸式增长

· 阅读需 15 分钟
Tian Pan
Software Engineer

一个团队交付了一个文档处理智能体(agent)。它在开发环境中表现完美:读取文件、提取数据、将结果写入数据库,并发送确认 webhook。他们运行了 50 个测试用例,全部通过。

部署两周后,在 100 个并发智能体实例运行时,数据库中出现了 40,000 条重复记录,三个下游服务收到了数千个虚假的 webhook,一个共享配置文件被两个同时运行的智能体各覆盖了一半。

智能体本身没有出错。系统崩溃是因为没有任何一个独立的智能体测试曾被要求与其他智能体共同处于同一个运行环境中。

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

· 阅读需 14 分钟
Tian Pan
Software Engineer

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

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

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

AI 编程代理在遗留代码库上的表现:为什么在你最需要它们的地方,它们往往会失败

· 阅读需 12 分钟
Tian Pan
Software Engineer

最迫切需要 AI 编程帮助的团队,通常并不是那些正在构建全新服务(greenfield services)的团队。他们往往正在维护 2012 年产出的 50 万行 Rails 单体应用,或是处理过数十亿笔交易的 COBOL 支付系统,亦或是架构师早在三次收购前就已离职的微服务网格。在这些代码库中,一个位置不当的重构就可能引入隐蔽的数据损坏漏洞,而这些漏洞往往在三周后的生产环境中才会浮现。

而这恰恰是目前的 AI 编程助手(agents)失败得最惨烈的地方。

令人沮丧的是,这种失效模式在爆发前是隐形的。AI 助手生成的代码可以通过编译,通过现有测试,并在审查中看起来非常合理。问题往往出现在预发环境(staging)、深夜的批处理作业,或者是某个客户在月份特定日期才会触发的边缘情况中。