通过一次 URL 更改,为您的 LLM 堆栈添加 Observability、Routing 和 Failover

发布: (2025年12月21日 GMT+8 10:02)
6 min read
原文: Dev.to

Source: Dev.to

Bifrost 是一个高性能 AI 网关,通过单一 兼容 OpenAI 的 API 统一访问 15+ 家提供商(OpenAI、Anthropic、AWS Bedrock、Google Vertex,…)。部署仅需几秒,无需配置,即可获得自动故障转移、负载均衡、语义缓存和企业级可观测性。

为什么选择 Bifrost?

如果你的 LLM 应用已经可以正常工作,你不应该仅仅为了添加以下功能而重构它:

  • 可观测性
  • 负载均衡
  • 缓存
  • 提供商故障转移

大多数解决方案会迫使你:

  • 重写 API 调用
  • 学习全新的 SDK
  • 重构已稳定的代码
  • 重新测试所有内容(风险大且成本高)

Bifrost 避免了所有这些。只需将其嵌入,修改一个 URL,即可完成。

快速入门

在不到一分钟的时间内,从 可投入生产的 AI 网关

步骤命令
1️⃣ 启动 Bifrost 网关本地安装并运行
bash\nnpx -y @maximhq/bifrost\n
或使用 Docker
bash\ndocker run -p 8080:8080 maximhq/bifrost\n
2️⃣ 通过 Web UI 配置打开内置界面:
bash\nopen http://localhost:8080\n
3️⃣ 发起你的首次 API 调用bash\ncurl -X POST http://localhost:8080/v1/chat/completions \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"model\": \"openai/gpt-4o-mini\",\n \"messages\": [{\"role\": \"user\", \"content\": \"Hello, Bifrost!\"}]\n }'\n

就这样——你的 AI 网关已经运行,并配有用于可视化配置和实时监控的 Web UI。

View on GitHub

与 OpenAI 兼容 – 一行更改

如果你的代码已经可以使用 OpenAI,那么它同样可以使用 Bifrost。

import openai

# Original OpenAI usage
openai.api_key = "sk-..."
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello"}]
)

# 👉 Switch to Bifrost – only the base URL changes
openai.api_base = "http://localhost:8080/openai"
openai.api_key = "sk-..."
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello"}]
)

其他一切保持不变。 由于 Bifrost 与 OpenAI 兼容,它可以与任何已经支持 OpenAI 的框架一起使用。

LangChain

from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI(
    openai_api_base="http://localhost:8080/langchain",
    openai_api_key="sk-..."
)

LlamaIndex

from llama_index.llms import OpenAI

llm = OpenAI(
    api_base="http://localhost:8080/openai",
    api_key="sk-..."
)

LiteLLM

import litellm

response = litellm.completion(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello"}],
    base_url="http://localhost:8080/litellm"
)

Anthropic SDK

import anthropic

client = anthropic.Anthropic(
    base_url="http://localhost:8080/anthropic",
    api_key="sk-ant-..."
)

模式: 只需更新 base URL,保持其余代码不变。

多提供商路由

在单个 JSON/YAML 配置中定义提供商。Bifrost 会根据模型名称将请求路由到相应的后端。

{
  "providers": [
    {
      "name": "openai",
      "api_key": "sk-...",
      "models": ["gpt-4", "gpt-4o-mini"]
    },
    {
      "name": "anthropic",
      "api_key": "sk-ant-...",
      "models": ["claude-sonnet-4", "claude-opus-4"]
    },
    {
      "name": "azure",
      "api_key": "...",
      "endpoint": "https://your-resource.openai.azure.com"
    }
  ]
}
# 路由到 OpenAI
response = client.chat.completions.create(
    model="gpt-4",
    messages=[...]
)

# 路由到 Anthropic
response = client.chat_completions.create(
    model="anthropic/claude-sonnet-4",
    messages=[...]
)

只需更改模型名称即可切换提供商——无需重构代码。

内置可观测性

插件(例如 Maxim)

{
  "plugins": [
    {
      "name": "maxim",
      "config": {
        "api_key": "your-maxim-key",
        "repo_id": "your-repo-id"
      }
    }
  ]
}

每个请求都会自动在 Maxim 仪表盘中追踪 —— 无需仪器代码

指标(Prometheus)

{
  "metrics": {
    "enabled": true,
    "port": 9090
  }
}

指标在 /metrics 暴露,可被 Prometheus 抓取。

OpenTelemetry(OTLP)

{
  "otel": {
    "enabled": true,
    "endpoint": "http://your-collector:4318"
  }
}

标准 OTLP 导出到任何兼容 OpenTelemetry 的收集器。

提供商特定示例(Claude)

{
  "baseURL": "http://localhost:8080/openai",
  "provider": "anthropic"
}

所有 Claude 请求现在通过 Bifrost 流动,实现成本跟踪、令牌使用和缓存。

custom:
  - name: "Bifrost"
    apiKey: "dummy"
    baseURL: "http://localhost:8080/v1"
    models:
      default: ["openai/gpt-4o"]

模型上下文协议 (MCP) – 工具调用与共享上下文

{
  "mcp": {
    "servers": [
      {
        "name": "filesystem",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem"]
      },
      {
        "name": "brave-search",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-brave-search"],
        "env": {
          "BRAVE_API_KEY": "your-key"
        }
      }
    ]
  }
}

一旦配置完成,您的 LLM 调用将自动获得对 MCP 工具的访问权限。

部署示例

Docker(快速测试)

docker run -p 8080:8080 \
  -e OPENAI_API_KEY=sk-... \
  maximhq/bifrost:latest

Docker‑Compose

services:
  bifrost:
    image: maximhq/bifrost:latest
    ports:
      - "8080:8080"
    environment:
      - OPENAI_API_KEY=sk-...
    volumes:
      - ./data:/app/data

Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bifrost
spec:
  replicas: 3
  selector:
    matchLabels:
      app: bifrost
  template:
    metadata:
      labels:
        app: bifrost
    spec:
      containers:
        - name: bifrost
          image: maximhq/bifrost:latest
          ports:
            - containerPort: 8080

Terraform

请参阅官方文档获取完整示例。

摘要

FeatureStatus
可观测性✅ (自动追踪,指标,OTLP)
语义缓存
多密钥负载均衡
提供商故障转移
MCP 工具调用
一行集成

迁移步骤(≈10 分钟):

  1. 运行 Bifrost。
  2. 添加提供商 API 密钥(通过 UI 或配置)。
  3. 在代码中更新基础 URL。
  4. 测试单个请求。
  5. 部署(Docker、K8s 等)。

所有功能均自动启用——除了 URL 之外无需代码更改。使用 零重构 体验弹性、可观测且可扩展的 LLM 堆栈。

快速集成检查清单

  • OpenAI 兼容 API
  • 只需更改一个 URL
  • 多供应商路由
  • 内置可观测性
  • 无需重构
  • 无需新 SDK
  • 无需代码重写

只需直接使用。

由 Maxim AI 团队打造。

Back to Blog

相关文章

阅读更多 »