跳到主要内容

86 篇博文 含有标签「architecture」

查看所有标签

投机采样(Speculative Decoding)是一项流式传输协议决策,而非推理优化

· 阅读需 14 分钟
Tian Pan
Software Engineer

每一篇关于投机解码(Speculative Decoding)的论文中提到的“等效输出”保证,其实是对 token 分布的保证,而不是对用户所见内容的保证。仔细阅读证明过程,你会发现一个纯粹的数学等效性:拒绝采样的接受标准旨在确保投机后的输出分布与目标模型(target model)独立生成的分布完全一致。这一保证约束的是离开推理引擎的字节流,而对于五百毫秒前已经到达用户屏幕、现在却必须收回的字节,它只字未提。

如果你在小模型生成草稿 token 的那一刻就将其流式传输给客户端,那么每当验证器拒绝某个后缀时,你实际上是在对自己的用户进行 A/B 测试。半个段落会自行重写。函数名在 IDE 已经完成语法高亮后发生改变。语音合成(TTS)可能已经读出了“答案很可能是否定的”,随后验证器却将其替换为“答案是肯定的,但有几点需要注意”。数学逻辑上,最终分布与慢速路径一致;但从用户体验来看,他们亲眼目睹了模型在公开场合“反悔”。

这是投机解码中未被计入加速倍数的部分。它也将所谓的“免费 3 倍吞吐量”变成了一个没人预料到的、长达一个半季度的流式协议开发工作。

系统提示词作为代码、配置或数据:影响全局的架构决策

· 阅读需 13 分钟
Tian Pan
Software Engineer

上个季度我交流过的一个团队发布了一个客户支持智能体,其系统提示词存储在 Postgres 的一行中,每个租户一行。这个方案听起来很合理:企业客户要求定制语气,“让提示词可编辑”是实现这一目标最廉价的方式。六个月后,发生了三件事。评估套件从 200 个案例膨胀到了 11,000 个,因为每个租户的提示词现在都需要自己的回归测试集。提示词更新工作流悄然变成了一个没有审核的写入路径,因为产品负责人被赋予了对表的直接访问权限。此外,由于部署流水线根本不知道提示词发生了变化,一个韩国租户提示词中损坏的 UTF-8 字符导致该租户的聊天机器人下线了两天,却没人察觉。

这些结果都不是需求强制导致的。它们是由一个无人刻意做出的架构决策所强制导致的:系统提示词存放在哪里?在代码中?在配置文件中?还是在数据库行中?团队选择了“数据库”,因为这是实现功能最快的路径,而后果在接下来的几个月里级联影响到了每一个相邻系统。

95% 可靠性幻觉:为什么你的 10 步 Agent 在 40% 的情况下会失败

· 阅读需 13 分钟
Tian Pan
Software Engineer

在几乎每一个智能体(agent)项目评审中,都有一个会让谈话戛然而止的时刻。有人画了一张小图表:y 轴是端到端任务成功率,x 轴是工具使用的步骤数。曲线急剧下降。全场陷入沉默,因为屋子里的每个人之前都在争论提示词(prompt)、模型和检索策略——而这张图表在告诉大家,所有的这些争论,都抵不过一个简单的事实:这条链条上的环节太多了。

这一数学原理是可靠性工程中最古老的结论之一,如今被移植到了一个自以为是的新领域。如果流水线中的每一步都以概率 p 独立成功,那么 n 个串联步骤的成功概率就是 p 的 n 次方。代入一些在进度报告中听起来还不错的数字:单步可靠性 95%,十个步骤,端到端成功率就只有 60%。二十步降至 36%。三十步则降至 21%。那个“95% 的时间都能正常工作”的智能体,实际上在三分之一的真实用户请求中都会失败,因为真实的用户请求绝非只有单个步骤。

DLP 应存在于你的 AI 网关中,而非生搬硬套到每个应用里

· 阅读需 13 分钟
Tian Pan
Software Engineer

第一个内部 LLM 网关的构建通常是出于那些枯燥的原因:成本归因,以便财务可以回答“哪个团队花了推理预算”;速率限制,防止某个失控的脚本烧掉月度配额;以及供应商故障转移,确保 OpenAI 的小故障不会导致助手挂掉。数据泄露防护 (DLP) 虽然出现在幻灯片上,但交付时却变成了“每个应用团队在调用模型前应自行脱敏敏感字段”。六个月后,生产环境中有九个应用,三个维护得半吊子的脱敏库(带有微妙差异的正则表达式集),两个完全绕过网关“仅用于测试”的原型,以及一起 Prompt 中包含客户数据的事故——而这本该是由每个人的中间件来防止的,因为并没有人的中间件是规范的出站口。

这不是工具问题,而是架构错误。DLP 是一种出站控制,而出站控制只有在路径强制执行时才有效。当你让应用团队负责脱敏时,你就放弃了让 DLP 发挥作用的特性——即敏感数据只能从一个地方流出,且你可以证明流出了什么。2025 年的 LayerX 安全报告用大多数团队尚未意识到的数据说明了问题的规模:2025 年初,与生成式 AI (GenAI) 相关的 DLP 事故增加了一倍多,目前占 SaaS 流量中所有数据安全事故的 14%,员工平均每天向 GenAI 工具粘贴 6.8 次内容,其中超过一半包含公司信息。影子路径默认在胜出。

现在,推理速度已经快过你的数据库了

· 阅读需 12 分钟
Tian Pan
Software Engineer

