内容提要
Databricks通过Unity Gateway追踪MCP工具调用,结合Genie One分析,发现七个工具服务器小错误导致每年浪费约49.9万美元令牌和1.2万工程小时(总计120万美元)。修复仅用一小时。关键教训:工具应适应LLM自然调用方式,而非崩溃;错误信息质量影响恢复成本。追踪和自然语言查询使成本管理可操作。
延伸解读
静默失败:AI代理的隐性成本
文章揭示了一个关键问题:AI代理在工具调用失败时往往不会立即报错,而是默默重试或猜测,导致令牌和工程时间的浪费。这种失败在外部看来任务仍能完成,但成本却悄然累积。例如,一个简单的.split()错误每年就造成约8.7万美元的令牌浪费和4850小时的等待时间。这提醒我们,监控代理行为时,不能只看最终结果,更要关注过程中的失败和重试。
工具设计应适配LLM的自然调用方式
文章指出,许多MCP工具签名故意保持模糊以节省上下文令牌,但这导致模型会基于常识做出合理猜测,而服务器却只接受一种输入格式,从而引发错误。例如,Jira工具期望逗号分隔的字符串,但模型自然传递了JSON数组。因此,工具设计应更宽容,主动处理多种合理输入,而不是崩溃。这要求开发者从模型的角度思考,让工具适应模型的调用习惯,而非反之。
错误信息质量直接影响恢复成本
文章通过数据对比了不同错误信息质量对恢复成本的影响:自解释的错误信息平均只需4.6轮恢复,而模糊的traceback需要12.1轮,误导性错误信息则高达13.1轮。这意味着,清晰、具体的错误信息能显著减少代理的无效尝试和令牌消耗。优化错误信息是降低AI代理成本的一个简单而有效的切入点。
Q&A
Databricks是如何发现并消除每年120万美元的AI代理浪费支出的?
Databricks通过Unity Gateway追踪所有MCP工具调用,并使用Genie One进行自然语言分析,发现了七个工具服务器的小错误,这些错误导致每年约49.9万美元的令牌浪费和1.2万工程小时的损失,总计约120万美元。修复这些错误仅用了一小时。
Unity Gateway在AI代理成本管理中扮演什么角色?
Unity Gateway自动为所有MCP工具调用生成OpenTelemetry追踪,包括工具名称、参数、错误、令牌数、延迟和会话ID,并将这些数据记录在统一表中。这使得团队能够将浪费的支出归因于特定的工具、错误和代理会话,从而让成本管理更加可操作。
Genie One如何帮助Databricks分析AI代理的工具调用数据?
Genie One允许团队用自然语言查询追踪表,无需编写SQL。Databricks团队直接向Genie One提问,例如“代理似乎在Jira调用上挣扎”,Genie One在几分钟内返回了排名和量化的错误列表,将模糊的怀疑转化为可操作的修复清单。
为什么工具调用失败会导致大量浪费?
当工具调用失败时,代理通常不会大声失败,而是会重试、猜测并最终绕过问题,这期间会悄悄消耗令牌和开发人员时间。从外部看任务仍然完成,但成本仪表板可能只显示令牌支出增加10%,容易被误认为是使用量增长,从而掩盖了浪费。
在Jira工具中,'list' object has no attribute 'split'错误是如何产生的?
Jira的issues.search工具期望fields参数是逗号分隔的字符串,如“key,summary,status”,但模型根据JSON惯例和相邻工具调用推断出数组是更自然的类型,因此传递了列表。服务器尝试对列表调用.split(),导致Python回溯错误,代理无法理解错误信息,平均需要12轮才能恢复,造成大量浪费。
根据文章,工具设计应遵循什么原则以避免代理调用失败?
工具应该适应LLM自然调用它们的方式,例如将列表强制转换为字符串、默认省略的参数、吸收意外的参数等。工具签名通常故意保持宽松以节省上下文令牌,但服务器应该接受多种合理的解释,而不是在遇到不符合作者预期形状的输入时崩溃。
错误信息质量如何影响代理的恢复成本?
恢复成本与错误信息质量几乎完美相关。自文档化的错误信息(如“find_text and replace_text required”)平均只需4.6轮恢复,而模糊的回溯(如“'list' object has no attribute 'split'”)需要12.1轮,误导性的错误信息(如“unexpected keyword argument 'analysis_prompt'”)需要13.1轮。
Databricks团队修复这些工具错误花了多长时间?
从发现、量化到修复七个错误,整个循环大约花了一小时。其中大部分时间用于阅读Genie One的答案,而实际修复由编码代理快速完成。