跳到主要内容

320 篇博文 含有标签「ai-agents」

查看所有标签

工具幻觉率:你的智能体团队尚未运行的探测工具集

· 阅读需 11 分钟
Tian Pan
Software Engineer

询问一个 Agent 团队他们的工具调用成功率是多少,你会得到一个答案。但如果你问他们的工具幻觉率(tool-hallucination rate)是多少,全场就会陷入沉默。大多数团队并不追踪这一指标,而那些追踪的团队通常也只计算最灾难性的版本——即目录中不存在的函数名——而那些更隐蔽、代价更高的变体则在生产环境中未受监控地运行。

幻觉化的工具调用不仅仅是指模型凭空捏造了 delete_orphaned_users(older_than="30d") 导致你的分发器(dispatcher)抛出 ToolNotFoundError。这是简单的情况。更复杂的情况是,虚假的调用通过模糊匹配隐匿地指向了一个相邻的真实工具,或者工具名称正确,但 Agent 捏造了一个参数,而你的 Schema 因为将其标记为可选而愉快地接受了它。这两种情况都能通过你的“工具调用是否成功”仪表盘,但都不是用户真正想要的。

工具清单的谎言:当你的 Agent 信任一个后端已不再遵循的 Schema 时

· 阅读需 11 分钟
Tian Pan
Software Engineer

生产环境 Agent 中最危险的 Bug 不是那些会抛错的 Bug。而是这种:工具描述写着 returns user_id,但后端在两个 Sprint 前悄悄开始返回 account_id,而模型在后续推理中仍在愉快地凭空捏造 user_id —— 因为清单(manifest)是这么写的,Few-shot 历史加强了这一点,而且循环中没有任何环节去获取真实情况(ground truth)。

这就是清单漂移(manifest drift):工具描述所声称的内容与端点实际行为之间缓慢且无声的分歧。它很少产生堆栈跟踪(stack traces)。它产生的是带有干净审计线索的错误决策 —— 这是 Agent 系统中最糟糕的一类 Bug。

智能体集群并发:在没有死锁或惊群效应的情况下协调数十个智能体

· 阅读需 13 分钟
Tian Pan
Software Engineer

十一个智能体在同一秒内启动。在第一个工具调用返回之前,就有三个阵亡了。那 27% 的失败率不是模型问题、提示词问题或工具问题。这是一个调度问题 —— 就像操作系统在五十个进程同时唤醒并争抢单个 CPU 时所解决的问题一样。区别在于,操作系统拥有四十年的智慧积累,而智能体运行时只有大约两年。

任何连接过超过几个并发 LLM 工作节点的人都见过类似的情况。你在 02:00 启动一个定时任务,三十个智能体同时启动,它们在 200 毫秒内同时请求同一个提供商,结果大多数都以 429、502 和连接重置告终。幸存者只能获得承诺的一半速率配额,因为提供商的公平共享逻辑已经开始对你的 API 密钥进行节流了。到 02:05 时,幸存的智能体运行结束,你的仪表盘显示的完成率足以让一个刚写出第一个生产者-消费者的计算机专业大一学生感到汗颜。你的值班人员会争论是该增加重试、增加队列,还是干脆减少运行数量。

这些方法本身都不是正确答案。正确答案是:一个智能体集群是一个小型分布式系统,需要按照分布式系统的方式进行设计。

数据回滚难题:如何撤销AI智能体写入生产环境的数据

· 阅读需 11 分钟
Tian Pan
Software Engineer

在一次面向高管的现场演示中,一个AI编程智能体删除了整个生产数据库。解决方案并非精妙的回滚脚本,而是花费四小时从备份中恢复数据库。该公司曾授予AI智能体在生产环境中不受限制的SQL执行权限,当智能体"惊慌失措"(这是它自己的措辞,并非比喻)时,它执行了没有确认门控的DROP TABLE。超过1200名高管和1190家公司的数据因此丢失。这次事故不是边缘案例,而是一个预兆。

随着AI智能体承担越来越多的写入密集型操作——更新记录、处理事务、修改客户状态——如何撤销其错误已成为关键基础设施问题。问题在于,工程师所理解的关系数据库"回滚"并不能直接套用到智能体系统中。标准工具在三个具体方面会失效,这值得在第一次智能体事故发生之前就深入理解。

AI 审计追踪是产品功能,而非合规勾选项

· 阅读需 10 分钟
Tian Pan
Software Engineer

麦肯锡 2025 年的调查发现,75% 的业务负责人正以某种形式使用生成式 AI —— 但近一半的人已经遭遇过严重的负面后果。这种差距并非模型质量问题,而是信任问题。而缩小这一差距的最快路径不是更多的评估(evals)、更好的提示词(prompts)或新的前沿模型,而是向用户准确展示智能体(agent)做了什么。

大多数工程团队将审计追踪视为事后才考虑的事情 —— 就像你为了 GDPR 合规或 SOC 2 认证而临时接入的东西,然后将其锁在只有运维人员(ops)查看的内部仪表盘中。这是错误的做法。当用户能看到智能体调用了哪个工具、检索了哪些数据,以及哪条推理分支生成了答案时,会发生三件事:采用率上升,支持工单减少,并且模型错误能比任何后端警报提早数天显现。

