더 저렴한 API(UberLLM)와 함께 OpenAI Python SDK 및 LangChain을 사용하세요
base_url="https://api.uberllm.dev/v1"로 설정하고, api_key를 OpenAI(...) 또는 ChatOpenAI(...)에서 UberLLM key로 설정한 다음, 모든 UberLLM model id를 전달하세요. Chat, streaming, tool calls 및 JSON output은 계속 작동하며, 다른 코드는 그대로 유지됩니다.
단계 (OpenAI Python SDK)
- 여러분의 키 페이지에서 키를 만들고 크레딧을 추가하세요.
- 환경 변수로 저장하세요:
export UBERLLM_API_KEY=ull_your_key
- 클라이언트를 UberLLM으로 지정하세요:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.uberllm.dev/v1",
api_key=os.environ["UBERLLM_API_KEY"],
)
resp = client.chat.completions.create(
model="deepseek/deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
)
print(resp.choices[0].message.content)
이것이 전체 변경 사항입니다. client.chat.completions.create는 stream=True, tools, response_format, temperature, max_tokens과 함께 이전과 동일하게 작동합니다. 비동기 클라이언트 (AsyncOpenAI)는 동일한 두 인수를 받습니다.
코드를 건드리지 않고
OpenAI SDK는 또한 두 개의 환경 변수를 읽으므로, 인자 없이 OpenAI()를 호출하는 스크립트는 수정 없이 이동할 수 있습니다:
export OPENAI_BASE_URL=https://api.uberllm.dev/v1
export OPENAI_API_KEY=ull_your_key
python your_script.py
여전히 model= 문자열을 deepseek/deepseek-v4.1-flash와 같은 UberLLM ID로 변경해야 합니다.
단계 (LangChain)
pip install langchain-openai
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="deepseek/deepseek-v4.1-flash",
base_url="https://api.uberllm.dev/v1",
api_key=os.environ["UBERLLM_API_KEY"],
)
print(llm.invoke("Say hello in one sentence.").content)
Chains, agents, bind_tools 및 .stream()는 변경 없이 작동합니다. 환경 변수에 의존하는 대신 코드에서 base_url를 전달하세요: 인수가 항상 우선하므로, 머신에 있는 잘못된 OPENAI_API_BASE가 다른 곳으로 호출을 보낼 수 없습니다.
LangChain.js도 같은 아이디어입니다:
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "deepseek/deepseek-v4.1-flash",
apiKey: process.env.UBERLLM_API_KEY,
configuration: { baseURL: "https://api.uberllm.dev/v1" },
});
각 작업에 더 저렴한 모델을 선택하세요
모든 모델에 하나의 키를 사용하는 목적은 쉬운 작업에 최고급 모델 가격을 지불하지 않아도 된다는 것입니다. 일반적인 분할 방식은 다음과 같습니다:
- 고난도 추론 또는 고객 응대 답변:
deepseek/deepseek-v4.1-flash과 같은 최고급 모델. - 대량 요약, 태깅, 추출:
google/gemma-3-27b-it또는 아래 배치 테이블의 다른 모델, 종종 토큰당 50에서 100배 더 저렴합니다.
model= 문자열만 변경하여 하나에서 다른 하나로 전환할 수 있습니다.
없는 것
UberLLM은 채팅 완성 (/v1/chat/completions), Responses API (client.responses.create, 스트리밍 및 도구 호출 포함) 및 Anthropic 메시지 경로를 제공합니다. 호출 간에 상태를 유지하지 않으므로, previous_response_id 대신 input로 전체 대화를 보내세요 (Responses API 참조). 임베딩 또는 Assistants API는 제공하지 않습니다. 해당 호출은 현재 공급자에서 유지하세요.
문제 해결
openai.AuthenticationError(401): 키가 잘못되었거나 비어 있습니다.len(os.environ["UBERLLM_API_KEY"])을(를) 출력하세요; 키는ull_에 43자를 더한 것입니다.openai.NotFoundError(404) on/responsesor/embeddings: 해당 경로들은 여기에 존재하지 않습니다. 위를 참조하세요.model_not_found:gpt-4o와(과) 같은 OpenAI 스타일 ID는 앞에 maker를 붙여야 합니다:openai/gpt-4o.openai.RateLimitError(429): 키의 분당 제한 (기본값 300). 키 페이지에서 제한을 높이거나, backoff를 사용하여 retries를 추가하세요.- 402
insufficient_credits: 크레딧 페이지에서 충전하세요.