← 返回
AI技术

针对 AWS 上多智能体 AI 的每智能体成本追踪

✍️ zhirenhun 📅 2026/9/24 👁 351 阅读 ⏱ 68 分钟
针对 AWS 上多智能体 AI 的每智能体成本追踪

您的多智能体运行刚刚返回了一个完美的答案。摘要清晰,资源正确,没有错误。您的 APM 仪表盘(您已经在运行的应用性能监控:正常运行时间、延迟、错误率)显示 200 OK,延迟正常,一切绿色。

而且您被静默地多收取了大约应付费用的 1.4 倍。

那部分是没有人会向您展示的。嵌套追踪和每个智能体的成本正变得普遍;原始构建块现在很容易找到。如今仍然罕见的是一种数据模型,它能让您 act 在这些数据上:捕获那些看似完全成功但实际上正在烧钱的运行。论文《为什么多智能体 LLM 系统会失败?》(MAST, arXiv:2503.13657)对 7 种最先进的多智能体系统的 150 条追踪进行了人工标注,标注者间一致性达到 kappa=0.88,并测得故障率在 41% 到 86.7% 之间。令人不安的发现:许多这些故障并不会导致崩溃。它们完成了运行。它们看起来一切正常。

在本文中,我构建了一个小型只读的 "AWS Account Investigator" 团队,将真实成本嵌入到每个追踪跨度中,然后用真实的 Amazon Nova Pro 美元重现三种静默浪费模式。您可以在本地以 0 美元运行整个过程。您的 AWS 账户不会被创建、修改或删除任何内容。

如果您只有两分钟,请直接跳转到 独特部分:捕捉静默浪费。虽然前期铺垫很重要,但这一节才是收获。

我在真实的 AWS 账户上花费了大约一周时间:在信任它之前,我花了几天时间探测 SDK 的行为;随后又花了几天时间构建团队,观察追踪设计两次失效;在文档用尽时,我阅读了 SDK 源码。以下内容基于此经验而非快速入门。这些伤痕是有意保留的,因为它们正是能为您节省一周时间的部分。

这篇文章面向已经在构建 AI 智能体但尚未在其下方放置真实可观测性层的人员。您已经了解智能体、工具和团队。当追踪术语(跨度、追踪、OpenTelemetry)对您来说是新内容时,我会在首次出现时进行定义。


