한 번의 URL 변경으로 LLM 스택에 관측성, 라우팅 및 장애 복구 추가

발행: (2025년 12월 21일 오전 11:02 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

Bifrost는 15개 이상의 공급자(OpenAI, Anthropic, AWS Bedrock, Google Vertex, …)에 대한 접근을 단일 OpenAI‑compatible API로 통합하는 고성능 AI 게이트웨이입니다. 몇 초 만에 배포하고 설정 없이 자동 장애 조치, 로드 밸런싱, 의미 기반 캐싱, 엔터프라이즈급 가시성을 얻으세요.

왜 Bifrost인가?

If your LLM application already works, you shouldn’t have to refactor it just to add:

  • 관측성
  • 로드 밸런싱
  • 캐싱
  • 공급자 장애 조치

Most solutions force you to:

  • API 호출을 다시 작성하기
  • 새로운 SDK 배우기
  • 안정적인 코드를 리팩터링하기
  • 모든 것을 재테스트하기 (위험하고 비용이 많이 듦)

Bifrost는 모든 것을 피합니다. 적용하고, URL 하나만 바꾸면 끝입니다.

빠른 시작

Go from zero to a production‑ready AI gateway in under a minute.

StepCommand
1️⃣ Bifrost 게이트웨이 시작로컬에 설치 및 실행
bash\nnpx -y @maximhq/bifrost\n
또는 Docker 사용
bash\ndocker run -p 8080:8080 maximhq/bifrost\n
2️⃣ 웹 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 게이트웨이가 시각적 구성 및 실시간 모니터링을 위한 웹 UI와 함께 실행 중입니다.

View on GitHub

OpenAI‑호환 – 한 줄 변경

If your code already works with OpenAI, it works with Bifrost.
코드가 이미 OpenAI와 작동한다면, Bifrost에서도 작동합니다.

import openai

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

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

Everything else stays the same.
다른 모든 것은 그대로 유지됩니다. Because Bifrost is OpenAI‑compatible, it works with any framework that already supports OpenAI.
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-..."
)

Pattern: update the base URL, keep the rest of your code unchanged.
패턴: 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=[...]
)

모델 이름만 변경하면 제공자를 전환할 수 있습니다 – 리팩토링이 필요 없습니다.

Source:

내장 관찰성

플러그인 (예: 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

전체 예시는 공식 문서를 참조하세요.

요약

기능상태
가시성✅ (자동 추적, 메트릭, 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

관련 글

더 보기 »