Rujukan API
unbleep menggunakan API Chat Completions OpenAI. Jika anda pernah memanggil OpenAI, anda sudah tahu API ini — halakan klien anda ke https://unbleep.ai/v1 dan tukar kuncinya.
Mula pantas
Pasang SDK OpenAI, tetapkan URL asas dan kunci anda, kemudian buat panggilan.
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)
Pengesahan
Setiap permintaan memerlukan token Bearer dalam pengepala Authorization. Kunci membawa awalan supaya kebocoran mudah dikesan oleh pengimbas rahsia:
ub_live_…— produksi, dibilkan daripada kredit prabayar anda.ub_test_…— untuk pembangunan tempatan. Dibilkan sama seperti kunci live, pada kadar setiap token yang sama, daripada kredit prabayar yang sama; satu-satunya perbezaan ialah had kadar setiap kunci yang lebih rendah (lihat Had kadar). Kunci ujian ialah kelayakan berasingan yang boleh dibatalkan — bukan peringkat percuma.
Authorization: Bearer ub_live_9f2c…
Simpan kunci di sisi pelayan. Jangan sekali-kali sertakan kunci live dalam kod pelayar atau mudah alih.
Model
Hantar salah satu ID ini sebagai model. Alias tanpa tarikh sentiasa menunjuk ke binaan terkini; ID snapshot bertarikh juga diterima dan buat masa ini merujuk kepada binaan yang sama. Apa jua bentuk yang anda hantar, respons melaporkan ID tanpa tarikh — permintaan untuk unbleep-250811 dikembalikan sebagai "model": "unbleep".
| Model | Alias menunjuk ke | Konteks | Paling sesuai untuk |
|---|---|---|---|
| unbleep | unbleep-250811 | 256K | Kegunaan umum — pilihan lalai |
| unbleep-high | unbleep-high-250811 | 1M | Tugasan terbesar — dokumen panjang & keseluruhan pangkalan kod |
| unbleep-mini | unbleep-mini-250811 | 32K | Panggilan murah, pantas, volum tinggi |
Chat completions
POST /v1/chat/completions — titik akhir teras. Badan permintaan dan respons sepadan dengan skema 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 }
}
Penstriman
Tetapkan "stream": true untuk menerima Server-Sent Events. Setiap peristiwa ialah chat.completion.chunk dengan delta; strim berakhir dengan literal data: [DONE].
data: {"choices":[{"delta":{"content":"Ab"}}]}
data: {"choices":[{"delta":{"content":"literation"}}]}
data: {"choices":[{"delta":{},"finish_reason":"stop"}]}
data: [DONE]
Penaakulan
Model penaakulan berfikir sebelum menjawab. Jejaknya dikembalikan sebagai reasoning_content di sebelah content yang biasa — pada message untuk panggilan biasa, dan pada delta semasa penstriman. Medan ini hanya hadir apabila model benar-benar menghasilkan jejak, jadi anggap ia sebagai pilihan dan baca content untuk jawapan sebenar.
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": "The question asks for one line, so…",
"content": "…"
},
"finish_reason": "stop"
}
Token penaakulan dibilkan. Jejak itu ialah output yang dijana dan dicaj pada kadar output biasa model, sama ada kod anda membaca medan itu atau tidak. Pertimbangan panjang untuk soalan pendek ialah baris sebenar pada bil anda.
Hantar "thinking": false untuk mematikan penaakulan, supaya bajet penyempurnaan digunakan untuk jawapan dan bukannya jejak:
{
"model": "unbleep",
"messages": […],
"thinking": false
}
Dail dasar
Pembeza unbleep. Parameter pilihan policy menetapkan berapa banyak tadbir urus dijalankan pada sesuatu permintaan. Nilai lalainya ialah off.
off— garis asas tanpa tapisan (lalai). Tiada penolakan disuntik.research— menjawab sama sepertioff. Nilainya direkodkan pada baris penggunaan untuk pelaporan anda sendiri; tiada saringan tambahan dikenakan.strict— mengimbas teks mesej terhadap senarai sekatan perkhidmatan dan mengembalikan ralat dasar apabila sepadan. Senarai sekatan diselenggara oleh pengendali dan terpakai kepada semua yang memilihnya; tiada senarai sekatan per akaun untuk dikonfigurasi.
{
"model": "unbleep",
"messages": […],
"policy": "research"
}
Ralat
Ralat menggunakan sampul OpenAI, jadi pengendalian ralat sedia ada berfungsi tanpa perubahan.
{
"error": {
"type": "invalid_request_error",
"code": "invalid_api_key",
"message": "Incorrect API key provided."
}
}
| Status | Maksud |
|---|---|
| 401 | Kunci tiada atau tidak sah |
| 402 | Kredit habis — tambah nilai untuk meneruskan |
| 422 | Disekat oleh policy: strict |
| 429 | Had kadar — tunggu sebentar dan cuba semula |
| 5xx | Ralat huluan — selamat dicuba semula dengan backoff |
Had kadar
Dua had bebas terpakai, kedua-duanya per akaun: kadar permintaan dan had keserentakan.
Kadar permintaan
60 permintaan seminit setiap akaun, diukur dalam tetingkap gelongsor 60 saat. Had ini pada akaun, bukan pada kunci — mencipta kunci tambahan tidak menambah daya pemprosesan, dan setiap kunci yang anda miliki berkongsi 60 yang sama. Kunci ujian membawa siling per kunci yang lebih rendah iaitu 15 permintaan seminit; ia tetap dikira dalam tetingkap akaun yang sama.
Setiap respons membawa pengepala standard supaya anda boleh mengatur kadar permintaan tanpa meneka. Ia melaporkan tetingkap mana yang paling hampir menghentikan anda:
x-ratelimit-limit-requests: 60
x-ratelimit-remaining-requests: 58
x-ratelimit-reset-requests: 43
x-ratelimit-reset-requests ialah integer kosong — bilangan saat penuh sehingga tetingkap membebaskan satu slot, tanpa akhiran unit. Huraikannya sebagai nombor, bukan sebagai rentetan tempoh.
Keserentakan
Paling banyak 8 permintaan berjalan serentak setiap akaun. Permintaan serentak yang kesembilan ditolak serta-merta dengan 429 dan kod too_many_concurrent_requests; respons membawa retry-after: 1. Tiada apa-apa dibilkan untuk permintaan yang ditolak. Panggilan penstriman memegang slotnya sehingga strim selesai, jadi strim yang panjang biasanya yang membawa anda ke had.
{
"error": {
"type": "rate_limit_error",
"code": "too_many_concurrent_requests",
"message": "Too many concurrent requests for this account (limit 8)."
}
}
Kedua-dua siling ini tetap untuk akaun standard — ia tidak bertambah mengikut baki prabayar anda. Perlukan lebih ruang? Enterprise menaikkannya.