MớiTrỏ bất kỳ agent nào về UberLLM — một key, mọi model, bằng giá niêm yết hoặc rẻ hơn.
UberLLM

Sử dụng OpenAI Python SDK và LangChain với một API rẻ hơn (UberLLM)

Đặt base_url="https://api.uberllm.dev/v1" và api_key thành khóa UberLLM của bạn trong OpenAI(...) hoặc ChatOpenAI(...), sau đó truyền bất kỳ model id nào của UberLLM. Chat, streaming, tool calls và JSON output vẫn hoạt động; mã của bạn vẫn giữ nguyên.

Các bước (OpenAI Python SDK)

  1. Tạo khóa trên trang khóa của bạn và nạp tiền.
  2. Lưu nó dưới dạng biến môi trường:
export UBERLLM_API_KEY=ull_your_key
  1. Trỏ client đến 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)

Đó là toàn bộ thay đổi. client.chat.completions.create với stream=True, tools, response_format, temperature và max_tokens hoạt động như trước. Client bất đồng bộ (AsyncOpenAI) cũng nhận hai đối số tương tự.

Không cần chỉnh sửa code

OpenAI SDK cũng đọc hai biến môi trường, vì vậy một script gọi OpenAI() mà không có đối số nào có thể được di chuyển mà không cần chỉnh sửa:

export OPENAI_BASE_URL=https://api.uberllm.dev/v1
export OPENAI_API_KEY=ull_your_key
python your_script.py

Bạn vẫn cần thay đổi chuỗi model= thành một ID UberLLM như deepseek/deepseek-v4.1-flash.

Các bước (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 và .stream() hoạt động không thay đổi. Truyền base_url trong mã thay vì dựa vào biến môi trường: đối số luôn được ưu tiên, vì vậy một OPENAI_API_BASE lạc trên máy sẽ không thể gửi các cuộc gọi đi nơi khác.

LangChain.js cũng có ý tưởng tương tự:

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" },
});

Chọn một mô hình rẻ hơn cho mỗi công việc

Mục đích của việc dùng một khóa cho mọi mô hình là bạn có thể ngừng trả giá cao nhất cho những công việc dễ dàng. Một cách phân chia phổ biến:

  • Suy luận phức tạp hoặc trả lời khách hàng: một mô hình hàng đầu như deepseek/deepseek-v4.1-flash.
  • Tóm tắt hàng loạt, gắn thẻ, trích xuất: google/gemma-3-27b-it hoặc một mô hình khác từ bảng xử lý hàng loạt bên dưới, thường rẻ hơn 50 đến 100 lần mỗi token.

Chỉ cần thay đổi chuỗi model= để chuyển đổi giữa hai loại.

Những gì không có

UberLLM cung cấp tính năng hoàn thành cuộc trò chuyện (chat completions) (/v1/chat/completions), API Responses (client.responses.create, bao gồm streaming và tool calls) và tuyến tin nhắn của Anthropic. Nó không lưu trữ trạng thái giữa các cuộc gọi, vì vậy hãy gửi toàn bộ cuộc trò chuyện trong input thay vì previous_response_id (tham khảo API Responses). Nó không cung cấp embeddings hoặc Assistants API: hãy giữ các cuộc gọi đó trên nhà cung cấp hiện tại của bạn.

Khắc phục sự cố

  • openai.AuthenticationError (401): khóa sai hoặc trống. In len(os.environ["UBERLLM_API_KEY"]); một khóa là ull_ cộng 43 ký tự.
  • openai.NotFoundError (404) trên /responses hoặc /embeddings: các tuyến đường đó không tồn tại ở đây, xem ở trên.
  • model_not_found: ID kiểu OpenAI như gpt-4o cần có tên nhà cung cấp ở phía trước: openai/gpt-4o.
  • openai.RateLimitError (429): giới hạn mỗi phút của khóa (mặc định là 300). Tăng giới hạn này trên trang khóa, hoặc thêm các lần thử lại với backoff.
  • 402 insufficient_credits: nạp thêm tiền trên trang tín dụng.

Đọc thêm

Các mô hình để bắt đầu

Cái đầu tiên nằm trong đoạn code bên dưới. Mỗi cái đều nhận tool calls.

ModelModel id (dán cái này)Giá hiện tại
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00018 input · $0.0014 output / 1M
Gemini 3.5 Flashgoogle/gemini-3.5-flash$0.0150 input · $0.0900 output / 1M
Claude Sonnet 5.5anthropic/claude-sonnet-5.5$0.0610 input · $0.3052 output / 1M
GPT-5.5openai/gpt-5.5$0.1250 input · $0.7500 output / 1M
Kimi K3moonshotai/kimi-k3$0.00095 input · $0.0788 output / 1M
GLM 5.3z-ai/glm-5.3$0.00032 input · $0.0145 output / 1M
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 input · $0.0020 output / 1M
Qwen3 VL 235B A22Bqwen/qwen3-vl-235b-a22b-instruct$0.0021 input · $0.0188 output / 1M

Giá ở lần dựng hằng giờ gần nhất, không cộng phí · mọi model →

Dành cho các tác vụ xử lý hàng loạt lớn

Giá mỗi token thấp nhất để tóm tắt, gắn thẻ và trích xuất với số lượng lớn.

ModelModel id (dán cái này)Giá hiện tại
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 input · $0.0020 output / 1M
GPT-OSS 120Bopenai/gpt-oss-120b$0.000069 input · $0.00030 output / 1M
DeepSeek V3.2deepseek/deepseek-v3.2$0.0026 input · $0.0039 output / 1M
Qwen 3 235B A22B Instruct 2507qwen/qwen3-235b-a22b-2507$0.00057 input · $0.0035 output / 1M
Gemini 3.1 Flash Litegoogle/gemini-3.1-flash-lite$0.0025 input · $0.0149 output / 1M
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00018 input · $0.0014 output / 1M

Giá ở lần dựng hằng giờ gần nhất, không cộng phí · mọi model →

Câu hỏi thường gặp

Tôi có thể sử dụng OpenAI Python SDK chính thức với UberLLM không?

Có. Truyền base_url="https://api.uberllm.dev/v1" và khóa UberLLM của bạn vào OpenAI(), hoặc đặt OPENAI_BASE_URL và OPENAI_API_KEY. chat.completions với streaming, tools và JSON output hoạt động với mọi chat model.

LangChain có hoạt động với UberLLM không?

Có. ChatOpenAI từ langchain-openai nhận base_url và api_key; chains, agents và tool binding hoạt động không thay đổi với bất kỳ chat model nào của UberLLM.

UberLLM có hỗ trợ embeddings hay Responses API không?

Responses API có, embeddings thì không. UberLLM phục vụ /v1/chat/completions, /v1/responses (client.responses.create, không có previous_response_id: gửi toàn bộ cuộc hội thoại mỗi lần gọi) và route /v1/messages của Anthropic. Hãy giữ embeddings trên nhà cung cấp hiện tại của chúng.