OpenAI Passthrough

OpenAI Passthrough

OpenAI API를 직접 호출하기 위한 패스스루 엔드포인트를 소개할게요. OpenAI 고유 엔드포인트를 네이티브 형식 그대로(변환 없이) 호출할 수 있는 기능이에요.

출처: 문서

본문

개요 (Overview)

사용 가능한 엔드포인트 (Available Endpoints)

/openai_passthrough (권장)

  • /v1/responses 같은 최신 엔드포인트를 지원해요.

/openai (레거시)

  • /openai/v1/responses 형태로 동작하는 이전 방식이에요.

WebSocket 엔드포인트는 기본적으로 꺼져 있어요 (WebSocket Endpoints are Off by Default)

/openai_passthrough/v1/realtime 같은 WebSocket 엔드포인트는 기본적으로 비활성화돼 있어요. 사용하려면 config.yaml에서 enable_openai_websocket_passthrough: true를 설정해야 해요. (WebSocket 엔드포인트의 경우 /openai/v1/responses 같은 주소는 지원되지 않을 수 있어요.)

general_settings:
  enable_openai_websocket_passthrough: true

WebSocket 활성화 시 error 또는 HTTP 1008 상태 코드가 반환될 수 있어요. 또한 모델 목록에 store_model_in_db: true를 설정하고 POST /config/field/updatemodel_list를 갱신해야 WebSocket 엔드포인트가 동작할 수 있어요. (/v1/realtime 경로를 기준으로 동작합니다.)

언제 사용하나요? (When to use this)

이 기능은 OpenAI의 비 OpenAI 호환 엔드포인트(즉 /chat/completions, /embeddings, /completions, /images, /batches 같은 네이티브 OpenAI 형태)에 접근할 필요가 있을 때 유용해요. OpenAI 호환 /v1/... 엔드포인트를 쓴다면 OpenAI 프로바이더 가이드를 참고하는 게 좋아요.

네이티브 OpenAI 형식으로 호출 가능한 엔드포인트는 다음과 같아요.

/assistants
/threads
/vector_stores
/responses

연결 대상 호스트는 다음과 같아요.

https://api.openai.com

프록시를 통한 주소는 이렇게 구성돼요.

LITELLM_PROXY_BASE_URL/openai_passthrough

사용 예시 (Usage Examples)

OPENAI_API_KEY 환경 변수로 OpenAI 키를 설정해요.

Embeddings

curl http://0.0.0.0:4000/openai_passthrough/v1/embeddings \
  -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-3-small",
    "input": "hello world"
  }'

Assistants API

OpenAI 클라이언트 생성

base_url에 LiteLLM 프록시 URL(LITELLM_PROXY_BASE_URL/openai_passthrough)을 넣고, api_key에는 LiteLLM API 키(LITELLM_API_KEY)를 넣어요.

import openai
client = openai.OpenAI(
    base_url="http://0.0.0.0:4000/openai_passthrough",  # <your-proxy-url>/openai_passthrough
    api_key="sk-anything"  # <your-proxy-api-key>
)
어시스턴트(Assistant) 생성
# Create an assistant
assistant = client.beta.assistants.create(
    name="Math Tutor",
    instructions="You are a math tutor. Help solve equations.",
    model="gpt-5.6-terra",
)
스레드(Thread) 생성
# Create a thread
thread = client.beta.threads.create()
스레드에 메시지 추가
# Add a message
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="Solve 3x + 11 = 14",
)
어시스턴트 실행(Run)
# Create a run to get the assistant's response
run = client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant.id,
)
# Check run status
run_status = client.beta.threads.runs.retrieve(
    thread_id=thread.id,
    run_id=run.id)
메시지 조회
# List messages after the run completes
messages = client.beta.threads.messages.list(
    thread_id=thread.id)
어시스턴트 삭제
# Delete the assistant when done
client.beta.assistants.delete(assistant.id)

더 알아보기 (Learn more)