跳到主要内容

778 篇博文 含有标签「llm」

查看所有标签

渐进式上下文替换:在长 AI 对话中保持质量的方法

· 阅读需 9 分钟
Tian Pan
Software Engineer

你的聊天机器人在前十五轮对话中运行完美。然后,问题出现了。它与之前的决定相矛盾。它询问用户已经提供过的信息。它丢失了对话开始时明确定义的多步骤任务的脉络。对话历史在技术层面上还在那里——你没有删除任何内容——但模型的行为却好像它不存在一样。

这就是上下文腐化(context rot):随着对话历史增长,输出质量逐渐下降的现象。2024 年对 18 个最先进模型进行的评估,涵盖近 20 万次受控调用,发现即使在名义上拥有更大窗口的模型中,可靠性在超过 30,000 个 Token 后也会显著下降。在扩展对话中,高性能模型会变得和小得多的模型一样不可靠。问题不在于你的上下文窗口耗尽了,而在于 Transformer 注意力机制是二次方的——100,000 个 Token 意味着 100 亿对关系——模型被迫将注意力分散得如此稀薄,以至于重要的早期内容实际上被忽略了。

当团队遇到这个瓶颈时,通常会采用两种解决方案之一:截断或摘要。这两种方法都会以可预见的方式让情况变得更糟。

好帮手 AI 的悖论:为什么遵循指令是一个安全漏洞

· 阅读需 12 分钟
Tian Pan
Software Engineer

关于 LLM 有一个令人不安的事实,但在产品评论中却鲜少被提及:赋予它们用途的特性,恰恰也是让它们易受攻击的特性。一个顺从地执行指令的 LLM —— 无论指令来自何处、何种格式、何种来源 —— 都会以处理合法指令时那种同样的愉快顺从态度去执行恶意指令。模型无法分辨其中的区别。

这不是一个可以被修补掉的 bug。这是一种架构性的现实。随着这些系统承担起更多智能体(agentic)的角色 —— 阅读邮件、浏览网页、执行代码、调用 API —— 其暴露面正以大多数工程团队尚未察觉的方式扩大。

LLM-as-Judge 的对抗性失效:当你的评测框架被操控

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的 LLM-as-judge 给新模型开了一张健康证明。胜率上升,各项评分指标全线改善,自动化评测流水线全绿通过。然后你上线了——用户满意度却下降了。

这不是边缘案例。研究人员构建了一个无论何种输入都输出固定回复的「空模型」,并在 AlpacaEval 2.0 上拿下了 86.5% 的长度控制胜率。而当时经过验证的真实最优水平是 57.5%。当一个毫无任务能力的模型都能登顶你的排行榜,你的评测框架就有了值得系统审视的问题。

你的负载测试在撒谎:生产环境中的 LLM 供应商容量争用

· 阅读需 13 分钟
Tian Pan
Software Engineer

你运行了一个负载测试。你的 p95 延迟是 450ms。你对此感觉良好,上线了该功能,然后两周后你的轮值告警响了,因为用户在周二上午 9 点看到了 25 秒的响应时间。

你的代码没有发生任何变化。没有部署,没有配置更改。供应商的状态页面显示“正常运行 (operational)”。然而,你的应用在业务高峰时段持续 20 分钟无法使用。

这就是 LLM 容量争用问题,也是工程师在被坑之前最常忽视的故障模式之一。

LLM 自我调试:解释何时是信号,何时是谎言

· 阅读需 9 分钟
Tian Pan
Software Engineer

当你的 LLM 智能体失败时,最诱人的事情莫过于问它为什么。它会给出流畅、具体、看似充满自我意识的回答。它可能会说:"我误解了用户的意图,检索了关于 X 的文档,而实际上应该定向到 Y。"听起来就像是根本原因。你把它记下来,打开提示编辑器,然后花四十分钟追查一个错误的问题。

这就是 LLM 自我调试的核心陷阱。模型的解释和模型实际的失败机制是两回事。有时两者重叠,但经常并不重合。在采取行动之前判断自己处于哪种情况,是区分快速调试和昂贵弯路的关键所在。

LLM 尾部延迟:为什么在 P50 表现良好时你的 P99 却是一场灾难

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 LLM API 返回的 P50(中位数)延迟为 800 毫秒。你的仪表板显示为绿色。你的 SLA 规定“两秒以内”。接着,一个用户提交了工单:“它转了 30 秒然后就放弃了。”你检查日志,发现 P99 延迟高达 28 秒。

这种差距——中位数与尾部延迟之间 35 倍的比率——并非偶然。这是 LLM 工作原理的结构性属性,仅仅通过调整超时时间是无法消除的。

Prompt 中的 PII:你的 AI 流水线缺失的数据最小化模式

· 阅读需 14 分钟
Tian Pan
Software Engineer

