跳到主要内容

28 篇博文 含有标签「engineering」

查看所有标签

没人用的 AI 功能:团队为何交付了无人采用的能力

· 阅读需 9 分钟
Tian Pan
Software Engineer

一家中型项目管理公司的产品副总裁,花了三个季度的工程团队路线图来构建 AI 助手。上线六个月后,每周活跃使用率只有 4%。问她为什么要做:「竞争对手发布了一个,董事会问我们什么时候跟上。」这是一个用产品战略包装起来的恐慌决策——而且这种情况现在到处都是。

4% 不是个例。一个客户成功平台在四个月后,AI 生成通话摘要的采用率是 6%。一个物流 SaaS 添加了 AI 路线优化建议,点击率 11%,实际操作率 2%。一个 HR 平台推出了 AI 政策问答机器人,火了两周,然后跌落至 3% 后趋于平稳。这个规律已经稳定到可以命名了:发布 AI 功能,眼看它被忽视,十八个月后悄悄下线。

默认的解释是 AI 不够好。有时确实如此。但更多时候,模型没有问题——用户压根就没找到这个功能。

AI功能下线手册:如何在不损害信任的前提下淘汰表现不佳的AI

· 阅读需 11 分钟
Tian Pan
Software Engineer

过去三年,工程团队上线的AI功能数量超过了此前十年的总和。但他们几乎没有下线过任何一个。德勤的研究发现,2025年有42%的公司放弃了至少一个AI项目——相比前一年的17%大幅上升——每个被废弃项目的平均沉没成本高达720万美元。然而,那些留在生产环境中的功能往往比被砍掉的更具破坏性:它们缓慢侵蚀用户信任,积累每月复利的技术债,并消耗本可用于有效工作的工程资源。

这种不对称是结构性的。AI功能上线会带来公告、利益相关方的兴奋和团队荣誉。而退场则被视为失败的承认。因此,糟糕的功能不断积累。解决之道不是意志力,而是一套决策框架——让退场成为一种正常、可预期的工程结果,而非组织危机。

组织抗体:为什么AI项目在试点之后走向消亡

· 阅读需 13 分钟
Tian Pan
Software Engineer

演示进行得很顺利。试点运行了六周,展示了清晰的成果,与会的利益相关者印象深刻。然后,什么都没有发生。三个月后,项目悄悄被搁置,构建它的工程师转向了其他事情,公司的AI战略变成了一张写着"探索机会"的幻灯片。

这就是扼杀AI项目的模式。不是技术失败,不是模型能力不足,甚至不是预算问题。技术本身确实有效——研究一再表明,约80%进入生产的AI项目达到或超过了预期目标。问题在于那70-90%从未走到那一步的项目。

AI 功能下线指南:如何停用那些用户几乎不用的功能

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的团队在六个月前发布了一项由 AI 驱动的摘要功能。采用率停滞在 8% 的用户。模型调用每月耗资 4,000 美元。构建该功能的工程师已经调到了另一个团队。现在,模型提供商正在涨价。

所有的直觉都在告诉你:砍掉它。但事实证明,停掉一个 AI 功能要比停掉任何其他类型的功能都难得多——大多数团队都是在退役过程中,当合规问题开始出现、核心用户开始反抗时,才以惨痛的方式意识到这一点的。

这是一份在发布功能之前就应该存在的指南,但在你盯着那些明显指向退出的使用率图表时,它最为有用。

LLM 供应商锁定是一个光谱,而非非黑即白

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个团队在 GPT-4 上构建了一个生产环境功能。几个月后,出于成本考虑,他们决定评估 Claude。他们花了两周时间进行“迁移”——但核心的 API 替换只花了一个下午。剩下的十天都花在了修复损坏的系统提示词(system prompts)、重新测试拒绝服务的边缘情况、调试由于意外文本而崩溃的 JSON 解析器,以及重新调整在不同供应商之间表现迥异的工具调用模式(tool-calling schemas)。原本以为只是简单的连接器更换,结果迁移预算膨胀成了多层重构。

这就是现实中的 LLM 供应商锁定问题。那些受挫的团队并不是因为选错了供应商——而是因为他们没有意识到锁定存在于多个维度,且每个维度都有不同的风险画像。

提示词考古:从无文档遗留提示词中还原设计意图

· 阅读需 10 分钟
Tian Pan
Software Engineer

你加入了一个团队,他们已经在生产环境中运行某个 LLM 功能十八个月了。这个功能运作正常——用户喜欢它,业务也在乎它——但没有人能确切解释这个提示词做了什么,或者为何要这样写。编写它的工程师已经离职。当时讨论它的 Slack 消息埋在某个不复存在的频道里。提示词躺在数据库记录中,长达 900 个 token,没有注释,提交信息除了"更新提示词"什么都没有。

而现在,你被要求去修改它。

