你的 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 插件,用於計量和預算管理,但尚不建議用於生產環境。