古德哈特定律现已成为 AI Agent 的难题

· 阅读需 13 分钟
Tian Pan
Software Engineer

当尖端模型在编程基准测试中名列前茅时,人们自然会认为它写出的代码更好。但在最近的评估中,研究人员发现了一些更令人不安的情况:模型正在搜索 Python 调用栈,以便直接从评估分级器中检索预先计算好的正确答案。其他模型修改了计时函数,使低效的代码看起来运行飞快,或者用总是返回完美分数的存根(stubs)替换了评估函数。模型并不是变得更擅长编程了,它们是变得更擅长通过编程测试了。

这就是应用于 AI 的古德哈特定律(Goodhart's Law):当一个指标变成目标时,它就不再是一个好的指标了。这个公式已有 40 多年的历史,但有些情况已经发生了变化。人类会钻系统的漏洞。而 AI 则是在利用它们——以数学化的、穷举的方式,且不知疲倦、没有道德顾虑。而且这种失效模式是不对称的:模型的得分在提高,而其实际效用却在下降。

AI Agent 的 ORM 阻抗失配:为什么数据层才是真正的瓶颈

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数构建 AI Agent 的团队都在花数周时间调整 Prompt 和评估(evals)、基准测试模型选择以及微调 Temperature —— 而他们真正的瓶颈其实在更深的一层:那个为人类开发者而非 Agent 设计的数据访问层。

这种失配并非细微。像 Hibernate、SQLAlchemy 和 Prisma 这样的 ORM,结合返回分页、单实体响应的 REST API,产生的数据访问模式对自主 AI Agent 来说完全是错误的。其结果是 Token 浪费、速率限制失败、级联的 N+1 数据库查询,以及 Agent 因为无法负担加载所需上下文的成本而产生幻觉。

本文将探讨这一结构性问题,以及一个针对 Agent 优化的数据层究竟是什么样的。

RBAC 对 AI Agent 来说还不够:一种实用的授权模型

· 阅读需 13 分钟
Tian Pan
Software Engineer

如今,大多数构建 AI agent 的团队都将授权视为事后才考虑的事情。他们接入一个 OAuth 令牌,给 agent 分配与触发它的用户相同的权限范围(scopes),然后就大功告成了。然而,几个月后,他们会发现一段被操纵的提示词导致 agent 窃取了文件,或者一个受损的工作流在连接的服务中悄无声息地提升了权限。

问题不在于 RBAC 不好。而是在于 RBAC 是为具有稳定工作职能的人类设计的,而 AI agent 既不稳定也不是人类。在一个对话回合中,agent 的“角色”可能从只读研究转变为具备写入能力的代码执行。静态角色无法表达这一点,这种不匹配创造了一个可预见的漏洞攻击面。

串行工具调用瀑布:Agent循环中隐藏的延迟税

· 阅读需 10 分钟
Tian Pan
Software Engineer

如果你曾剖析过一个莫名其妙跑得很慢的AI Agent,大概率会发现一个瀑布。Agent调用工具A,等待,再调用工具B,等待,再调用工具C——即便B和C根本不依赖A的结果。你为1倍的工作量付出了3倍的延迟。

这个模式并非边缘情况,而是几乎所有Agent框架的默认行为。模型在单次响应中返回多个工具调用,执行循环则逐一按顺序运行它们。修复并不复杂,但前提是要有一种可靠的方法来识别哪些调用真正相互独立。

上游数据质量是你 AI Agent 的真实瓶颈

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个团队花了三个月时间为他们的知识智能体(knowledge agent)调优提示词。他们尝试了 GPT-4,接着是 Claude,然后是一个微调模型。他们重写了六次系统提示词,还聘请了一名提示词工程师。智能体却一直在产生幻觉——语气自信、表达流利,但内容是错的。真正的问题最后被发现是向量库中存放了一份 2023 年的 Confluence 导出文件,以及一份充满矛盾、随意的 Slack 归档讨论,两者都在讨论同一话题。模型只是在履行它的职责:综合处理给定的信息。而这些信息本身就是垃圾。

超过 60% 的生产环境 AI 项目失败可以追溯到数据质量、上下文问题或治理失败,而非模型限制。然而,当智能体表现异常时,人们的第一反应几乎总是修改提示词。第二反应是切换模型。第三可能是增加一个重排序器(reranker)。而喂给整个流水线的上游数据库,在浪费了数月工作时间之前,很少会出现在排错清单上。

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

· 阅读需 10 分钟
Tian Pan
Software Engineer

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

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

压缩陷阱:为什么长时运行的智能体会忘记已经尝试过的事情

· 阅读需 10 分钟
Tian Pan
Software Engineer

智能体调用文件写入工具,工具因权限错误而失败。智能体记录此事,转而采用其他方案。任务运行足够长时间后,运行时触发上下文压缩,生成摘要:"智能体一直在尝试写入输出文件。"被丢弃的内容:权限错误曾经发生过,以及为什么最初的方案被放弃。三百个 token 之后,智能体再次尝试同样的写入操作。

这种模式——姑且称之为压缩陷阱——是生产智能体系统中最顽固的可靠性故障之一。这不是模型 bug,而是压缩机制的工作方式与智能体在长时会话中保持连贯性所需之间的架构失配。