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.

python
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:

pengepala
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".

ModelAlias menunjuk keKonteksPaling sesuai untuk
unbleepunbleep-250811256KKegunaan umum — pilihan lalai
unbleep-highunbleep-high-2508111MTugasan terbesar — dokumen panjang & keseluruhan pangkalan kod
unbleep-miniunbleep-mini-25081132KPanggilan murah, pantas, volum tinggi

Chat completions

POST /v1/chat/completions — titik akhir teras. Badan permintaan dan respons sepadan dengan skema OpenAI.

curl · permintaan
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
  }'
json · respons
{
  "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].

strim peristiwa
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.

json · serpihan respons
{
  "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:

json · serpihan permintaan
{
  "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.

json · serpihan permintaan
{
  "model": "unbleep",
  "messages": […],
  "policy": "research"
}

Ralat

Ralat menggunakan sampul OpenAI, jadi pengendalian ralat sedia ada berfungsi tanpa perubahan.

json · 401
{
  "error": {
    "type": "invalid_request_error",
    "code": "invalid_api_key",
    "message": "Incorrect API key provided."
  }
}
StatusMaksud
401Kunci tiada atau tidak sah
402Kredit habis — tambah nilai untuk meneruskan
422Disekat oleh policy: strict
429Had kadar — tunggu sebentar dan cuba semula
5xxRalat 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:

pengepala respons
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.

json · 429
{
  "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.