目录

  • 自行构建,零成本且只读
  • 对 Traccia 的诚实看法
  • 诚实的警告
  • 常见问题

  • 为什么代理可观测性是一个不同的问题

    传统的应用监控回答三个问题:它是否正在运行,速度是否够快,是否出错。对于 CRUD 服务来说这就足够了,因为工作是确定的,故障模式也很明显。AI 代理打破了这三个假设。它在运行时决定自己的控制流,它调用工具的顺序不是你硬编码的,并且它为每个推理步骤按 token 付费。一次运行可能表现为正常、快速且无错误,但实际上在做错的工作量:重复读取相同数据,在步骤之间拖着臃肿的上下文,在稳定前多循环一次。这些情况不会表现为 500 错误或慢速跨度。它们会出现在账单上,到那时已经是趋势而非单一事件。

    因此,代理可观测性必须记录经典 APM 从未需要的内容:代理进行了多少推理循环,它调用了哪些工具,与它被允许调用的工具相比,每一步的 token 数量和美元成本,以及在多代理团队中哪个代理做了什么。这些属性使得不可见的回归变得可见。

    这并不是边缘观点。AWS 自己的 Well-Architected Agentic AI Lens 将基线状态(其“Level 1”)定义为正是这个问题:代理成本仅在账户层面可见,Cost Explorer 无法区分代理或工作流,且“团队只能在事后对账单惊喜做出反应,因为缺少按代理和按推理阶段的归因。”以下内容的重点是摆脱 Level 1:使支出能够“在推理循环、代理、工作流和租户层面进行归因,而不仅仅是在账户层面”,这正是 AWS 对目标的描述。

    以下是快速的词汇锚点,因为后文依赖此概念。span 是一个带有属性的计时步骤(一次 LLM 调用、一次工具调用、一次 AWS 读取)。trace 是一次工作单元的 span 树。经典 APM 也会记录 span,但仅记录显眼的属性(状态、延迟)。代理可观测性使用相同的 trace 结构,携带代理特定的属性:循环次数、token 数、成本以及哪个代理拥有该步骤。这就是整个想法;下面的内容只是在正确的 span 上添加正确的属性。

    在一次运行中,1.4x 的超支只是四舍五入的误差。在企业规模下,这成为预算项和治理问题,并以四种具体方式体现:

    Net: 对于受支持的框架,你可以免费获得很多功能;即使偏离常规路径,OTel 基础设施和成本/身份模型也很可靠。功能已经具备;缺失的打磨主要是文档以及少数开发者体验上的小瑕疵,这正是你对这个阶段产品所能期待的。


    坦率的警告

    我想直言不讳地谈论局限,因为这就是这篇文章的核心目的。

    收获不是“购买一个可观测性工具”。而是一个看似正确的答案并不能告诉你运行是否高效,而真相仅存在于 trace 中,你必须刻意放置在那些属性上。


    常见问题

    什么是 AI 代理可观测性,它与 LLM 监控有何不同?
    LLM 监控通常只关注单次模型调用:延迟、错误,也许还有 token 数。而代理可观测性则观察整个推理会话:代理经历了多少轮循环,调用了哪些工具,每一步的成本是多少,在多代理团队中,哪个代理做了什么。代理的故障往往体现在多步骤链路上,而不是单次调用,因此需要完整的追踪才能发现它们。

    如何在 Amazon Bedrock 上跟踪每个代理的成本?
    Bedrock 在每次调用后会返回 token 使用量。将输入和输出 token 数分别乘以模型的每 1K token 价格(例如 us-east-1 区域的 Nova Pro,输入 $0.0008,输出 $0.0032),得到的美元金额附加到发起该调用的代理对应的 trace span 上。这就是本文中的 stamp_llm_cost 函数。AWS 自带的基于标签的成本分配在 Cost Explorer 中仅作用于账户和标签层面;而按代理、按推理循环进行归因则是 trace 额外提供的信息。

    AWS Cost Explorer 能否自行显示每个代理的成本?
    不能单独实现。根据 AWS Well-Architected Agentic AI Lens,默认情况下成本仅在账户层面可见,Cost Explorer 无法区分不同的代理或工作流。标签分配加上 AgentCore Observability 能有所改善,但按代理、按推理阶段的归因仍需通过插装 trace 来实现——这就是本次构建所做的。

    为什么我的多代理应用即使运行正常也会超出预期成本?
    因为正确的答案并不一定便宜。代理可能会多跑一次推理循环,重复调用已经得到答案的工具,或者在各步骤之间携带臃肿的上下文。这些操作不会产生错误,只会增加 token 消耗。超支会体现在账单上,而不是延迟和错误的仪表盘中——这就是本文所讨论的“隐形浪费”。

    尝试此方案是否需要付费工具或 AWS 账户?
    不需要。整个构建在本地运行成本为 $0:Traccia SDK 将追踪写入本地文件,无需 API key;AWS 读取使用只读凭证(或已提交的重放运行,此时根本不需要 AWS 访问权限)。只有在您希望在自己的账户中运行实时代理团队时,才需要申请 Bedrock 模型的使用权限。

    Traccia 是否开源?
    SDK(traccia-py) 采用 Apache-2.0 许可证开源,并基于 OpenTelemetry 构建,因此其 span 遵循 OTel 标准,您不会被供应商锁定。托管的仪表盘位于 traccia.ai,为可选的商业组件;只有在您需要可视化时才会使用它。

    Traccia 是否开箱即用支持 AWS Strands Agents?
    撰写本文时,Traccia 尚未原生支持。它会自动插桩 LangChain、CrewAI 以及 OpenAI/Anthropic/Gemini 客户端,但不包括 Strands 或原始 Bedrock converse,因此在这套技术栈上,您需要自行在 span 上添加成本(大约 40 行代码)。在受支持的框架上,大部分工作会自动完成。


    试用

    完整代码(包括 crew、工具、废弃演示、实时控制面板、对比视图以及双计数探针)已在 GitHub 上提供:ai-agent-observability-aws。此外,您还可以在浏览器中点击查看一次运行的实时回放:https://simplynadaf.github.io/ai-agent-observability-aws/。克隆该仓库,使用本地导出运行 python -m src.waste_demo,您将看到一个完美答案的成本约为 1.4 倍。然后,在您的账单产生费用之前,为您自己的代理添加插桩。

    要将 Traccia 集成到您自己的代理中,上手过程故意设计得简短且免费:

    1. 安装 SDK(开源,Apache-2.0):pip install traccia。未提供 API key 时,它会将追踪写入本地文件,因此您在注册任何服务之前就可以看到 $0 的 span。源码和文档:github.com/traccia-ai/traccia-py。
    2. 在您的 span 上添加成本使用上面约 40 行的 stamp_llm_cost 模式(或者如果您使用 LangChain、CrewAI 或 OpenAI/Anthropic/Gemini 客户端,Traccia 会自动插桩,则可免费获得)。
    3. 在仪表盘中查看当您想要可视化的每个代理成本以及并排运行比较时:设置 TRACCIA_API_KEY,并将相同的 span 推送到 traccia.ai。无论哪种方式,span 都是相同的,因此您的插桩不会有任何变化。

    如果您使用它构建了某些东西,请告诉我您发现的静默浪费。这就是有趣的部分。


    欢迎关注我,获取更多关于 AWS 架构、DevOps 和 AI 基础设施的内容:
    作品集 | LinkedIn | Dev.to | YouTube | 邮箱 | AWS Builder Center | X

    ——

    广告 广告
    🧑‍💻

    zhirenhun

    一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

    aws observability ai discuss