你的 OpenAI/Anthropic 账单上的 AI 代理是谁花的钱?
Spaturzu 是一个开源 SDK,允许开发者通过仅更改一行导入语句,将现有的 LLM 客户端(如 OpenAI、Anthropic)包装为支持按代理进行成本归属、预算控制和跨提供商故障转移的客户端,无需修改调用代码。
Spaturzu 是一个由 Superchiu Ltd 开发的开源 SDK,旨在解决 AI 代理成本归因和管理中的痛点。它允许开发者将现有的 LLM 提供者客户端(如 OpenAI、Anthropic、Bedrock、Gemini、Mistral)包装起来,从而为每个 API 调用分配代理标识,并在后台进行计量,而无需更改调用代码。
迁移过程极为简单:只需将导入语句从 import OpenAI from "openai" 改为 import OpenAI from "@spaturzu/sdk/openai",然后使用 withAgent 或 run 方法标记调用,即可将成本归属于特定代理。Python 版本的用法类似:from spaturzu.openai import OpenAI,然后使用 client.with_agent("support-triage").chat.completions.create(...)。这种一行导入替换适用于所有支持的提供商,包括 Anthropic、Bedrock、Google Gemini 和 Mistral。
除了成本归属,Spaturzu 还提供预算控制功能。开发者可以为每个代理设置硬预算上限。当代理的预算耗尽时,包装后的客户端会在调用到达提供商之前抛出 BudgetExceededError,从而避免产生任何费用。如果希望更温和的处理方式,可以设置 onBreach: "warn" 来记录警告并继续执行。
对于需要高可用性的场景,Spaturzu 支持跨提供商故障转移。通过配置一个备选提供商链,当主提供商返回可重试错误(如 HTTP 429 或 5xx)时,SDK 会自动重试下一个备选提供商,并将响应格式转换为与主提供商一致的形状,确保下游代码无需修改。目前支持所有 20 个方向的提供商对,但 v1 版本的故障转移仅支持非流式文本响应,不支持工具调用或 response_format。
Spaturzu 的另一大特色是嵌套代理支持。开发者可以使用 run() 方法嵌套调用,从而为多步骤工作流构建成本树。例如,一个“研究”代理可以包含一个“综合”子代理,所有调用都会沿路径归属到相应节点,在仪表盘上以树状结构呈现。此外,标签系统允许在全局或每个调用帧上设置标签,从而按团队、客户或环境进行成本细分。
安装方面,Spaturzu 支持 Python 和 TypeScript/Node。Python 包发布在 PyPI 上,支持 Python 3.10+,可通过 pip install spaturzu 安装核心包,并可选择安装特定提供商集成(如 pip install "spaturzu[openai]")。TypeScript 包发布在 npm 上,为 ESM 模块,可通过 npm install @spaturzu/sdk 安装,同时需自行安装所需提供商的客户端包。
Spaturzu 的包装过程是透明的:包装后的客户端拥有与原客户端相同的方法和返回类型,开发者继续以通常的方式调用模型,Spaturzu 在后台默默计量每个调用。对于短生命周期的进程(如 CLI 工具或无服务器函数),需要在退出前调用 flush() 以确保计量数据被发送。
Spaturzu 采用 MIT 许可证发布,其完整文档、API 参考和更多示例可在官方网站 spaturzu.superchiu.org 上找到。目前还提供了一个实验性的 OpenClaw 插件,用于计量和预算管理,但尚不建议用于生产环境。