揭示如何将Claude Code与任意LLM后端集成。为开发者提供灵活的跨模型编程环境。
我使用 Claude Code 已经有一段时间了。如果你是一名开发者,并且已经把它融入日常工作流,大概也有同样的感受:它确实很好用。它能读取你的代码库、运行命令、修改文件,还能直接在终端中协助实现功能,让你不必频繁切换上下文。
但用到某个阶段,大多数开发者都会和我一样撞上同一堵墙:如果我想使用其他模型呢?
如果 GPT-4o 更擅长处理你的特定代码库呢?如果 Gemini 更大的上下文窗口,恰好是那个庞大遗留项目所需要的呢?如果你在 API 调用上的花费已经超出合理范围,而且你知道其中一些简单任务完全可以交给更便宜的模型来完成呢?
Claude Code 默认只能与 Anthropic 通信。它的工作方式就是如此。虽然 Anthropic 的模型确实很强,但被限制在单一提供商上,意味着你是在用灵活性换取便利。这篇指南要讲的,就是如何二者兼得。
在进入解决方案之前,我们最好先明确一下,真正要解决的问题究竟是什么。
模型灵活性。不同模型各有所长。Claude Sonnet 非常适合大多数编程任务,但如果无法测试其他选择,你就无从判断它是否适合每一项工作。如果没有 Gateway,你就无法在不彻底更换工具的情况下进行实验。
成本管理。在活跃的会话中,Claude Code 消耗 token 的速度非常快。复杂的架构设计和样板代码生成显然不是同一种工作,却按照相同标准计费,这并不合理。把较简单的请求路由到价格更低的模型,可以显著降低成本,同时又不会影响真正重要场景中的输出质量。
合规与数据路由。如果你在金融科技、医疗健康或其他受监管行业工作,很可能遇到过有关数据流向的要求。在所有 API 流量抵达外部提供商之前,先让它们经过你自己的基础设施,这通常是不可妥协的要求。
可观测性。这一点经常被忽略。一次典型的 Claude Code 会话会消耗多少 token?每交付一个功能,实际成本是多少?如果没有请求日志,你真的只能靠猜。
Bifrost 是 Maxim AI 构建的一款开源 LLM Gateway,用于在应用程序与多个模型提供商之间路由、管理和优化请求。它采用 Apache 2.0 许可证,支持自行托管,并支持 20 多家提供商,包括 OpenAI、Anthropic、Google Gemini、AWS Bedrock、Azure、Mistral、Cohere、Groq 等。
它在技术层面有几个非常突出的特点:
不会成为阻碍的性能。在每秒处理 5,000 个请求时,Bifrost 为每个请求增加的内部开销不到 15 微秒。即使在生产规模下,这点开销也几乎可以忽略不计。
零配置启动。一条 npx 命令即可启动 Gateway,其余所有内容都可以通过 Web UI 配置。
内置 fallback 与负载均衡。如果某个提供商发生故障或对你实施速率限制,Bifrost 会自动把请求路由到备用提供商。你还可以使用加权规则,将流量分配到多个 key 或提供商。
语义缓存。重复或语义相似的查询可以直接从缓存返回,从而降低包含大量重复 prompt 的工作流的延迟和成本。
开箱即用的完整可观测性。Prometheus 指标、请求追踪、token 用量、延迟以及内置 Web 仪表盘全部包含在内。
它的架构非常直观:
Claude Code --> Bifrost (localhost:8080) --> Any LLM Provider
Claude Code 使用名为 ANTHROPIC_BASE_URL 的环境变量来确定 API 请求的发送地址。通常情况下,它指向 https://api.anthropic.com。你只需要改为指向 Bifrost。Bifrost 接收 Anthropic Messages API 格式的请求,将其转换成你所配置提供商需要的格式,再把响应转换回来。Claude Code 完全察觉不到其中的差异。
不需要修改代码。不需要打补丁。只需要一个环境变量。
使用多个 LLM 提供商设置并配置 Bifrost
将 Claude Code 与 Gateway 集成
使用任意模型运行 Claude Code
配置路由规则、fallback 和预算
集成 MCP 工具
使用内置的可观测性与监控能力
创建一个项目文件夹,在编辑器中打开它,然后运行:
npx -y @maximhq/bifrost -app-dir ./my-bifrost-data
-app-dir 参数用于告诉 Bifrost 将所有数据存储在哪里。Bifrost 会开始监听 8080 端口。
如果你更喜欢 Docker:
docker pull maximhq/bifrost
docker run -p 8080:8080 -v $(pwd)/data:/app/data maximhq/bifrost
-v 参数会挂载一个 volume,确保你的配置在容器重启后仍然保留。
在 ./my-bifrost-data 文件夹中创建一个 config.json 文件。该文件定义 Bifrost 可以将请求路由到哪些提供商,同时启用请求日志并设置数据库持久化:
{
"$schema": "https://www.getbifrost.ai/schema",
"client": {
"enable_logging": true,
"disable_content_logging": false,
"drop_excess_requests": false,
"initial_pool_size": 300,
"allow_direct_keys": false
},
"providers": {
"openai": {
"keys": [
{
"name": "openai-primary",
"value": "env.OPENAI_API_KEY",
"models": [],
"weight": 1.0
}
]
},
"anthropic": {
"keys": [
{
"name": "anthropic-primary",
"value": "env.ANTHROPIC_API_KEY",
"models": [],
"weight": 1.0
}
]
},
"gemini": {
"keys": [
{
"name": "gemini-primary",
"value": "env.GEMINI_API_KEY",
"models": [],
"weight": 1.0
}
]
}
},
"config_store": {
"enabled": true,
"type": "sqlite",
"config": {
"path": "./config.db"
}
},
"logs_store": {
"enabled": true,
"type": "sqlite",
"config": {
"path": "./logs.db"
}
}
}
"value": "env.OPENAI_API_KEY" 这种语法会告诉 Bifrost 从环境变量中读取真实的 key,而不是把它们存储在文件里。这样,你的密钥就不会进入版本控制系统。
export OPENAI_API_KEY="your-openai-api-key"
export ANTHROPIC_API_KEY="your-anthropic-api-key"
export GEMINI_API_KEY="your-gemini-api-key"
停止之前正在运行的所有 Bifrost 实例,然后使用 app directory 参数重新启动:
npx -y @maximhq/bifrost -app-dir ./my-bifrost-data
在浏览器中打开 http://localhost:8080。你会看到 Bifrost 仪表盘,所有配置与监控功能都集中在这里。
npm install -g @anthropic-ai/claude-code
在你准备运行 Claude Code 的同一个终端会话中,设置以下两个环境变量:
export ANTHROPIC_BASE_URL="http://localhost:8080/anthropic"
export ANTHROPIC_API_KEY="dummy-key"
dummy-key 这一部分刚开始可能有点反直觉。Claude Code 要求必须先设置这个变量才能运行,但对提供商的实际身份验证由 Bifrost 使用你之前配置的 key 完成。因此,你可以在这里填写任意非空字符串。
启动 Claude Code,并指定你想使用的模型:
claude --model openai/gpt-4o
若要路由到其他提供商,请使用提供商前缀模式:
openai/gpt-4o
openai/gpt-4o-mini
gemini/gemini-2.5-pro
groq/llama-3.1-70b-versatile
mistral/mistral-large-latest
anthropic/claude-sonnet-4-20250514
ollama/llama3
你可以先提出一个像 “Hello there” 这样的简单问题,快速进行健全性检查,确认请求能够正确流转。
Claude Code 连接完成后,你就可以开始使用 Bifrost 的路由功能,更精细地控制请求的处理方式。
Bifrost 中的 Virtual Keys 允许你定义自动生效的路由逻辑。进入 Governance > Virtual Keys,创建一个 key,然后配置路由权重:
{
"name": "dev-routing",
"budget": {
"max_budget": 100,
"budget_duration": "monthly"
},
"providers": [
{ "provider": "openai", "model": "gpt-4o", "weight": 0.7 },
{ "provider": "anthropic", "model": "claude-sonnet-4-20250514", "weight": 0.3 }
]
}
该配置会把 70% 的请求路由到 GPT-4o,另外 30% 路由到 Claude Sonnet,并设置每月 100 美元的硬性上限。预算耗尽后,Bifrost 会自动停止路由。对于团队而言,这可以替代大量手动成本监控工作。
当某个提供商宕机或你触发速率限制时,Bifrost 会按照 fallback 列表依次尝试,直到请求成功:
{
"model": "openai/gpt-4o",
"fallbacks": [
{ "provider": "anthropic", "model": "claude-sonnet-4-20250514" },
{ "provider": "gemini", "model": "gemini-2.5-pro" }
]
}
这样,即使某个提供商出现问题,你的编程会话也能继续进行,不需要任何人工干预。
如果你正在使用 Model Context Protocol Server 访问文件系统、执行 Web 搜索、查询数据库或接入自定义集成,Bifrost 同样提供支持。只需要在 Bifrost 中配置一次,这些工具就能供所有通过它进行路由的模型使用。
更新 config.json,加入 MCP Server 定义。下面是一个提供文件系统访问能力的示例:
{
"$schema": "https://www.getbifrost.ai/schema",
"client": {
"enable_logging": true,
"disable_content_logging": true,
"drop_excess_requests": false,
"initial_pool_size": 300,
"allow_direct_keys": false
},
"mcp": {
"client_configs": [
{
"name": "filesystem",
"connection_type": "stdio",
"stdio_config": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
},
"tools_to_execute": ["*"],
"tools_to_auto_execute": [
"read_file",
"list_directory",
"create_file",
"delete_file"
]
}
],
"tool_manager_config": {
"max_agent_depth": 10,
"tool_execution_timeout": 300000000000,
"code_mode_binding_level": "server"
}
}
}
重启 Bifrost,然后在 Web UI 中进入 MCP catalog 页面,确认 filesystem server 显示为已连接。
claude mcp add --transport http bifrost http://localhost:8080/mcp
重启 Claude Code,然后尝试执行一个需要调用 MCP 工具的任务。例如:
Create a simple calculator program in Python.
It should support addition, subtraction, multiplication, and division.
The user should input two numbers and an operation, and the program should print the result.
Analyze this repository and create a README.md explaining how the project works.
Include the project architecture and instructions for running it locally.
如果 MCP 集成工作正常,Claude Code 会通过 Bifrost 的工具注入来读取文件、创建新文件,并与你的文件系统交互。
这是我第一次完成设置时,最让我惊喜的部分。
每一个经过 Bifrost 的请求都会被完整记录,包括输入 prompt、响应内容、处理请求的模型、延迟和成本。位于 http://localhost:8080/logs 的 Web 界面提供以下功能:
实时流式展示请求与响应
跟踪每个请求的 token 用量
按提供商、模型或对话内容筛选
完整检查请求与响应
对于个人开发者来说,这有助于了解自己真实的使用模式。对于团队来说,它会成为一套完善的审计记录。你可以看到哪些模型使用得最多、高成本请求来自哪里,以及你的路由规则是否真的按照预期运行。
对于希望将这些数据集成到现有监控流水线中的团队,Bifrost 还提供了 Prometheus 指标。
如果你是一名个人开发者,只是偶尔使用 Claude Code,而且没有任何合规或成本方面的顾虑,那么默认配置可能已经足够。
但如果以下任意一种情况符合你的需求,那么花时间设置一个 Gateway 就很值得:
你想测试不同模型在特定工作负载上的表现
你需要管理整个团队的 API 成本
你的组织对数据路由或基础设施控制有明确要求
你希望真正掌握 AI 使用情况,而不是在月底收到账单时才感到意外
你使用 MCP 工具,并希望它们能跨多个模型提供商使用,而不必每次重新配置
Bifrost 是开源且支持自行托管的,这意味着你的 prompt 和响应会留在自己的基础设施中。对于需要处理专有代码库的团队来说,这与把所有内容直接路由到第三方 API 相比,是一个意义重大的区别。
GitHub:git.new/bifrost
部分评论可能只有登录后的访客才能看到。请登录以查看所有评论。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。