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

API endpoint tương thích với OpenAI là gì?

Một API endpoint tương thích OpenAI là một API endpoint sử dụng chính xác các định dạng yêu cầu (request) và phản hồi (response) của OpenAI API — cùng schema /v1/chat/completions, cùng định dạng streaming, cùng các trường tool-call — để SDK chính thức của OpenAI có thể hoạt động với nó chỉ bằng cách thay đổi base URL và key. UberLLM tương thích OpenAI (và tương thích Anthropic tại /v1/messages), đó là lý do tại sao việc chuyển sang sử dụng nó chỉ là một thay đổi một dòng code.

Định nghĩa ngắn gọn

Một endpoint được coi là "tương thích với OpenAI" khi nó chấp nhận các yêu cầu HTTP giống hệt và trả về các cấu trúc phản hồi giống hệt như OpenAI API. Trong thực tế, điều đó có nghĩa là:

  • request body POST /v1/chat/completions (model, messages, temperature, tools, stream, …) được chấp nhận nguyên trạng;
  • phản hồi là cùng một object choices[].message, với cùng số lượng token usage;
  • streaming sử dụng các chunk server-sent-events data: giống nhau kết thúc bằng [DONE];
  • tool / function calling sử dụng các trường tool_calls giống nhau.

Bởi vì hợp đồng khớp, SDK chính thức của OpenAI — bằng Python, JavaScript hoặc bất kỳ ngôn ngữ nào — hoạt động với endpoint khi bạn chỉ thay đổi base URL và API key. Mã ứng dụng của bạn không nhận ra sự khác biệt.

Tại sao điều này quan trọng

Khả năng tương thích với OpenAI đã biến API của một nhà cung cấp thành một tiêu chuẩn thực tế. Một endpoint tương thích cho phép bạn giữ lại SDK, công cụ và các tích hợp framework mà bạn đã sử dụng (LangChain, Vercel AI SDK, LlamaIndex, hàng chục framework agent) trong khi thay đổi những gì nằm phía sau chúng.

Đó là toàn bộ quá trình chuyển đổi sang 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,
)

Xem tài liệu SDK của OpenAI để biết đầy đủ các tham số được hỗ trợ.

Tương thích so với một giải pháp thay thế hoàn hảo

"Tương thích" là một khái niệm rộng. Hãy cẩn thận với các endpoint chấp nhận định dạng yêu cầu nhưng lại bỏ qua streaming, bỏ qua các lệnh gọi công cụ (tool calls), hoặc trả về usage không theo tiêu chuẩn. UberLLM triển khai hợp đồng chat-completions bao gồm streaming, tool calls và token usage, đồng thời cung cấp một endpoint tương thích với Anthropic tại /v1/messages để các Anthropic SDK và Claude Code cũng hoạt động mà không cần thay đổi gì — tài liệu Anthropic SDK.

UberLLM mang lại gì đằng sau endpoint tiêu chuẩn

Endpoint là tiêu chuẩn; nhưng việc định tuyến đằng sau thì không. Mọi yêu cầu được gửi đến nhà cung cấp khỏe mạnh rẻ nhất cho mô hình bạn đã chỉ định, các lỗi trước khi xuất kết quả được thử lại trên nhà cung cấp tiếp theo, và giá bạn thấy (không có phí bổ sung) là giá bạn phải trả. Xem các mô hình tại /models và giá trực tiếp tại /llm-api-pricing.

Đọc thêm

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

"OpenAI-compatible" nghĩa là gì?

Điều đó có nghĩa là endpoint chấp nhận các requests và trả về các responses giống như OpenAI API — cùng một chat-completions schema, streaming format và tool-call fields — vì vậy OpenAI SDK hoạt động với nó chỉ bằng cách thay đổi base URL và key.

Tôi có cần thay đổi code của mình để sử dụng một OpenAI-compatible endpoint không?

Chỉ base_url và api_key. Mọi thứ khác trong OpenAI SDK code của bạn — messages, streaming, tools, usage — vẫn giữ nguyên.

UberLLM cũng tương thích Anthropic phải không?

Có. Bên cạnh chat-completions endpoint tương thích với OpenAI, UberLLM cũng cung cấp một /v1/messages endpoint tương thích với Anthropic, vì vậy Anthropic SDKs và Claude Code hoạt động mà không cần thay đổi.