下載 Markdown 文檔 ↓

接口文檔

使用同一個 API 入口,連接你已獲授權的模型。

OpenAI Chat Completions 相容

快速開始

先在控制台建立普通 API Key,確認模型授權,再將以下設定填入客戶端。

項目 設定
API Base URL https://api.tidebell.link/v1
接口格式 OpenAI Chat Completions
API Key 自己的 bf-… 普通 API Key
模型 從下方模型清單選擇已授權且在線的模型
curl https://api.tidebell.link/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"Qwen3.5-9B_Uncensored","messages":[{"role":"user","content":"你好"}],"max_tokens":512}'

請將 YOUR_API_KEY 換成自己的 Key。不要把 Key 放在網址、公開程式碼或聊天訊息裡。

驗證與金鑰

AI API 使用 HTTP Bearer 驗證。模型必須同時在帳號與 API Key 的授權範圍內;帳號停用、Key 到期或撤銷後都無法使用。

Authorization: Bearer YOUR_API_KEY

bf-fp… 是控制台登入 Key,不能用來呼叫模型。普通 API Key 也不能用來登入控制台。完整 API Key 只在建立時顯示一次;遺失時請撤銷並重新建立。

模型清單

GET /v1/models 回傳這把 Key 有權使用且已啟用的模型。出現在清單中不代表模型當下在線。

Model ID(請完整照填) 說明
Qwen3.5-9B 一般版 · Q4_K_M
Qwen3.5-9B_Uncensored Uncensored 版 · Q4_K_M
qwen3.8-27b-bf16 27B BF16
qwen3.8-27b-uncensored 27B Uncensored
gemma4-12b-uncensored-balanced Gemma 4 12B · Balanced · QAT Q4_K_M;來源在線後可生成
curl https://api.tidebell.link/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

模型可用性與上下文長度以實際配置為準;請向服務管理員確認在線狀態。

聊天補全

POST /v1/chat/completions · JSON 請求

欄位 用途
model 必填,模型 ID
messages 必填,對話陣列,文字角色使用 system、user、assistant
max_tokens 正整數,回覆上限;另接受 max_completion_tokens 別名
stream 預設 false;true 為 SSE 串流
temperature 隨機程度,0–2;實際效果依模型
tools / tool_choice 工具呼叫設定,是否成功需視模型及模板支援

Python 範例

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.tidebell.link/v1",
    api_key=os.environ["TIDEBELL_API_KEY"],
)
response = client.chat.completions.create(
    model="Qwen3.5-9B_Uncensored",
    messages=[{"role": "user", "content": "你好"}],
    max_tokens=512,
)
print(response.choices[0].message.content)
print(response.usage)

一般文字回覆位於 choices[0].message.content。usage 可包含 prompt_tokens、completion_tokens、total_tokens;思考模型可能另外回傳推理欄位。

串流回覆

設定 stream: true。伺服器以 text/event-stream 回傳事件,最後用 data: [DONE] 結束。

stream = client.chat.completions.create(
    model="Qwen3.5-9B_Uncensored",
    messages=[{"role": "user", "content": "你好"}],
    max_tokens=512,
    stream=True,
)
for chunk in stream:
    if chunk.choices:
        text = chunk.choices[0].delta.content or ""
        print(text, end="", flush=True)

允許出現註解心跳、空 choices 或用量事件。串流已開始後遇到錯誤,可能以含 error 的 data 事件回傳;不能只憑 HTTP 200 判定生成成功。自行處理 SSE 時也要檢查錯誤事件。

用量與限制

透過此服務送出的請求及模型回覆(包含工具呼叫內容)會寫入服務端詳細日誌,供維護、故障排查與用量追蹤。日誌也記錄排隊、執行狀態、錯誤與模型回傳的上下文用量。驗證憑證會遮蔽,圖片本體不保存;本機詳細日誌由服務管理者保管,與控制台中依帳號權限顯示的用量明細分開。

「API Key 管理」可查看自己的每日請求額度、併發及回覆上限;「用量統計」可查看輸入/輸出 tokens。配額由具備相應權限的管理人員設定。

