본문으로 건너뛰기

vernLLM으로 LLM 호출 안정성과 제어 통합

vernLLM이 여러 LLM 공급자를 단일 인터페이스로 묶고 재시도·fallback·호출량 제한을 프로세스 내부에서 처리합니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

vernLLM은 여러 LLM 공급자를 하나의 인터페이스로 연결하고 재시도, circuit breaking, fallback, rate limiting, caching, middleware를 애플리케이션 프로세스 안에서 처리하는 TypeScript 기반 npm 패키지입니다. 예시에서는 OpenAI의 gpt-4o를 기본 모델로 사용하고 호출 실패 시 Anthropic의 claude-sonnet-5로 전환하며, 분당 요청 500회·토큰 100,000개·동시 실행 20개 제한을 설정합니다. retryBudget으로 60초 동안 최소 20회 호출에서 재시도 비율을 0.2로 제한하고, 최대 재시도 3회와 타임아웃 10,000밀리초도 지정합니다. OpenAI 호환 API뿐 아니라 Groq, Mistral, DeepSeek, Cerebras, Together AI, Fireworks AI, Ollama, Gemini, AWS Bedrock과 HTTP 기반 공급자를 fromFetch adapter로 연결할 수 있어 모델 전환과 운영 제어를 호출 코드에 통합합니다.

섹션별 상세

01
LLM 애플리케이션은 공급자별 SDK와 장애 처리 로직을 따로 연결해야 하므로 모델 전환과 호출 안정성 관리가 복잡해집니다. vernLLM은 OpenAI-compatible, Anthropic, Gemini, Bedrock 호출을 하나의 인터페이스로 감싸고 재시도, circuit breaking, fallback, rate limiting, caching, middleware를 함께 구성합니다. 별도의 네트워크 홉을 추가하지 않고 자체 프로세스에서 제어 기능을 실행하는 점이 이 패키지의 운영상 초점입니다.
typescript
import Anthropic from '@anthropic-ai/sdk';
import OpenAI from 'openai';
import { fromAnthropic, fromOpenAI, VernLLM } from 'vern-llm';

const openai = fromOpenAI(new OpenAI({ apiKey: process.env.OPENAI_API_KEY }));
const anthropic = fromAnthropic(new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY }));
const llm = new VernLLM({
  client: openai,
  model: 'gpt-4o',
  fallback: { client: anthropic, model: 'claude-sonnet-5', circuitBreaker: true },
  rateLimit: { requestsPerMinute: 500, tokensPerMinute: 100_000, maxConcurrent: 20 },
  retryBudget: { windowMs: 60_000, minCalls: 20, retryRatio: 0.2 },
  maxRetries: 3,
  timeoutMs: 10_000,
  defaultMaxTokens: 1000,
  defaultReasoningEffort: 'medium',
});
const result = await llm.call({ userContent: "What's the weather in New York?" });

OpenAI와 Anthropic 클라이언트를 VernLLM으로 감싸고, fallback·회로 차단·호출량 제한·재시도 예산·타임아웃을 한 번에 설정합니다.

02
제공된 예시는 OpenAI의 gpt-4o를 기본 client와 model로 지정하고 Anthropic의 claude-sonnet-5를 fallback 경로로 연결합니다. circuitBreaker가 활성화된 fallback은 기본 호출 경로의 장애 상황에서 대체 모델로 전환하도록 구성되며, timeoutMs는 10,000밀리초, maxRetries는 3으로 설정됩니다. 애플리케이션은 개별 공급자 SDK를 직접 분기하지 않고 llm.call에 userContent를 넘기는 방식으로 요청을 실행합니다.
03
호출량 제어는 분당 요청 500회, 분당 토큰 100,000개, 최대 동시 실행 20개라는 rateLimit 설정으로 이뤄집니다. retryBudget은 60,000밀리초 창에서 최소 20회 호출이 발생한 경우 재시도 비율을 0.2로 제한해 실패가 재시도 폭주로 이어지는 경로를 줄입니다. defaultMaxTokens는 1000, defaultReasoningEffort는 medium으로 지정돼 기본 호출 정책도 한곳에서 관리됩니다.
04
vernLLM은 OpenAI, Groq, Mistral, DeepSeek, Cerebras, Together AI, Fireworks AI, Ollama, Anthropic, Gemini, AWS Bedrock을 지원하고 HTTP로 접근 가능한 공급자는 fromFetch adapter로 연결합니다. 저장소는 packages/vern-llm 패키지와 apps/docs 문서 사이트로 구성된 pnpm monorepo이며, 패키지와 문서가 분리된 구조입니다. MIT License로 배포돼 여러 공급자를 사용하는 서비스의 호출 정책과 운영 제어를 공통 계층으로 재사용할 수 있습니다.

용어 해설

서킷 브레이커(Circuit Breaker)
LLM 호출 실패가 반복될 때 요청을 일시적으로 차단해 장애가 다른 요청으로 확산되는 일을 막는 패턴입니다. 일정 시간 뒤 호출을 재개해 서비스 복구 여부를 확인하며, vernLLM에서는 fallback과 함께 다른 모델이나 공급자로 전환하는 기반으로 쓰입니다.
속도 제한(Rate Limiting)
분당 요청 수나 토큰 수를 기준으로 LLM 호출량을 제한하는 방식입니다. 공급자의 사용량 한도를 넘지 않도록 요청을 조절하고, vernLLM에서는 동시 실행 수까지 함께 지정해 애플리케이션 내부에서 호출 흐름을 제어합니다.
재시도 예산(Retry Budget)
실패한 요청을 무제한으로 다시 보내지 않도록 일정 시간 창 안에서 재시도 비율과 최소 호출 수를 제한하는 설정입니다. vernLLM은 retryBudget과 maxRetries를 함께 사용해 재시도가 트래픽을 악화시키는 상황을 통제합니다.
LLM 캐시(LLM Cache)
동일하거나 재사용 가능한 LLM 요청의 결과를 저장해 모델 호출을 줄이는 기능입니다. 캐시가 적용되면 반복 요청의 지연과 비용을 낮출 수 있으며, vernLLM은 별도의 네트워크 홉 없이 애플리케이션 프로세스 안에서 호출 제어 기능을 묶습니다.
대체 경로(Fallback)
주요 모델이나 공급자의 호출이 실패하거나 차단됐을 때 미리 지정한 다른 모델로 요청을 넘기는 처리 방식입니다. 제공된 예시에서는 OpenAI 호출이 실패하면 Anthropic의 claude-sonnet-5로 전환하고 circuitBreaker를 함께 활성화합니다.

기술

  • vernLLM
  • OpenAI
  • Anthropic
  • Groq
  • Mistral
  • DeepSeek
  • Cerebras
  • Together AI
  • Fireworks AI
  • Ollama
  • Gemini
  • AWS Bedrock
  • TypeScript
  • pnpm
  • Fumadocs

활용 사례

  • 여러 LLM 공급자를 사용하는 애플리케이션의 통합 호출 계층
  • 기본 모델 장애 시 대체 모델로 전환하는 서비스
  • 요청 수·토큰 수·동시 실행 수를 제한해야 하는 LLM 서비스
  • 재시도·타임아웃·캐시를 공통 정책으로 관리하는 백엔드
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 09. 06.수집 2026. 09. 06.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.