Kimi Code API Base URL 設定
此服務所需的 Kimi Code API Base URL 為 https://api.kimicode.cc/v1。將其設為任何 OpenAI 相容客戶端的 Base URL,填入你的金鑰,並使用模型 ID uncensored。
更新

URL 及其各部分含義
如果你正在尋找 kimi code api url,你可能在尋找 Kimi 自有服務的位址。請使用供應商的文件,因為我無法為其背書。此網站運行的是不同的東西:由獨立供應商運營、位於單一開放權重模型前方的託管式 OpenAI 相容 API。其位址為:
https://api.kimicode.cc/v1
該字串是 Base URL。這是每個請求都會共享的部分。SDK 會附加其餘部分。當你呼叫 chat.completions.create 時,OpenAI 函式庫會向 https://api.kimicode.cc/v1/chat/completions 發送 POST 請求。模型清單位於 https://api.kimicode.cc/v1/models,且需使用 GET 請求。
此 API 僅提供這兩種方法:POST /v1/chat/completions 與 GET /v1/models。如果你期望圖片、音訊或嵌入端點,這裡沒有。這是一個文字 API。
有三個設定很重要,你現有的 OpenAI 程式碼不需要其他變更:Base URL、API 金鑰與模型 ID uncensored。
為什麼 Base URL 是唯一開關
相容 OpenAI API 的客戶端基於一個概念建構:請求格式是固定的,而主機是設定。函式庫有一個指向原始供應商的預設主機。當你將其替換為另一個 Base URL 時,相同的請求主體會被發送到其他地方。你的提示詞、訊息陣列或回應解析不需要任何變更。
這也說明了為什麼從另一個相容 OpenAI 的供應商遷移通常只需三處編輯:Base URL、金鑰與模型名稱。回應中的欄位,例如 choices、message、finish_reason 與 usage,名稱相同,因此讀取這些欄位的程式碼可以繼續運作。
它也說明了人們遇到的奇怪錯誤。如果工具要求「伺服器 URL」而你只貼上主機,則路徑遺漏。如果工具要求「完整端點」而你貼上 Base URL,請求會發送到錯誤的位置。當設定畫面不清楚時,先嘗試 Base URL 並查看回傳的狀態碼。文件中的快速入門指南會透過另一個範例引導你完成相同的遷移。
無法編輯的工具的環境變數
許多命令列工具與框架會建立 OpenAI 客戶端,但不讓你觸及建構子。它們通常會讀取標準環境變數,因此設定它們即可:
export OPENAI_BASE_URL="https://api.kimicode.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
一些較舊的工具會尋找 OPENAI_API_BASE,因此如果一個工具忽略第一個名稱,請嘗試第二個。設定後,在同一個 shell 工作階段中啟動工具,因為在其他終端機視窗中設定的變數不會共享。
工具仍需要模型名稱。如果它硬編碼了託管模型,請尋找設定它的旗標或設定行,並使用 uncensored。如果無法變更,則該工具不適合,使用上述類型的腳本是更好的途徑。
先取得金鑰
請求透過 Authorization: Bearer YOUR_KEY 形式的標頭進行驗證。每個官方 SDK 都會根據 api_key 參數自動建立該標頭。你可以透過 Google 或電子郵件與密碼登入後建立金鑰。
新帳戶可以在 API 金鑰頁面 上一鍵領取 $0.50 的試用額度。不需要信用卡,有效期為 7 天。這足以多次運行以下每個範例。試用金鑰允許 2 個並行請求與每分鐘 60 個請求,因此請一次運行一個範例。
將金鑰儲存在環境變數中,而非原始碼檔案中。提交到公開儲存庫的金鑰會在數小時內被他人發現並使用,而其中的額度屬於你。
curl 的第一次請求
Curl 是證明 URL 運作最快的方式,因為它排除了所有程式庫。如果此呼叫成功,你之後遇到的任何問題都出在用戶端設定上。
export KIMICODE_KEY="YOUR_KEY"
curl https://api.kimicode.cc/v1/models -H "Authorization: Bearer $KIMICODE_KEY"
curl https://api.kimicode.cc/v1/chat/completions -H "Authorization: Bearer $KIMICODE_KEY" -H "Content-Type: application/json" -d '{
"model": "uncensored",
"messages": [
{"role": "user", "content": "Say hello in five words."}
]
}'
第一次呼叫會回傳模型列表,其中應包含 uncensored。第二次呼叫會回傳標準的聊天完成物件。使用 curl -i 查看回應標頭,你會看到 X-Request-Id、X-Balance-USD、X-RateLimit-Limit-Requests 和 X-RateLimit-Limit-Concurrency。如果你需要就特定請求聯繫 支援,請保留請求 ID。
Python 搭配 OpenAI SDK
使用 pip install openai 安裝函式庫,然後變更客戶端建構子的兩個參數。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.kimicode.cc/v1",
api_key=os.environ["KIMICODE_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain what a base URL is in two sentences."},
],
temperature=0.7,
)
print(resp.choices[0].message.content)
print(resp.usage)
temperature、top_p、stop、seed 等參數以及頻率懲罰與存在懲罰會直接傳遞給模型。max_tokens 為選填值。若未指定,完成內容可使用剩餘的 100,000 token 上下文視窗空間(包含提示詞與完成內容的總和)。
如果你不傳遞參數,SDK 也會讀取兩個環境變數:OPENAI_BASE_URL 與 OPENAI_API_KEY。這對於無法編輯的工具很有用。設定兩者,啟動工具,它就會與此 API 通訊。
Node、串流輸出與 JSON 模式
Node 設定與 Python 類似。使用 npm install openai 安裝。
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.kimicode.cc/v1",
apiKey: process.env.KIMICODE_KEY,
});
// Streaming over SSE
const stream = await client.chat.completions.create({
model: "uncensored",
stream: true,
messages: [{ role: "user", content: "Write a four-line poem about routers." }],
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
// JSON mode
const json = await client.chat.completions.create({
model: "uncensored",
response_format: { type: "json_object" },
messages: [
{ role: "system", content: "Reply with a JSON object only." },
{ role: "user", content: "Give me keys name and port for a local dev server." },
],
});
console.log(JSON.parse(json.choices[0].message.content));
串流使用伺服器發送事件,用量報告在串流結束時提供。串流請求會佔用其並行槽位,直到串流結束,因此開啟串流卻從未讀取的用戶端會阻塞一個槽位。使用 JSON 模式時,仍需在提示詞中指示模型以 JSON 回答。該旗標限制輸出格式,但清晰的指示能提供更好的欄位名稱。
函式呼叫
工具使用標準的 OpenAI 格式:tools 清單、可選的 tool_choice,以及以 role: "tool" 訊息形式傳回的 tool 結果。串流輸出時,tool_calls 會分散在多個區塊中到達。
import json, os
from openai import OpenAI
client = OpenAI(base_url="https://api.kimicode.cc/v1", api_key=os.environ["KIMICODE_KEY"])
tools = [{
"type": "function",
"function": {
"name": "get_port",
"description": "Look up the port of a named local service",
"parameters": {
"type": "object",
"properties": {"service": {"type": "string"}},
"required": ["service"],
},
},
}]
messages = [{"role": "user", "content": "Which port does the api service use?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]
messages.append(first.choices[0].message)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps({"service": "api", "port": 8080}),
})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)
將來自模型的參數視為不可信輸入。在執行任何操作前請驗證它們。模型可能會跳過工具呼叫或使用錯誤的欄位呼叫它,就像任何模型都可能那樣,因此在迴圈中保留備用路徑。
當 URL 失敗時
大多數失敗歸類為少數幾種類型。
- 404 Not Found。 路徑錯誤。常見原因:Base URL 設定為
https://api.kimicode.cc而缺少/v1,或設定為https://api.kimicode.cc/v1/chat/completions導致客戶端重複附加路徑。請使用上述確切的 Base URL。 - 401 Unauthorized。 金鑰遺失、含有多餘的空格或換行,或標頭不是 Bearer token。請列印變數的長度以進行檢查。
- 429 且程式碼為
rate_limited。 你達到了每分鐘上限:完整金鑰為 300 個請求,試用金鑰為 60 個請求。 - 429 且程式碼為
concurrency。 同時請求過多:完整金鑰為 8 個,試用金鑰為 2 個。 - 429 且帶有
Retry-After: 5標頭。 暫時過載。等待五秒後重試。 - 請求過大。 主體限制為 8 MB,且提示詞與補全必須符合 100,000 token。
尊重 Retry-After 並對其他兩個程式碼退避的重試迴圈可處理幾乎所有情況。每次呼叫的成本很小;定價頁面 有每 token 費率,文件快速入門 展示了從另一個相容 OpenAI 風格供應商的遷移步驟。
重試與生產環境習慣
第一次呼叫成功後,在發布前加入重試包裝函式。當存在 Retry-After 標頭時請尊重它,否則請使用短暫的隨機延遲進行退避。
import os, time, random
from openai import OpenAI, RateLimitError
client = OpenAI(base_url="https://api.kimicode.cc/v1", api_key=os.environ["KIMICODE_KEY"])
def ask(messages, tries=5):
for attempt in range(tries):
try:
return client.chat.completions.create(model="uncensored", messages=messages)
except RateLimitError as err:
retry_after = 5
if getattr(err, "response", None) is not None:
retry_after = int(err.response.headers.get("retry-after", 5))
time.sleep(retry_after + random.random())
raise RuntimeError("still rate limited after retries")
將你自己的並行請求限制與金鑰匹配:完整金鑰為 8 的執行緒池,試用金鑰為 2。這可防止 concurrency 錯誤發生,並在每次呼叫超過幾秒鐘時,讓你保持在每分鐘 300 個請求的限制內。
最後,請記住你是按 token 付費。記錄每次呼叫的 usage 物件,並監控 X-Balance-USD 標頭。每 1M 輸入 token 為 $0.15,每 1M 輸出 token 為 $0.50,典型的聊天輪次僅需幾分之一美分,但迴圈與長歷史記錄會累積費用,而記錄會告訴你錢花在哪裡。
更多指南
問答
此 API 的基礎 URL 是什麼?
https://api.kimicode.cc/v1。請將其設為任何 OpenAI 相容客戶端的基礎 URL,並將路徑留給函式庫處理。
我要發送哪個模型 ID?
將 uncensored 設為模型值。您可以使用 API 金鑰呼叫 GET /v1/models 來確認。
我可以使用來自此處的我的金鑰使用官方的 Kimi 端點嗎?
不行。這是獨立服務,擁有自己的金鑰與單一開放權重模型,並非任何廠商的官方 API。金鑰無法在兩者之間通用。
為什麼聊天完成會返回 404?
Base URL 可能缺少 /v1,或已包含 /chat/completions。僅使用 https://api.kimicode.cc/v1,不要多加任何內容。