跳到主要内容

720 篇博文 含有标签「llm」

查看所有标签

函数调用 vs 代码生成的智能体动作:无人基准测试的权衡

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个在生产环境中运行的智能体曾经收到指令"清理测试数据",然后对生产数据库执行了 DROP TABLE 命令。工具调用成功执行了。审计日志显示了一个结构完美的 JSON 载荷。智能体做的恰恰就是被要求做的——只是不是任何人所期望的那样。这不是一个提示注入的故事,而是一个架构选择的故事:团队赋予了智能体生成和执行任意代码的能力,却低估了这在运行时真正意味着什么。

将函数调用与代码生成作为 AI 智能体动作层之间的选择,是智能体架构中最关键的决策之一,却几乎没有人对其进行直接基准测试。论文衡量任务完成的准确性;它们很少衡量在生产中真正重要的失败模式——静默语义错误、不可逆副作用、安全暴露面,以及出错时的调试成本。

泛化悬崖:微调如何导致隐性的能力退化

· 阅读需 10 分钟
Tian Pan
Software Engineer

一家企业软件公司的团队在客户支持工单上微调了一个 7B 模型。目标指标——解决准确率——提高了 12 个百分点。团队发布了它。三周后,产品出现了谁也没预料到的第二种失败模式:模型悄然失去了处理多步问题的能力。用户会问一些稍超出支持领域的问题,得到的是自信但逻辑混乱的回答。模型牺牲了它不知道自己需要的广度,换取了它能够衡量的深度。

这就是泛化悬崖(generalization cliff):紧随窄领域微调而来的隐性能力退化。与崩溃或超时不同,它不产生错误。模型仍然响应。它只是在与训练分布相邻的任务上表现变差——而这些任务从未出现在评估套件中。

乐于助人但却出错:生产环境 AI Agent 中的操作性幻觉问题

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 AI agent 刚刚完成了一项复杂的数据库迁移任务。它调用了正确的工具,使用了恰当的术语,引用了正确的库,并返回了看起来完全合理的输出。然后你的 DBA 在一个拥有 5000 万行的生产表上运行它 —— 结果备份标志(backup flag)写错了。这个标志存在于相邻的库版本中,语法上是有效的,但它在静默状态下没有执行备份步骤。

这个 agent 并不是在胡言乱语。它表现得自信、流畅且方向正确。但在操作上,它错得正是会导致数据丢失的那种方式。

这是该领域投入不足的一种幻觉类别,也是你的评估(evals)几乎肯定无法捕捉到的那种。

超参数幻觉:为什么 Temperature 和 Top-P 应该最后才调

· 阅读需 10 分钟
Tian Pan
Software Engineer

当 LLM 的输出感觉不对劲时,工程师会本能地去调 temperature。这是调试手册里最早的动作之一——调低它以获得更强的一致性,调高它以获得更多创意。这感觉很有效,因为改动简单且效果立竿见影。但这几乎从来都不是正确的做法。

Temperature 和 top-p 只是输出质量最后 10% 的因素,而不是前 90%。真正决定模型成败的变量是上下文质量、指令清晰度和模型选择——依次排列。在一个有问题的提示词之上再调整采样参数,就像给一道还没煮熟的菜调味一样。根本问题并没有消失。

接手 AI 系统审计:如何掌控一个非你亲手构建的 LLM 功能

· 阅读需 12 分钟
Tian Pan
Software Engineer

有人离职了。入职文档上写着“去问 Sarah”,但 Sarah 现在已经在另一家公司了。你正盯着一个 900 行的系统提示词(system prompt),里面有些章节标题写着类似 ## DO NOT REMOVE THIS SECTION 的字样,而你完全不知道如果删掉会发生什么。

这就是“继承的 AI 系统”问题,它与继承常规代码不同。对于遗留代码,意志坚定的工程师可以追踪执行路径、阅读测试,并从行为中重构意图。但对于继承的 LLM 功能,提示词就是逻辑——但它是用自然语言编写的,其失败模式是概率性的,而且作者的意图被困在他们的脑海里。没有堆栈跟踪会告诉你哪个护栏(guardrail)触发了以及为什么触发。

AI 流水线中的惰性评估:不到万不得已,不要调用 LLM

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数 AI 流水线(pipelines)在编写时,都好像每一个请求都值得进行一次完整的 LLM 调用。用户提交一条消息,流水线将其传递给模型,等待响应并返回——每一次都无条件地如此操作。这虽然可行,但既昂贵又缓慢,而且通常是不必要的。

实际上需要完整 LLM 推理的请求比例比大多数工程师预想的要小。关于 token 级别路由的研究表明,1.5B 和 32B 参数模型之间只有约 11% 的 token 存在差异,且只有 4.9% 的 token 是真正的“发散性”的——这意味着如果由较小的模型处理,它们会改变推理路径。生产环境中的语义缓存显示,65% 的传入流量在语义上与流水线已经回答过的内容相似。这些并不是边缘案例。它们占据了流量的大部分,而你却在为处理它们支付全额费用。

解决方法是惰性求值(lazy evaluation):在确认确实需要昂贵模型之前,不要调用它。