打开任何 2024 年时代的 AI 功能链路追踪 (trace),模型调用就像是一头巨鲸。八百毫秒的生成时间,包裹在检索、鉴权和数据库查询组成的薄壳中,后者的时间几乎可以忽略不计。那一年的每一个架构决策——缓存、预取、流式 UX——都是为了隐藏那头“巨鲸”。

现在,查看运行在 2026 年推理栈上的相同功能的链路追踪。那头巨鲸已经变成了一只海豚。缓存后的预填充 (prefill) 在 180ms 内返回第一个 token。解码 (decode) 以每秒 120 个 token 的速度流式传输。模型不再是慢节点。你自己的基础设施才是,而且大部分基础设施还没有意识到这一点。

这种顺序重排是今年最重要的性能转变,也是各团队一直反应不足的一个。现在,AI 请求的 p99 底限是由特征存储 (feature store) 调用、鉴权中间件以及那些一直都很慢的 Postgres 查询决定的——在模型占据九成预算时,没人关心这些。

飞行中转向:无需重启即可重定向长时运行的智能体

· 阅读需 11 分钟
Tian Pan
Software Engineer

观察一个开发者使用代理型 IDE 二十分钟,你会看到同样的小剧场上演三次。代理开始了一个长任务。在两次工具调用后,用户意识到他们想要一个函数式组件而不是类,或者想要 v2 接口而不是 v1,亦或是想用 Vitest 而不是 Jest 编写测试。他们手中只有一个杠杆:红色的停止按钮。他们按了下去。代理在编辑中途阵亡。他们复制并粘贴上一个提示词,加上修正,然后为前八分钟的工作支付了两次费用。

中止按钮是错误的交互设计。它将“我想调整计划”和“我想丢弃这次运行”视为同一种动作。在实践中,它们就像方向盘和弹射座椅一样迥异,而将两者混为一谈,正是为什么许多代理产品在任务耗时超过一屏输出时就显得脆弱不堪的原因。

在写第一个 Prompt 之前,先设计好你的 Agent 状态机

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数工程师在构建第一个 LLM agent 时,都会遵循相同的流程:写一个系统提示词,添加一个调用模型的循环,撒上一些工具调用逻辑,然后看着它在简单的测试用例上运行。六周后,这个 agent 变成了一团难以理解的嵌套条件、粘贴在 f-string 里的 prompt 片段,以及散落在三个文件中的重试逻辑。添加一个功能需要通读整个代码。遇到生产 bug 就得盯着一个上千 token 的上下文窗口,试图重建模型当时在"想"什么。

这就是"意大利面式 agent"问题,在以 prompt 为起点而非设计为起点的团队中几乎普遍存在。解决方案不是更好的提示技巧,也不是换一个框架,而是一种纪律:在写第一个 prompt 之前,先设计好状态机

欧盟《人工智能法》合规是工程问题:你必须交付的审计追踪

· 阅读需 11 分钟
Tian Pan
Software Engineer

2026年,大多数构建AI系统的工程团队都知道欧盟《人工智能法》的存在。但很少有人真正理解它要求他们构建什么。该法规对高风险AI系统的核心义务——自动事件日志记录、人工监督机制、风险管理系统、技术文档——并非法律团队能在截止日期前生产的政策文件。它们是工程交付物,需要在项目启动时做出架构决策,而非在合规审计前的最后一个冲刺阶段。

硬性截止日期是2026年8月2日。在欧盟部署的高风险AI系统必须完全符合第9至15条的规定。在就业筛选、信用评分、福利分配、医疗优先级、生物特征识别或关键基础设施管理领域部署AI的组织均在适用范围内。如果你的系统在这些领域做出实质性影响欧盟居民的决策,它几乎肯定属于高风险。而现实的合规实施周期需要8至14个月——这意味着如果你还没有开始,已经落后了。

模型可移植性税:如何架构真正可迁移的 AI 系统

· 阅读需 11 分钟
Tian Pan
Software Engineer

你接手了一个基于 GPT-4-turbo 构建的 AI 功能。该模型即将被弃用。你的经理希望通过切换到更新、更廉价的模型来降低成本。你快速跑了一遍测试,指标看起来还过得去,于是就上线了——结果一周后,核心用例的准确率下降了 22%。支持工单不断攀升。你现在面对的是一场危机式迁移,而非有计划的操作。

这就是模型可移植性税:每当你将应用逻辑与某个特定基础模型紧耦合时,就会累积的隐性工程成本。每个团队都在为此买单,大多数人直到账单到来时才意识到数字有多大。

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

· 阅读需 10 分钟
Tian Pan
Software Engineer

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

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

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

· 阅读需 10 分钟
Tian Pan
Software Engineer

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

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

欧盟 AI 法案现已成为你的工程待办事项

· 阅读需 14 分钟
Tian Pan
Software Engineer

大多数工程团队是通过在截止日期前三周收到的一封法律邮件才了解到 GDPR 的。欧盟 AI 法案(EU AI Act)正在重演这一模式,而 2026 年 8 月 2 日针对高风险 AI 系统的强制执行日期已经非常临近,“以后再处理合规问题”已不再是一个可选项。GDPR 与 AI 法案的区别在于,GDPR 的合规大多是关于数据处理政策的。而 AI 法案的合规要求构建新的系统组件——这些组件在大多数生产环境中的 AI 系统中尚不存在。

法规中所谓的“人类监督义务”和“审计追踪要求”,转化为工程语言,就是一个仪表盘、一个事件日志和一个数据血缘系统。本文将欧盟 AI 法案视为一份工程规范而非法律文件,并逐步介绍你实际需要构建的内容。