Bifrost 是一个使用 Go 语言构建的高性能大语言模型(LLM)网关。它的核心作用是为开发者提供一个统一的接口,用于连接和管理多个不同的大模型供应商,例如 OpenAI、Anthropic、Amazon Bedrock 等。通过这个网关,应用程序无需为每个模型单独编写集成代码,从而简化了开发流程。Bifrost 的设计重点是性能和可靠性,它在处理大量请求时只增加微秒级的延迟。 它内置了自动故障切换和负载均衡功能,当某个模型或供应商出现问题时,系统可以自动将请求转发到备用选项,确保服务的连续性和稳定性。此外,Bifrost 还提供了一个可视化的网页界面,让用户可以实时监控请求、管理模型配置和查看分析数据,极大地简化了运维工作。
功能列表
- 统一 API 接口:通过单个 API 端点连接超过10个主流大模型供应商,包括 OpenAI, Anthropic, Amazon Bedrock, Mistral, Ollama 等。
- 高性能处理:使用 Go 语言构建,在每秒处理5000个请求的负载下,平均只增加约11微秒的延迟开销。
- 内置 Web 用户界面:提供可视化的配置界面和实时监控仪表盘,用户可直接在浏览器中管理供应商、监控日志和分析指标,无需手动编辑配置文件。
- 自动故障切换:当一个模型或供应商的请求失败时,能自动重试或切换到预设的备用模型,保障服务的稳定性。
- 负载均衡与密钥管理:支持对 API 密钥进行动态和加权管理,有效地在多个密钥或供应商之间分配请求。
- 开箱即用的可观测性:原生支持 Prometheus 指标,可以轻松集成到现有的监控系统中,无需额外的配置。
- 多种集成方式:支持三种使用模式:作为独立的 HTTP 服务运行、作为 Go 语言包直接集成到应用中,或作为现有 OpenAI/Anthropic SDK 的直接替代品(只需修改 API 的基础 URL)。
- 插件化架构:采用插件优先的架构设计,并支持模型上下文协议(MCP),方便扩展和集成外部工具。
使用帮助
Bifrost 提供了多种灵活的使用方式,最快的方式是通过 npx
命令启动一个本地 HTTP 服务,这种方式无需安装任何依赖,即可在30秒内拥有一个功能完备的 AI 网关。
1. 快速启动(HTTP 服务)
这是最简单、最快捷的方式,适合所有开发者。它会启动一个本地服务器以及一个配套的 Web 管理界面。
环境要求:
- 安装了 Node.js (18+ 版本)。
- 拥有至少一个大模型供应商的 API 密钥(例如 OpenAI)。
操作步骤:
第一步:启动 Bifrost 服务
在你的终端(命令行工具)中运行以下命令:
npx @maximhq/bifrost
执行后,该命令会自动下载并运行 Bifrost。服务默认会监听本地的 8080
端口。
第二步:配置供应商
服务启动后,在你的浏览器中打开以下地址,进入 Bifrost 的 Web 管理界面:
http://localhost:8080
在这个界面中,你可以直观地添加和管理不同的大模型供应商。例如,要添加 OpenAI,你只需点击“添加供应商”按钮,然后填入你的 OpenAI API 密钥即可。你还可以设置模型的权重、优先级等高级选项,用于负载均衡和故障切换。
第三步:测试 API 调用
配置完成后,你的应用程序就可以通过访问 Bifrost 的 8080
端口来调用大模型了。Bifrost 会将你的请求转发给目标供应商。你可以使用 curl
命令来测试服务是否正常工作:
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [
{"role": "user", "content": "你好,Bifrost!🌈"}
]
}'
如果收到来自模型的回复,说明你的网关已经成功运行。
2. 作为现有代码的直接替代品
如果你的代码中已经集成了 OpenAI 或 Anthropic 的 SDK,你可以用最少的代码改动来使用 Bifrost。
操作步骤:
- 按照上述“快速启动”方法,先运行 Bifrost 服务并完成供应商配置。
- 在你的应用程序代码中,找到初始化 SDK 时设置的
base_url
或baseURL
参数。 - 将这个 URL 从官方接口地址修改为 Bifrost 服务的地址。
代码示例:
假设你原来的 OpenAI Python 代码是这样:
from openai import OpenAI
client = OpenAI(
api_key="YOUR_OPENAI_API_KEY",
# base_url="https://api.openai.com/v1" # 这是原来的地址
)
你只需要将其修改为:
from openai import OpenAI
client = OpenAI(
api_key="YOUR_OPENAI_API_KEY", # 这里的 key 依然需要,但 Bifrost 会使用自己管理的 key
base_url="http://localhost:8080/v1" # 指向 Bifrost 网关
)
修改完成后,你的应用请求就会通过 Bifrost 进行转发,你将自动获得故障切换、负载均衡等所有网关功能,而无需更改任何其他的业务逻辑代码。
3. 作为 Go 语言包集成
对于 Go 语言开发者,可以直接将 Bifrost 的核心功能作为库集成到自己的应用程序中,以获得最高的性能和最强的控制力。
操作步骤:
- 在你的 Go 项目中,使用以下命令获取 Bifrost 核心包:
go get github.com/maximhq/bifrost/core
- 在你的代码中导入并使用 Bifrost。你可以通过代码来配置供应商、路由规则和插件。这种方式避免了额外的 HTTP 通信开销,性能最佳。详细的 API 和使用方法可以参考项目官方文档。
应用场景
- 提升 AI 应用的稳定性
对于需要持续提供服务的生产环境应用,模型的稳定性至关重要。通过 Bifrost 的自动故障切换功能,当主要模型(如 GPT-4)因故无法访问时,系统能自动切换到备用模型(如 Claude 3 或其他模型),确保用户的请求总能得到处理,从而避免服务中断。 - 降低和管理多模型使用成本
不同的模型有不同的定价策略。开发者可以在 Bifrost 中配置多个模型,并设置路由规则,例如将计算密集的复杂任务交给性能强大但昂贵的模型,而将简单的常规任务分配给成本较低的模型。通过这种方式,可以在保证效果的前提下,显著优化运营成本。 - 简化多云或混合云部署
企业可能会同时使用来自不同云服务商(如 AWS Bedrock, Azure OpenAI)的模型。Bifrost 提供一个统一的 API 入口,屏蔽了底层供应商的差异。这使得应用程序的部署和迁移变得更加简单,避免了平台锁定。 - 快速实验和切换新模型
AI 领域模型更新迭代速度很快。当有新的、更优秀的模型出现时,开发者可以通过 Bifrost 的 Web 界面快速添加新模型并进行测试,甚至可以实现按流量比例进行 A/B 测试。整个过程无需修改和重新部署应用程序代码,大大加快了创新和迭代的速度。
QA
- Bifrost 和其他类似工具(如 LiteLLM)相比有什么优势?
Bifrost 最主要的优势是性能。 它是用 Go 语言从头开始构建的,专为高并发、低延迟的生产环境设计。根据官方的性能测试,在相同硬件下,Bifrost 的延迟开销远低于 LiteLLM 等基于 Python 的工具,能够处理更高的请求并发量。 此外,它自带的可视化 Web 界面也让配置和监控变得更加简单直观。 - 使用 Bifrost 是否会影响数据隐私?
Bifrost 是一个完全开源且可以自行部署的网关。 这意味着你可以将它部署在你自己的服务器或私有云环境中。所有请求和数据都只在你控制的基础设施内部流转,然后再直接发送给最终的大模型供应商,Bifrost 本身不会存储或将你的数据发送到任何第三方服务器,从而确保了数据隐私和安全。 - Bifrost 是否支持流式(Streaming)响应?
是的,Bifrost 完全支持大模型的流式响应。当你向一个支持流式输出的模型(例如 OpenAI 的聊天模型)发起请求时,Bifrost 会将模型生成的数据块实时地传回给客户端,这对于构建实时的聊天机器人或代码生成等应用至关重要。 - 配置故障切换的具体流程是怎样的?
在 Bifrost 的 Web 管理界面中,你可以为一个或多个主要模型设置备用(Fallback)模型列表。例如,你可以将openai/gpt-4o-mini
设置为主要模型,然后将anthropic/claude-3-haiku
和google/gemini-1.5-flash
添加到它的备用列表中。当对gpt-4o-mini
的请求失败后,Bifrost 会自动按照列表顺序依次尝试备用模型,直到请求成功为止。