OpenAI 호환 API endpoint란 무엇인가요?
OpenAI 호환 API endpoint는 OpenAI API의 정확한 요청 및 응답 형태를 따르는 것입니다. 즉, 동일한 /v1/chat/completions schema, 동일한 streaming format, 동일한 tool-call fields를 사용하므로, 공식 OpenAI SDK는 base URL과 key만 변경하면 해당 endpoint에서 작동합니다. UberLLM은 OpenAI 호환이며 (그리고 /v1/messages에서 Anthropic 호환입니다), 그렇기 때문에 UberLLM으로 전환하는 것은 한 줄만 변경하면 됩니다.
짧은 정의
엔드포인트는 OpenAI API와 동일한 HTTP 요청을 수락하고 동일한 응답 형태를 반환할 때 "OpenAI 호환"입니다. 실제로는 다음을 의미합니다:
POST /v1/chat/completions요청 본문 (model,messages,temperature,tools,stream, …)이 그대로 수락됩니다;- 응답은 동일한
choices[].message객체이며, 동일한usagetoken 수를 포함합니다; - 스트리밍은
[DONE]로 끝나는 동일한 server-sent-eventsdata:청크를 사용합니다; - 도구 / 함수 호출은 동일한
tool_calls필드를 사용합니다.
계약이 일치하기 때문에, 공식 OpenAI SDK는 — Python, JavaScript 또는 어떤 언어로든 — base URL과 API key만 변경하면 엔드포인트에 대해 작동합니다. 애플리케이션 코드는 차이를 알지 못합니다.
왜 중요한가요?
OpenAI 호환성은 한 벤더의 API를 사실상의 표준으로 만들었습니다. 호환 가능한 endpoint를 사용하면 이미 사용 중인 SDK, 도구 및 프레임워크 통합(LangChain, Vercel AI SDK, LlamaIndex, 수십 가지 에이전트 프레임워크)을 유지하면서 그 뒤에 있는 것을 변경할 수 있습니다.
이것이 UberLLM으로의 전체 마이그레이션입니다:
from openai import OpenAI
client = OpenAI(
base_url="https://api.uberllm.dev/v1", # the only line that changes
api_key="ull_your_key_here",
)
resp = client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
messages=[{"role": "user", "content": "Hello!"}],
stream=True,
)
지원되는 전체 매개변수 목록은 OpenAI SDK 문서를 참조하세요.
호환 대 진정한 드롭인
"호환"은 스펙트럼입니다. 요청 형태는 받아들이지만 스트리밍을 지원하지 않거나, 툴 호출을 무시하거나, 비표준 usage을 반환하는 endpoint들을 주의하세요. UberLLM은 스트리밍, 툴 호출 및 token 사용량을 포함하는 chat-completions 계약을 구현하며, 추가적으로 /v1/messages에서 Anthropic-compatible endpoint를 노출하여 Anthropic SDK와 Claude Code도 변경 없이 작동합니다 — Anthropic SDK doc.
UberLLM이 표준 endpoint 뒤에서 추가하는 것
endpoint는 표준입니다. 하지만 그 뒤의 routing은 표준이 아닙니다. 고객님이 지정한 모델에 대한 모든 요청은 가장 저렴하고 정상 작동하는 판매자에게 전송되며, 출력 전 실패 시에는 다음 판매자에게 재시도됩니다. 또한, 고객님이 보시는 가격(추가 수수료 없음)이 곧 고객님이 지불하는 가격입니다. [/models](/models) 에서 모델을 찾아보고 [/llm-api-pricing](/llm-api-pricing) 에서 실시간 가격을 확인하세요.