錯誤處理

HTTP 常見原因與處理
400 / 422 欄位或訊息格式不支援;檢查請求內容。
401 未帶 Key、Key 無效、撤銷或到期。
403 帳號或 Key 沒有模型/操作權限。
404 模型 ID、路徑錯誤,或模型已停用。
429 每日額度、Key 併發或等待佇列達上限;依 Retry-After 等待,避免立即重試。
502 / 503 模型離線、來源連線失敗或服務暫時不可用;稍後重試或聯絡管理員。
{"error":{"message":"錯誤說明","type":"...","code":"key_concurrency_limit"}}

網路層錯誤也可能回傳 HTML,處理失敗時應先檢查狀態碼與 Content-Type。

常見問題

Responses 與 Anthropic 相容介面

三種協定共用相同模型、bf- 金鑰、授權範圍、配額、佇列及用量紀錄。只有協定格式與路徑不同,不需要另開 Colab 或更換模型。

協定 Base URL POST 端點
Chat Completions https://api.tidebell.link/v1 /v1/chat/completions
Responses https://api.tidebell.link/v1 /v1/responses
Anthropic Messages https://api.tidebell.link/a /a/v1/messages

Responses 使用 Authorization: Bearer bf-...。Anthropic 可使用 x-api-key: bf-... 或 Bearer(不要同時提供兩種),SDK 的 anthropic-version: 2023-06-01 可正常使用。請勿將完整 POST 網址當作 SDK Base URL,避免 SDK 重複補上路徑。

from openai import OpenAI
import os
client = OpenAI(base_url="https://api.tidebell.link/v1", api_key=os.environ["TIDEBELL_API_KEY"])
response = client.responses.create(
    model="gemma4-12b-uncensored-balanced",
    input="請用繁體中文介紹你自己。",
    max_output_tokens=128,
    reasoning={"effort": "none"},
    store=False,
)
print(response.output_text)
from anthropic import Anthropic
import os
client = Anthropic(base_url="https://api.tidebell.link/a", api_key=os.environ["TIDEBELL_API_KEY"])
message = client.messages.create(
    model="gemma4-12b-uncensored-balanced",
    max_tokens=128,
    messages=[{"role": "user", "content": "請用繁體中文介紹你自己。"}],
)
print(message.content[0].text)

支援文字、合法 Base64 圖片(仍取決於模型是否載入視覺)、用戶端 function/tool_use 呼叫與工具結果、stream: true。Responses 回傳具型別的 SSE 事件(例如 response.output_text.delta、response.completed);Anthropic 回傳 message_start、content_block_delta、message_stop 等事件,不是 Chat Completions 的 data: [DONE]。工具參數分片會組合、驗證為完整 JSON 後發出對應工具事件;文字維持增量串流。

相容介面不是 OpenAI 或 Anthropic 官方模型託管服務,不會代為執行工具。模型名稱仍填 Tidebell 的實際 ID,不會把 claude-* 或 gpt-* 名稱自動映射到其他模型。

目前限制:Responses 無狀態,請傳送完整 input;store:true、previous_response_id、conversation、背景工作、內建網搜/檔案工具、自動截斷、額外 include 內容不支援。Anthropic 的簽章 thinking、prompt caching、beta 功能、非空 stop_sequences 及 token-counting 端點不支援。這些請求會明確回傳錯誤,不會假裝成功。普通 Key 的模型授權和輸出上限同樣生效。舊 Chat Completions 完整保留。

客戶端要選哪個格式?

選 OpenAI Chat Completions。請勿選 OpenAI Responses 或 Anthropic Messages;目前未提供這兩種接口。

可以傳圖片嗎?

這兩個 Qwen3.5-9B 部署目前以文字推論為準,尚未啟用經驗證的圖片能力。不要因模型名稱或客戶端有附件按鈕就視為支援圖片。

為什麼清單有模型卻不能生成?

模型來源可能尚未啟動、已停止或正在恢復。模型授權與在線狀態是不同條件。


接口文檔 · Tidebell · 最後更新 2026-10-18