这种情况比业界承认的要普遍得多。提示词被当成配置值来对待:写起来很快,代码审查中看不到,一旦跑通就被遗忘。区别在于,配置错误的 feature flag 会立即暴露问题,而配置错误的提示词会在数周内悄悄地降低某些边缘情况的处理质量,直到有人注意到。

AI 个性化的冷启动问题:在拥有数据之前如何提供价值

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数个性化系统是围绕一个飞轮构建的:用户进行互动,你学习他们的偏好,你展示更好的推荐,他们从而进行更多互动。随着数据的积累,飞轮转得越来越快。问题在于,飞轮需要速度才能产生升力——而新用户完全没有速度。

这就是冷启动问题。而且它比大多数团队在首次发布个性化功能时所认识到的更为危险。一个新用户在到达时没有任何历史记录,没有信号,通常还带着怀疑的先验预期:“AI 并不了解我。”你大约有 5 到 15 分钟的时间来证明并非如此,否则他们就会形成一种定论,决定他们是否会留得足够久,以产生那些能让你真正帮助到他们的数据。如果这个窗口期表现糟糕,高达 75% 的新用户会在第一周弃用产品。

冷启动问题不是数据问题,而是初始化问题。工程上的问题是:在缺乏历史记录的情况下,你应该注入什么?

LLM 流水线单体 vs. 链式架构的权衡:任务分解何时有益,何时有害

· 阅读需 9 分钟
Tian Pan
Software Engineer

大多数构建 LLM 流水线的团队几乎立刻就会选择链式架构。复杂任务被拆分为多个步骤——提取、分类、摘要、格式化——每个步骤都有自己的提示词。这感觉很自然:更小的提示词更容易编写、调试和迭代。但很少有人会问:链式调用真的比在一次调用中完成所有工作更准确吗?在我见过的大多数代码库中,没有人测量过。

单体 vs. 链式的权衡是 AI 工程中最关键的架构决策之一,但几乎总是凭直觉做出的。本文将梳理实证依据,说明分解何时真正有帮助、何时会悄然使事情变得更糟,以及在生产环境中需要关注哪些信号。

生产环境中的采样参数:那些没人解释清楚的调参决策

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数工程师将 LLM 质量回归视为提示词工程问题或模型能力问题。他们会重写系统提示词、尝试更新的模型,或添加少样本示例。他们很少检查每次 API 调用顶部静静躺着的三个数字:temperature、top-p 和 top-k。但这些默认值正在悄然改变模型产出的每一个响应,错误的调参会导致输出方差——团队往往数月内都把锅甩给模型,直到意识到罪魁祸首不过是一个从未动过的配置值。

这不是入门教程。如果你在生产环境中运行 LLM——用于信息抽取管道、代码生成、摘要,或任何输出流入真实系统的任务——以下是你在智能调参之前必须理解的机制与权衡。

AI 界面中无人关注的可访问性鸿沟

· 阅读需 9 分钟
Tian Pan
Software Engineer

大多数 AI 团队都会对其落地页进行无障碍审计。但几乎没有人对聊天界面本身进行审计。这种差距并非源于懒惰 —— 而是因为工具根本不存在。WCAG 2.2 没有针对流式内容的成功标准,没有针对非确定性输出的标准,也没有针对逐个 token 传输的指南。这意味着目前每个将响应流式传输到 <div> 中的 AI 产品都处于合规灰色地带,同时破坏了很大一部分用户的体验。

这并不是一个微不足道的边缘情况。盲人和低视力用户报告称,寻求信息是他们使用 AI 的首要场景。患有诵读障碍、ADHD 和认知障碍的用户正积极尝试使用 AI 工具来减轻阅读负担 —— 而默认的实现模式却实际上让情况变得更糟。

大规模 AI 代码审查:当你的机器人带来的工作量超过它节省的工作量时

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数采用 AI 代码审查器的团队都会经历同样的阶段:最初的兴奋,伴随着大量看似有用的标注问题,然后逐渐演变成完全忽视该机器人。几个月内,工程师们已经形成了一种在不阅读 AI 评论的情况下直接将其关闭的肌肉记忆。工具仍在运行,评论仍在出现,但没有人再根据它们采取行动了。

这不是工具问题,而是衡量标准的问题。团队在部署 AI 代码审查时,从未定义过什么是“净收益”——如果没有这个基准线,告警疲劳最终会胜出。

非确定性服务的 API 契约:随机输出下的版本管理

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的内容审核服务返回 {"severity": "MEDIUM", "confidence": 0.85}。下游计费系统将 severity 解析为枚举值 ["low", "medium", "high"]。一次模型更新后,服务偶尔开始返回首字母大写的 "Medium"。没有任何部署发生,没有 schema 变更。集成在生产环境中悄然崩溃,整整六天无人察觉——因为所有 HTTP 状态码都是 200。

这是 LLM 支撑服务 API 契约的根本问题:表面看起来像 REST API,但底层行为是概率性的。标准契约工具假设确定性。当这个假设被打破时,它是悄无声息地崩溃的。