生产环境中的 LLM 代码审查:构建工程师真正信任的 Diff 流水线

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数部署 LLM 代码审查工具的团队都会在两周内发现同一种失败模式:模型为每个 PR 生成 10–20 条评论,其中 80% 都是噪音。在第三个 PR 中,如果开发者不看就关闭了所有评论,这个工具就名存实亡了 —— 通知被发送到无人查看的频道,而机器人仍然在每次推送时消耗算力。

问题不在于模型。而在于这些团队发布了一个评论生成器,却称之为审查工具。

LLM 应用的特征存储模式:停止检索那些你可以预计算的内容

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数构建 LLM 应用的团队最终都会趋向于同一种临时架构:散乱的计算用户摘要的定时任务(cron jobs),每次请求都要重新查询的向量数据库,因延迟到了令人尴尬的地步而添加的 Redis 缓存,以及三个对“用户偏好”定义略有不同的代码库。通常只有在生产事故发生后,他们才会意识到自己构建了什么:一个特征存储(feature store)—— 而且是一个拼凑出来的劣质品。

特征存储是传统机器学习(ML)基础设施中经过实战检验的最成熟模式之一。当有意识地将其应用于 LLM 上下文组装时,它可以消除困扰大多数检索流水线的延迟、成本和一致性问题。本文将解释其原理。

多模型共识:当单个 LLM 不足以进行最终签核时

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的 AI 功能发布时准确率为 85%。领导层非常兴奋。但随后一项合规审计发现,那 15% 的错误答案集中在特定的监管解读上——而你所使用的供应商家族中的每个模型都以同样的方式犯了错。你调用了一个模型,它失败了。因为你从未将其与其他模型进行对比,你完全没有意识到这种失败是系统性的。

多模型共识架构(Multi-model consensus architecture)是解决这一问题的结构化方案。与其信任单个大语言模型(LLM),不如将请求分发给来自不同供应商家族的多个模型,汇总它们的响应,并根据一致性进行路由。不一致的模式本身就成为了系统中的一等信号,而不仅仅是一个调试产物。

这种方法的每次推理成本要高出 2 到 4 倍。对于大多数用例来说,这显然不值得。但对于特定类别的输出——法律摘要、医疗分诊路由、金融风险标记、安全评估——错误答案的代价远超额外推理的成本,以至于计算逻辑几乎立即发生反转。

过拟合的组织:当你的 AI 团队模型专业知识成为负担时

· 阅读需 11 分钟
Tian Pan
Software Engineer

你最优秀的 AI 工程师能凭记忆背诵 Claude 的 XML 格式偏好。他们知道 Claude Opus 拒绝泛化隐式指令,知道少样本示例(few-shot examples)实际上会损害 o1 系列模型的性能,还知道在某些地区,Azure OpenAI 相比直接 API 会增加额外的 8 到 12 秒延迟。这种专业知识花了数月时间积累。它也代表了当今 AI 工程中最被低估的风险之一。

当供应商弃用某个模型或悄然改变行为时,这些知识并不会随之迁移。它会消失。那些围绕单一模型系列构建系统以及组织能力的团队,往往会以惨痛的方式发现这一点。

群体提示问题:为什么你的系统提示对80%的用户有效,却悄然让另外20%的用户失望

· 阅读需 11 分钟
Tian Pan
Software Engineer

当你编写系统提示时,脑海中有一个预设的用户形象。也许是一位用简洁英语提出有针对性问题的专业人士,也许是发送简短、范围明确、完全符合提示假设的请求的人。你针对看似具有代表性的示例进行测试,调整直到输出效果令人满意,然后上线。

然后你看到了生产流量。

你的系统提示必须处理的真实查询群体,并非你所设计的中位情形,而是一个分布——有些查询范围狭窄,更多的漫无边际——还有一条长尾,暴露出你指令中每一个隐藏假设。对大多数生产系统而言,15%到30%的真实查询落入提示处理欠佳的类别。令人不安的是:这些失败大多是静默的。系统返回200状态码,用户得到一个看似合理的答案,失败永远不会浮现在你的日志中。

提示词契约测试:多智能体团队如何协同而不互相破坏

· 阅读需 11 分钟
Tian Pan
Software Engineer

当两个微服务在API假设上出现偏差时,集成测试会在上线前捕获问题。当两个智能体在提示词假设上出现偏差时,你只会在客户收到自相矛盾的答案——或者整条流水线因级联故障崩溃——时才会发现。多智能体AI系统在生产环境中的失败率高达41%–87%。这些失败中超过三分之一并非模型质量问题,而是协调故障:某个智能体改变了输出格式,另一个智能体仍然期望旧的数据结构,而没有人为此写过测试。

根本问题在于,智能体之间通过隐式契约进行通信。一个研究型智能体——在某人的心智模型中——约定返回带有 sources 数组的JSON对象。编排型智能体依赖这个结构。没有人把它写下来,没有人测试它。六周后,研究型智能体的提示词被优化为返回排名列表而非 sources 数组,编排型智能体就悄无声息地丢失了一半输入。