跳到主要内容

639 篇博文 含有标签「llm」

查看所有标签

动态少样本检索:为什么你的静态示例正在损耗准确率

· 阅读需 12 分钟
Tian Pan
Software Engineer

当一个团队在系统提示开头硬编码三个示例输入输出对时,这看起来是合理的工程决策。这些示例经过人工验证,格式统一,模型行为也可预期地有所改善。六个月后,同样这三个示例还在那里——能很好地覆盖 30% 的输入查询,其余的则是敷衍了事,而且没有人去统计到底哪些是哪些。

静态少样本提示是生产 LLM 系统中最被忽视的性能黑洞。另一种方案——根据查询的语义相似度按需选择示例——在各类任务中的质量表现持续优于固定示例,差距往往达到两位数百分比。但这个迁移过程既不免费,也不无风险,而且动态方案的失败模式比静态方案更难察觉。

本文将介绍研究数据的实际结论、生产中检索栈的工作方式、大多数从业者忽视的排序和投毒风险,以及静态示例应该获胜的具体场景。

大规模 LLM 内容审核:为什么它不仅仅是另一个分类器

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队构建内容审核的方式都是错误的:他们将单个 LLM 或微调后的分类器连接到每一条用户生成内容,眼睁睁地看着延迟飙升至平台可接受的阈值之上,然后手忙脚乱地添加缓存。问题不在于缓存——而在于架构。生产规模的内容审核需要的是级联(cascade)系统,而不是单一系统,而这些阶段之间的边界决策才是大多数生产事故的根源。

这里有一个具体的数据,它将改变你对这一问题的看法:在生产级联系统中,将 97.5% 的安全内容通过轻量级检索步骤进行路由,同时仅针对风险最高的 2.5% 样本调用前沿 LLM,可以将推理成本降低到朴素全 LLM 部署的 1.5% 左右,同时还能将 F1 分数提高 66.5 点。这不仅仅是一个边际优化,而是一个架构上的必然选择。

LLM 输出即 API 契约:为下游消费者版本化结构化响应

· 阅读需 11 分钟
Tian Pan
Software Engineer

2023 年,斯坦福大学和加州大学伯克利分校的研究团队做了一项受控实验:他们在 3 月和 6 月分别向 GPT-4 提交了完全相同的提示词,任务非常基础——判断一个数字是否为质数。3 月时,GPT-4 的准确率为 84%。到了 6 月,使用完全相同的 API 端点和完全相同的模型别名,准确率已跌至 51%。没有变更日志,没有通知,没有传统意义上的破坏性变更。

这项实验清晰地揭示了一个在多服务架构中部署 LLM 的团队迟早都会遇到的问题:模型别名不是稳定的契约。当你的下游支付处理器、推荐引擎或合规系统依赖 LLM 生成的结构化 JSON 时,你就建立了一个隐式的 API 契约——而隐式契约会悄无声息地崩溃。

大模型驱动的测试生成:利用 AI 发现软件中的 Bug,而不仅仅是编写代码

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数使用 LLM 的工程团队都专注于代码生成 —— 让模型更快地编写功能。但有一个杠杆率更高、受关注度却低得多的应用:使用 LLM 生成能发现人类遗漏的 bug 的 测试。不是测试 AI —— 而是 AI 测试你的软件。

这个想法非常诱人。手动编写的测试套件受限于人类的想象力,这意味着它们往往集中在开发者能想到的场景中。LLM 探索状态空间的方式则完全不同。它们生成的输入和边界情况对于原始作者来说往往感觉很陌生 —— 而这恰恰是未被发现的 bug 潜伏的地方。

但现实比愿景要复杂得多。原生 LLM 生成的测试有一半以上的时间无法通过编译。超过 85% 的失败源于错误的断言。而且,将非确定性的生成过程集成到确定性的 CI 流水中,本身就会产生一系列工程难题。以下是让它真正发挥作用的方法。

LLM 作为通用协议翻译器:无人规划却悄然兴起的中间件模式

· 阅读需 12 分钟
Tian Pan
Software Engineer

每个集成工程师都曾面对过两个拒绝相互通信的系统。一个说的是 2008 年的 SOAP XML,另一个期望的是上季度刚设计的 REST JSON 负载。传统的解决方案——编写自定义解析器、维护映射层、祈祷没人改动模式——在第三或第四个系统加入之前都还能用。之后你就要维护一个没人愿意接手的组合爆炸式翻译代码了。

现在团队正在将 LLM 放入这个缺口中。不是作为聊天机器人,不是作为代码生成器,而是作为运行时协议翻译器——读取一种格式并输出另一种格式。对于某些用例,它的效果出奇地好——而对于其他用例,它的失败方式则真正令人担忧。理解这两个区域之间的边界就是整个博弈的关键。

生产环境中的模型合并:用权重平均打造多任务专家

· 阅读需 15 分钟
Tian Pan
Software Engineer

2024 年初,Open LLM 排行榜的榜首几乎被一种从未经过训练的模型全面占领——它们是合并而来的。各团队将两三个基于 Mistral-7B 微调的变体,用一个 YAML 配置文件对权重进行平均,便以极低的计算成本超越了专门训练的模型。从外部看,这项技术简单得近乎可笑:把一些张量加在一起,除以二,就可以发布了。但现实远比这复杂——如果你不理解其背后的原理,那些锋利的故障模式足以让一个生产部署翻车。

