Tài liệu tham chiếu API
unbleep nói ngôn ngữ của OpenAI Chat Completions API. Nếu bạn đã từng gọi OpenAI, bạn đã biết API này — trỏ client của bạn tới https://unbleep.ai/v1 và đổi khóa.
Bắt đầu nhanh
Cài OpenAI SDK, đặt base URL và khóa của bạn, rồi thực hiện một lời gọi.
from openai import OpenAI
client = OpenAI(
base_url="https://unbleep.ai/v1",
api_key="ub_live_9f2c…",
)
resp = client.chat.completions.create(
model="unbleep",
messages=[{"role": "user", "content": "Say hello."}],
)
print(resp.choices[0].message.content)
Xác thực
Mọi yêu cầu cần một Bearer token trong header Authorization. Khóa mang tiền tố để các công cụ quét bí mật nhận ra ngay khi bị rò rỉ:
ub_live_…— cho môi trường production, tính phí vào tín dụng trả trước của bạn.ub_test_…— cho phát triển cục bộ. Tính phí y hệt khóa live, cùng mức giá mỗi token, trừ vào cùng tín dụng trả trước; khác biệt duy nhất là giới hạn tần suất theo khóa thấp hơn (xem Giới hạn tần suất). Khóa test là một thông tin xác thực riêng biệt, có thể thu hồi — không phải gói miễn phí.
Authorization: Bearer ub_live_9f2c…
Giữ khóa ở phía máy chủ. Không bao giờ đưa khóa live vào mã chạy trên trình duyệt hay ứng dụng di động.
Mô hình
Truyền một trong các ID này làm model. Bí danh không có ngày luôn trỏ tới bản dựng mới nhất; các ID snapshot có ngày cũng được chấp nhận và hiện phân giải về cùng bản dựng đó. Dù bạn gửi dạng nào, phản hồi luôn báo ID không có ngày — yêu cầu unbleep-250811 trả về "model": "unbleep".
| Mô hình | Bí danh trỏ tới | Ngữ cảnh | Phù hợp nhất cho |
|---|---|---|---|
| unbleep | unbleep-250811 | 256K | Sử dụng chung — lựa chọn mặc định |
| unbleep-high | unbleep-high-250811 | 1M | Tác vụ lớn nhất — tài liệu dài & toàn bộ codebase |
| unbleep-mini | unbleep-mini-250811 | 32K | Lời gọi rẻ, nhanh, khối lượng lớn |
Chat completions
POST /v1/chat/completions — endpoint cốt lõi. Phần thân yêu cầu và phản hồi khớp với schema của OpenAI.
curl https://unbleep.ai/v1/chat/completions \
-H "Authorization: Bearer ub_live_9f2c…" \
-H "Content-Type: application/json" \
-d '{
"model": "unbleep",
"messages": [
{"role": "system", "content": "You are terse."},
{"role": "user", "content": "Explain abliteration in one line."}
],
"temperature": 0.7,
"max_tokens": 256
}'
{
"id": "chatcmpl_a1b2c3",
"object": "chat.completion",
"model": "unbleep",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}],
"usage": { "prompt_tokens": 24, "completion_tokens": 18, "total_tokens": 42 }
}
Streaming
Đặt "stream": true để nhận Server-Sent Events. Mỗi sự kiện là một chat.completion.chunk với một delta; luồng kết thúc bằng chuỗi nguyên văn data: [DONE].
data: {"choices":[{"delta":{"content":"Ab"}}]}
data: {"choices":[{"delta":{"content":"literation"}}]}
data: {"choices":[{"delta":{},"finish_reason":"stop"}]}
data: [DONE]
Suy luận (reasoning)
Các mô hình suy luận sẽ nghĩ trước khi trả lời. Dấu vết suy luận trả về dưới dạng reasoning_content bên cạnh content thông thường — trên message với lời gọi bình thường, và trên delta khi streaming. Trường này chỉ xuất hiện khi mô hình thực sự tạo ra dấu vết, nên hãy coi nó là tùy chọn và đọc content để lấy câu trả lời.
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": "The question asks for one line, so…",
"content": "…"
},
"finish_reason": "stop"
}
Token suy luận được tính phí. Dấu vết là đầu ra được sinh ra và được tính theo mức giá đầu ra thông thường của mô hình, dù mã của bạn có đọc trường đó hay không. Một chuỗi suy luận dài cho một câu hỏi ngắn là một dòng thật trên hóa đơn của bạn.
Gửi "thinking": false để tắt suy luận, để ngân sách completion dồn cho câu trả lời thay vì dấu vết:
{
"model": "unbleep",
"messages": […],
"thinking": false
}
Núm chính sách
Điểm khác biệt của unbleep. Tham số tùy chọn policy đặt mức quản trị áp dụng lên một yêu cầu. Mặc định là off.
off— đường cơ sở không lọc (mặc định). Không chèn lời từ chối nào.research— trả lời y hệtoff. Giá trị này được ghi vào dòng sử dụng để bạn tự báo cáo; không áp dụng thêm bất kỳ sàng lọc nào.strict— quét nội dung tin nhắn theo danh sách chặn của dịch vụ và trả về lỗi chính sách khi khớp. Danh sách chặn do nhà vận hành duy trì và áp dụng cho mọi người đã chọn bật; không có danh sách chặn riêng theo tài khoản để cấu hình.
{
"model": "unbleep",
"messages": […],
"policy": "research"
}
Lỗi
Lỗi dùng envelope của OpenAI, nên mã xử lý lỗi hiện có hoạt động không cần thay đổi.
{
"error": {
"type": "invalid_request_error",
"code": "invalid_api_key",
"message": "Incorrect API key provided."
}
}
| Mã trạng thái | Ý nghĩa |
|---|---|
| 401 | Thiếu khóa hoặc khóa không hợp lệ |
| 402 | Hết tín dụng — nạp thêm để tiếp tục |
| 422 | Bị chặn bởi policy: strict |
| 429 | Vượt giới hạn tần suất — lùi lại rồi thử lại |
| 5xx | Lỗi upstream — có thể thử lại an toàn với backoff |
Giới hạn tần suất
Hai giới hạn độc lập được áp dụng, đều theo tài khoản: tần suất yêu cầu và mức trần đồng thời.
Tần suất yêu cầu
60 yêu cầu mỗi phút cho mỗi tài khoản, đo trên cửa sổ trượt 60 giây. Giới hạn nằm ở tài khoản, không phải ở khóa — tạo thêm khóa không mua thêm thông lượng, và mọi khóa bạn sở hữu đều dùng chung 60 lượt đó. Khóa test có mức trần theo khóa thấp hơn là 15 yêu cầu mỗi phút; nó vẫn được tính vào cùng cửa sổ của tài khoản.
Mọi phản hồi đều mang các header tiêu chuẩn để bạn điều tiết yêu cầu mà không phải đoán. Chúng báo cáo cửa sổ nào đang gần chặn bạn nhất:
x-ratelimit-limit-requests: 60
x-ratelimit-remaining-requests: 58
x-ratelimit-reset-requests: 43
x-ratelimit-reset-requests là một số nguyên trần — số giây nguyên cho tới khi cửa sổ giải phóng một chỗ, không có hậu tố đơn vị. Phân tích nó như một con số, không phải chuỗi thời lượng.
Đồng thời
Tối đa 8 yêu cầu đang xử lý cùng lúc cho mỗi tài khoản. Yêu cầu đồng thời thứ chín bị từ chối ngay lập tức với 429 và mã too_many_concurrent_requests; phản hồi mang retry-after: 1. Yêu cầu bị từ chối không bị tính phí. Một lời gọi streaming giữ chỗ của nó cho tới khi luồng kết thúc, nên các luồng dài thường là thứ đẩy bạn chạm trần.
{
"error": {
"type": "rate_limit_error",
"code": "too_many_concurrent_requests",
"message": "Too many concurrent requests for this account (limit 8)."
}
}
Cả hai mức trần đều cố định cho tài khoản tiêu chuẩn — chúng không tăng theo số dư trả trước của bạn. Cần thêm dư địa? Enterprise nâng chúng lên.