본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 09. 01:01

OpenRouter를 활용한 LLM 통합

요약

OpenRouter를 사용하여 OpenAI, Anthropic, Google 등 다양한 LLM을 하나의 API로 통합하는 방법을 소개합니다. Node.js 환경에서 공식 SDK, OpenAI 패키지, Vercel AI SDK를 활용하는 세 가지 구현 경로를 다룹니다.

핵심 포인트

  • 단일 API 키와 결제 수단으로 수백 개의 모델 사용 가능
  • Chat Completions 호환 HTTP API 제공
  • Node.js용 공식 SDK 및 OpenAI 패키지 통합 지원
  • Vercel AI SDK를 통한 간편한 모델 교체 가능

OpenRouter는 OpenAI, Anthropic, Google, Meta와 같은 제공업체의 수백 가지 언어 모델(Language Models)을 연결하는 통합 API 게이트웨이(API gateway)입니다. 하나의 API 키와 하나의 결제 수단(billing surface)을 사용하며, provider/model 슬러그(slug)를 변경함으로써 모델을 교체할 수 있습니다. OpenRouter는 Chat Completions와 호환되는 HTTP API를 제공합니다.

이 포스트에서는 세 가지 Node.js 통합 경로를 소개합니다: 공식 @openrouter/sdk, baseURL을 사용하는 openai 패키지, 그리고 @openrouter/ai-sdk-provider를 사용하는 Vercel AI SDK입니다.

각 스택에 대한 더 깊이 있는 패턴은 Chat Completions API, OpenAI Responses API (OpenAI 직접 연결 시에만 해당), 그리고 Vercel AI SDK 포스트를 참조하세요.

사전 요구 사항 (Prerequisites)

  • OpenRouter 계정
  • API 키
  • 필요에 따라 활성화된 크레딧(Credits) 또는 결제 수단
  • Node.js 버전 26
  • 사용할 경로에 맞는 패키지 설치:
    • @openrouter/sdk (npm i @openrouter/sdk)
    • openai (npm i openai)
    • ai@openrouter/ai-sdk-provider (npm i ai @openrouter/ai-sdk-provider)

설정 (Configuration)

프로덕션(production) 환경에서는 환경 변수(environment)에서 자격 증명을 읽어오세요.

변수 (Variable)용도 (Purpose)
OPENROUTER_API_KEYOpenRouter 설정에서 가져온 Bearer 토큰
...

모델 ID는 provider/model 형식을 사용합니다. 예를 들어 openai/gpt-5.5, anthropic/claude-opus-4.8, 또는 google/gemini-3.1-flash-lite와 같습니다. 전체 카탈로그는 openrouter.ai/models에서 찾아볼 수 있습니다.

아래 예제들은 이 시리즈의 다른 LLM 포스트들에 등장하는 모델과 일치하도록 openai/gpt-5.5를 사용합니다. 다른 모델을 사용하고 싶을 때는 OPENROUTER_MODEL로 덮어쓰세요.

@openrouter/sdk

OpenRouter의 공식 TypeScript SDK는 타입 안정성 (type-safe)을 제공하며 OpenAPI 명세 (spec)로부터 생성되었습니다.

클라이언트 설정 (Client setup)

import { OpenRouter } from '@openrouter/sdk';

const client = new OpenRouter({
...

기본 통합 (Basic integration)

const response = await client.chat.send({
  chatRequest: {
    model: process.env.OPENROUTER_MODEL ?? 'openai/gpt-5.5',
...

시스템 프롬프트 (System prompt)

톤, 형식, 역할을 설정하려면 사용자 턴 (user turn) 이전에 system 메시지를 추가하세요.

const response = await client.chat.send({
  chatRequest: {
    model: process.env.OPENROUTER_MODEL ?? 'openai/gpt-5.5',
...

스트리밍 (Streaming)

stream: true를 설정하고 choices[0].delta.content에서 증분 텍스트 (incremental text)를 읽으세요.

const stream = await client.chat.send({
  chatRequest: {
    model: process.env.OPENROUTER_MODEL ?? 'openai/gpt-5.5',
...

모델 전환 (Model switching)

동일한 코드를 다른 제공자 (provider)로 라우팅하려면 model 문자열만 변경하면 됩니다.

const models = ['openai/gpt-5.5', 'google/gemini-3.1-flash-lite'];

for (const model of models) {
...

openai 패키지

이미 OpenAI SDK를 사용 중이라면, baseURL을 통해 OpenRouter를 가리키도록 설정하세요. 요청 형태는 Chat Completions API와 일치합니다.

클라이언트 설정 (Client setup)

import OpenAI from 'openai';

const client = new OpenAI({
...

기본 통합 (Basic integration)

const completion = await client.chat.completions.create({
  model: process.env.OPENROUTER_MODEL ?? 'openai/gpt-5.5',
  messages: [
...

시스템 프롬프트 (System prompt)

const completion = await client.chat.completions.create({
  model: process.env.OPENROUTER_MODEL ?? 'openai/gpt-5.5',
  messages: [
...

스트리밍 (Streaming)

const stream = await client.chat.completions.create({
  model: process.env.OPENROUTER_MODEL ?? 'openai/gpt-5.5',
  messages: [{ role: 'user', content: 'List three colors.' }],
...

JSON 스키마 (JSON schema) 출력, Markdown-to-HTML, 그리고 퓨샷 프롬프팅 (few-shot prompting)을 위해서는 위에서 사용한 OpenRouter 클라이언트와 모델 슬러그 (model slug)를 사용하여 Chat Completions 포스트의 패턴을 재사용하세요.

Vercel AI SDK

@openrouter/ai-sdk-provider 패키지는 ai 패키지의 generateText, streamText 및 관련 헬퍼 (helpers) 함수에서 OpenRouter 모델을 사용할 수 있도록 노출합니다. 전체 통합 참조를 보려면 OpenRouter Vercel AI SDK 가이드를 확인하세요.

클라이언트 설정 (Client setup)

import { createOpenRouter } from '@openrouter/ai-sdk-provider';

const openrouter = createOpenRouter({
...

반환된 프로바이더 (provider)는 호출 가능합니다. 모델 슬러그를 직접 전달하세요: openrouter('openai/gpt-5.5').

기본 통합 (Basic integration)

import { generateText } from 'ai';

const { text } = await generateText({
...

시스템 프롬프트 (System prompt)

const { text } = await generateText({
  model: openrouter(process.env.OPENROUTER_MODEL ?? 'openai/gpt-5.5'),
  system: 'Reply in one short sentence. Use plain language.',
...

스트리밍 (Streaming)

import { streamText } from 'ai';

const result = streamText({
...

구조화된 출력 (structured output), 임베딩 (embeddings), 그리고 웹 검색 (web search)에 대해서는 Vercel AI SDK 포스트를 참조하세요. 해당 패턴들은 OpenAI를 직접 호출할 때 적용됩니다. OpenRouter의 지원 범위는 모델과 엔드포인트 (endpoint)에 따라 달라집니다.

데모 (Demo)

각 통합 경로에 대한 실행 가능한 스크립트는 openrouter-demo 폴더에 있습니다. 코드 데모를 통해 접속할 수 있습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0