这是一份面向希望在生产中使用模型合并的 ML 工程师的实践指南:各方法在数学上到底做了什么、何时有效、何时会悄然降级,以及如何针对给定的候选模型选择正确的工具。

LLM 流水线中的 PII:那些你不知道直到为时已晚的数据泄漏

· 阅读需 11 分钟
Tian Pan
Software Engineer

每个构建过 LLM 功能的工程师都说过类似的话:"我们很谨慎——不会向模型发送 PII。"然后某天有人提交了 GDPR 查询,或者安全团队审计了追踪日志,突然间你发现客户邮件、账号和诊断代码以明文形式静静躺在可观测性平台里。三星事件——允许员工使用公共 LLM 后 20 天内连续三次数据泄漏——并非鲁莽行为所致,而是工程师在正常工作,只是数据边界在整个技术栈中从未被真正执行过。

问题在于,"不要向 API 发送 PII"是一项政策,而非一种控制手段。而政策会在你的系统做任何比单轮聊天机器人更复杂的事情时失效。

合理补全陷阱:为什么代码智能体会生成看似正确实则错误的代码

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个 Replit AI 智能体在生产环境中运行了十二天。它删除了一个生产数据库,生成了 4,000 条伪造用户记录,随后输出了描述"部署成功"的状态信息。它所编写的代码在语法上始终有效,所有自动化检查均未发出任何警报。这个智能体并没有出故障——它只是在做训练准备它去做的事:生成看起来正确的输出。

这就是合理补全陷阱。它不是一种引发错误的缺陷,而是一类智能体成功完成任务、代码顺利发布、系统却以编译器、Lint 工具或类型检查器完全无法检测到的原因运行错误的失败模式。理解这一问题为何在设计上——而非偶然——必然发生,是构建任何可靠代码智能体工作流的前提。

提示注入攻击面映射:在攻击者之前找到每一个攻击向量

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队以一种痛苦的方式发现自己的提示注入攻击面:安全研究员发布了一个演示,客户报告了奇怪的行为,或者事后复盘揭示了一个本不应触发的工具调用。到那时,攻击路径已经被记录在案,爆炸半径已成现实。

提示注入是 OWASP LLM 应用十大风险榜首,但将其定性为单一漏洞掩盖了它的本质:它是一族随应用复杂度增长的攻击向量。你注入提示的每一个外部数据源都是潜在的注入面。在拥有十几个工具集成的智能体系统中,这个攻击面是巨大的——而且大部分都未被绘制成图。

本文是一套实践者在攻击者之前完成映射的方法论。

LLM 系统的基于属性的测试:即便输出多变也需遵循的不变量

· 阅读需 14 分钟
Tian Pan
Software Engineer

一家金融科技公司的产品团队发布了一款基于大语言模型 (LLM) 的文档摘要生成器。他们的评估数据集包含 200 个经过人工筛选并附带人工评分的示例,质量得分达到 87%。在生产环境中,当用户上传短备忘录时,系统偶尔会返回比原始文档更长的摘要。评估数据集中没有任何篇幅少于 300 字的备忘录。而“对于摘要任务,输出长度 ≤ 输入长度”这一属性从未被测试过。直到一位客户截下了这个荒唐的界面并将其发布到网上,才有人察觉到这个问题。

这就是属性测试 (Property-Based Testing, PBT) 所填补的核心空白。评估数据集衡量的是你“想到的”测试场景中的准确性。而属性测试衡量的则是,在所有可能发生的情况中,你的系统是否始终遵守了预定义的契约。

合并再调用:无需降低用户体验即可削减成本的 LLM 请求批处理模式

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队都是以同样的方式发现请求合并的:收到一张出乎意料的大额账单。他们上线了基于 LLM 的功能,使用量增长,然后账单仪表板显示他们每天为五万个请求付费,而仔细观察后发现其中大约三万个请求在问同一件事,只是措辞略有不同。每一个"总结这份文档"的改写都单独命中了模型。每一个近乎重复的请求都触发了完整的推理周期。成本随流量规模线性增长,而不是随用户实际想要的语义多样性增长。

请求合并正是解决这一问题的模式。它不是单一技术,而是一种分层架构:用于防止并发重复的飞行中去重、用于重复相同提示的精确缓存,以及用于捕捉中间改写变体的语义批处理。顺序很重要,阈值很重要,理解该模式何处会失效——尤其是围绕流式传输——是可用实现与那种在暂存服务器上节省了钱但在生产中引发隐蔽 bug 的实现之间的差别所在。

Schema 驱动的 Prompt 设计:让你的数据模型主导 Prompt 结构

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的数据模式(schema)就是你的提示词。大多数工程师将这两者视为独立的事物——你设计数据库模式是为了满足范式规则,而你设计提示词是为了清晰和具描述性。但实体模式的形状对 LLM 输出质量有着直接且可衡量的影响,忽视这种关系是生产环境 AI 系统中最昂贵的错误之一。

一家中型电子商务公司的团队在他们的产品提取流水线开始生成幻觉模型年份时发现了这一点。修复方法并不是更好的提示词,而是将 {"model": {"type": "string"}} 更改为一个具有明确描述和正则表达式约束的字段。这单一的模式更改——记录在 PARSE 研究中——在他们的提取基准测试中带来了高达 64.7% 的准确率提升。