Kimi Code API 基础 URL:OpenAI 客户端配置
此服务所需的 Kimi Code API URL 是 https://api.kimicode.cc/v1。将其作为基础 URL 放入任何 OpenAI 客户端,添加你的密钥,并使用模型 ID uncensored。
已更新

URL 及其各部分含义
如果你正在寻找 kimi code api url,你可能在查找 Kimi 自己的服务地址。为此,请使用供应商提供的文档,因为我不对其负责。本网站运行的是不同的服务:一个由独立提供商运营的、面向单一开放权重模型的托管式 OpenAI 兼容 API。其地址为:
https://api.kimicode.cc/v1
该字符串是 基础 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 代码无需其他更改:基础 URL、API 密钥和模型 ID uncensored。
为什么基础 URL 是唯一的开关
OpenAI 风格客户端围绕一个理念构建:请求格式是固定的,主机是一个设置。库有一个指向原始供应商的默认主机。当你将其替换为另一个基础 URL 时,相同的请求体会发送到其他地方。你的提示词、消息数组或响应解析中没有任何内容需要更改。
这也解释了为什么从另一个 OpenAI 兼容提供商迁移通常只需三次编辑:基础 URL、密钥和模型名称。响应中的字段,如 choices、message、finish_reason 和 usage,名称相同,因此读取它们的代码可以继续工作。
它还解释了人们遇到的奇怪错误。如果某个工具要求输入“服务器 URL”而你只粘贴了主机名,则缺少路径部分。如果某个工具要求输入“完整端点”而你只粘贴了基础地址,请求就会发送到错误的位置。当设置界面不明确时,请先尝试基础 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_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。 路径错误。常见原因:基础 URL 设置为
https://api.kimicode.cc而没有/v1,或设置为https://api.kimicode.cc/v1/chat/completions导致客户端两次追加路径。使用上述确切的基础 URL。 - 401 Unauthorized。 密钥缺失、包含多余空格或换行符,或者头部不是 Bearer 令牌。打印变量的长度以进行检查。
- 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 标头。输入 token 每 100 万 token 价格为 $0.15,输出 token 每 100 万 token 价格为 $0.50,典型的聊天轮次仅需几分之一美分,但循环和长历史记录会累积费用,日志会告诉您具体情况。
更多指南
问答
此 API 的基础 URL 是什么?
https://api.kimicode.cc/v1. 将其设置为任何 OpenAI 兼容客户端的基础 URL,并将路径留给库处理。
我发送哪个模型 ID?
将 uncensored 作为模型值发送。您可以通过使用密钥调用 GET /v1/models 来确认它。
我可以使用此处的密钥调用官方 Kimi 接口吗?
不行。这是一个独立服务,拥有自己的密钥和一款开放权重模型,并非任何供应商的官方 API。密钥无法双向通用。
为什么聊天补全接口返回 404?
Base URL 可能缺少 /v1,或者已经包含了 /chat/completions。请使用 https://api.kimicode.cc/v1,不要添加其他内容。