通过 MLflow AI Gateway 路由 Claude Code
像 Claude Code 这样的 AI 编程助手正逐渐成为开发工作流程的标准组成部分。一个代理在处理复杂任务、理解代码库、编写测试、修复错误时,可能在单次会话中进行数十甚至上百次 LLM 调用。这种自主性虽然强大,但也引入了单次提示(one-shot prompt)所不会遇到的问题:这要花多少钱?代理到底向模型发送了什么?我们能否在每次会话中强制执行内容策略?
MLflow AI Gateway 可以解答以上所有问题。从 MLflow 3.12.0 版本开始,您可以通过两个环境变量将 Claude Code 路由到网关,无需修改应用程序代码,即可立即获得完整的请求追踪、预算执行和防护栏功能。
工作原理
MLflow AI Gateway 位于 Claude Code 和 Anthropic API 之间。从 Claude Code 的角度来看,没有任何变化,它仍以同样的方式进行身份验证。而从网关的角度来看,每个请求都是一个可追踪、可管理的事件。
这种透传设计意味着您可以在无需集中管理密钥的情况下获得集中式可见性:每位开发者保留自己的 Anthropic 凭证,而网关则在上方添加治理功能。
设置集成
设置只需三步:启动 MLflow 服务器、创建端点,并设置两个环境变量。
第 1 步:启动 MLflow 服务器
pip install mlflow
mlflow server --port 5000
第 2 步:创建 Anthropic 端点
在 https://:5000/#/gateway 打开 MLflow UI 并导航至 AI Gateway。点击 Claude Code 图标并进行配置。
第 3 步:将 Claude Code 指向网关
在您的 shell 中设置两个环境变量。
export ANTHROPIC_BASE_URL="https://:5000/gateway/proxy/claude-code"
就是这样。像往常一样运行 claude。所有请求现在都将通过网关传输。
可观测性:将每个请求视为一个追踪
最直接的好处是可见性。Claude Code 发出的每一次调用,无论会话时长如何或代理进行了多少次交互,都会自动捕获为 MLflow 追踪。无需插桩,无需 SDK 导入,也无需更改代码。
打开 MLflow UI 中的 Traces(追踪) 选项卡,查看所有请求的时间线:按会话组织的提示词、响应、Token 计数和延迟。
点击任何追踪即可查看发送和接收内容的详细信息。
这种详细程度对于理解长期运行的代理会话到底执行了什么、哪些子任务消耗了最多的 Token、延迟峰值出现在哪里以及提示词如何在交互中演变,特别有用。
预算控制:控制支出
编程代理旨在自主工作,这使得它们很容易被遗忘并导致过度运行和高额费用。MLflow AI Gateway 的预算策略允许您全局或按工作区设置支出阈值,并配置警报和硬性限制。
当会话接近阈值时,网关会发送警报。当达到硬性限制时,后续请求将在到达模型之前被拒绝,从而在源头上阻止失控的成本,而不是等到账单送达后才发现。
有关配置详情,请参阅预算策略文档。
防护栏:在每次会话中执行策略
由于每个 Claude Code 请求都通过网关,因此防护栏可以统一应用,无需进行逐个应用的配置。在请求到达 Anthropic 之前,防护栏可以筛选提示词注入或限制主题。在响应返回后,它们可以在代理看到输出之前过滤有毒内容或编辑个人身份信息(PII)。
例如,在“之前(Before)”阶段设置的 PII 防护栏将拦截任何包含电子邮件地址或电话号码等个人数据的请求,并返回带有理由的结构化错误,以便调用者准确知道为何被拦截。
有关防护栏类型、配置以及“阻止 vs. 脱敏”操作的完整指南,请参阅防护栏博客文章。
入门
此处描述的所有功能均随 MLflow 发布。请遵循 Claude Code 的 AI Gateway 文档获取完整设置说明,如果您使用的是 OpenAI Codex 或 Gemini CLI,也可直接跳转到对应的 OpenAI Codex 和 Gemini CLI 文档。
通过 MLflow AI Gateway 路由 Claude Code 是为自主编程会话添加可观测性和治理功能的最快方式。它与防护栏和预算策略一起,构成了 MLflow AI Gateway 内置治理层的一部分。如果您遇到问题或有任何反馈,请在 MLflow 的 GitHub Issues 上提交报告。
⭐ 在 GitHub 上为我们点星,展示您对该项目的支持!