2025 年的研究发现,提交给商用 LLM 的 Prompt 中有 8.5% 包含敏感信息——PII、凭据和内部文件引用。这一统计数据可能低估了问题的严重性。它只计算了用户显式输入的内容,而没有计算系统静默添加的内容:检索到的客户记录、数据库查询的工具输出、从之前会话持久化的记忆,或者是训练前未经过清洗的微调数据。大多数 AI 流水线的 PII 泄露并非源于用户错误,而是源于没有单一工程师负责的架构盲点。

失效模式几乎总是一样的:团队发布了一个 AI 功能,认为“我们不发送个人数据”,但个人数据却从缝隙中进入了——在包含客户地址的 RAG 检索分块中,在返回完整用户档案的智能体工具输出中,或者在从 CRM 导出且未经脱敏(redaction)的微调数据集中。GDPR 的数据最小化原则要求你只收集特定目的所必需的数据。LLM 架构在默认情况下违反了这一点。

权重中的幽灵:预训练残留如何在生产环境中破坏你的微调模型

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的微调模型在评估套件上达到了 93% 的准确率。你将其上线。三周后,一位客户发来截图:模型以十足的自信回答了一个从未出现在训练数据中的问题——而且答错了。这并非通常意义上的幻觉,而是一段记忆。一种在预训练阶段烙入权重的模式,在微调从未覆盖的分布上死灰复燃。这就是预训练残留(pretraining residue),也是生产微调中最容易被忽视的故障模式之一。

微调调整的是权重,而不是从头重新训练模型。在万亿 token 规模预训练期间形成的模式——校准机制、置信度信号、世界模型先验——依然留存于权重之中。无论你的微调数据集多么精心策划,它都只是叠加在更深层先验之上的薄薄一层。当输入落在你的微调分布之外时,模型不会说"我不知道",而是回溯到预训练,自信地给出答案。

真正信守承诺的隐私模式:在 AI 功能中构建用户可控的数据边界

· 阅读需 11 分钟
Tian Pan
Software Engineer

2026 年 3 月,一场集体诉讼指控 Perplexity 的“无痕模式”(Incognito Mode)正在将对话数据和用户标识符路由到 Meta 和 Google 的广告网络 —— 甚至对于明确激活了该功能的付费订阅者也是如此。该功能被称为“无痕”。用户认为这意味着私密。但实现方式却并非如此。

这是 AI 隐私模式中最常见的失败模式:名字是营销,实现是“留存戏剧”(retention theater)。工程师上线了一个开关。法务批准了措辞。用户按下开关并信任它。但在数据管道的某处,输入内容仍在流向日志服务、训练任务或某个没人记得拦截的第三方分析 SDK。

分析 LLM 流水线:推理之外的性能瓶颈

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的团队刚刚花了三周时间优化推理。你们换成了量化模型,调整了批处理策略,成功缩短了 12% 的首字延迟 (TTFT),然后上线了。接着你查看了实际的面向用户的延迟,发现几乎没有变化。

这就是“推理陷阱”。它是 LLM 应用中最常见的性能分析失效模式,其发生的原因是工程师们习惯于测量那些容易测量的指标——GPU 利用率、推理吞吐量、每秒 Token 数 (TPS)——而不是真正缓慢的部分。在一个典型的 RAG 流水线中,如果包含所有涉及 GPU 的环节,推理大约占延迟的 80%。但剩下的 20% 通常分布在六七个没人追踪的阶段中。孤立地看,每一项似乎都很小,但它们共同占据了主要的优化空间。

多模态输入中的提示注入:纯文本防御所忽视的视觉攻击面

· 阅读需 12 分钟
Tian Pan
Software Engineer

当团队对 AI 管道进行提示注入加固时,通常只聚焦于文本:清洗用户输入字符串、扫描输出中的外泄数据、过滤已知的越狱(jailbreak)模式。这些工作固然重要,但对于现代 AI 系统而言,它们大约只覆盖了一半的攻击面。另一半隐藏在图像、PDF、音频片段和图表之中——这些格式能绕过你写下的每一条文本扫描规则,因为模型处理它们的通道与处理文本的通道完全不同。

针对视觉语言模型的隐写注入攻击(steganographic injection attacks),在包括 GPT-4V、Claude 和 LLaVA 在内的生产模型上,成功率约达 24%。这个数字并非实验室数据,而是来自真实的攻击载荷——隐藏在看似普通的图像中,使生产模型偏离预期行为。你的文本注入扫描器对此毫无察觉。

Prompt Injection 并不主要是一个攻击者问题

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数防御提示词注入 (Prompt Injection) 的团队都会联想到一个攻击者:一个精心设计特定字符串以覆盖 AI 指令的人。这种思维定式是错误的,并让他们付出了代价。这个问题更难的版本根本不需要攻击者。

每当你的 AI 应用摄取用户生成的内容时 —— 无论是产品评论、工单、上传的文档还是 CRM 笔记 —— 它都面临着同样的结构性漏洞。无需恶意企图。普通用户出于普通原因生成的普通文本,在规模化的情况下,其表现可能与蓄意的注入攻击完全一致。如果你的应用仅针对对抗性案例进行防御,那么你防御的只是少数情况。