把 OpenAI 或 Anthropic SDK 接到 Thklumi
已经在用 OpenAI 或 Claude?接入 Thklumi 通常只动两处:把 base_url 指向本站,把 api_key 换成控制台里 sk- 开头的密钥。模型名沿用模型页上的别名,例如 deepseek-v4-flash、gpt-5.5、claude-sonnet-4-6。
记住这一点就够了
SDK 与业务代码基本不动。把 base URL 指向 https://api.thklumi.com/v1,再带上你的 Thklumi 密钥即可发起请求。
鉴权与请求地址
所有请求发往同一站点,并在请求头带上密钥。我们同时提供两套主流协议:OpenAI 兼容(Bearer 鉴权)与 Anthropic 原生(x-api-key 鉴权),按你手里的 SDK 选一套即可,业务代码几乎不用改。
创建 API 密钥
第一次调用(Chat Completions)
这是最推荐的接入方式。把 OpenAI SDK 的 base_url 指向 Thklumi,model 填模型别名,messages 按 OpenAI 原格式传入即可。下面给出 Python、Node.js、cURL 三种写法。
from openai import OpenAI
client = OpenAI(
api_key="sk-你的密钥",
base_url="https://api.thklumi.com/v1",
)
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "user", "content": "用一句话介绍你自己"}
],
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-你的密钥",
baseURL: "https://api.thklumi.com/v1",
});
const response = await client.chat.completions.create({
model: "deepseek-v4-flash",
messages: [
{ role: "user", content: "用一句话介绍你自己" },
],
});
console.log(response.choices[0].message.content);curl https://api.thklumi.com/v1/chat/completions \
-H "Authorization: Bearer sk-你的密钥" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{"role": "user", "content": "用一句话介绍你自己"}
]
}'流式返回
如果希望像 ChatGPT 一样边生成边显示,把 stream 设为 true。服务端返回标准 SSE 数据流(data: {...} 分片,以 data: [DONE] 结束),按 chunk 逐段读取即可。
stream = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "写一个三步上线检查清单"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")curl https://api.thklumi.com/v1/chat/completions \
-H "Authorization: Bearer sk-你的密钥" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"stream": true,
"messages": [
{"role": "user", "content": "写一首五言绝句"}
]
}'Responses API
Responses 是 OpenAI 新接口。Thklumi 会优先调用上游原生 Responses;如果上游暂不支持,会自动转换到 chat.completions,再把结果包装回 Responses 格式。
response = client.responses.create(
model="gpt-5.5",
input="请用三句话解释什么是 API 网关",
)
print(response.output_text)Anthropic 原生协议
除 OpenAI 兼容格式外,我们还提供 Anthropic 原生 Messages 接口(/v1/messages)。anthropic 官方 SDK、Claude Code 无需改代码,只要把 Base URL 指向本站、密钥用 sk- 开头即可;鉴权走 x-api-key(也兼容 Authorization: Bearer),model 填 claude-* 别名。网关会在内部把 Anthropic 请求与流式事件与上游 OpenAI 渠道互相转换。
curl https://api.thklumi.com/v1/messages \
-H "x-api-key: sk-你的密钥" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "用一句话介绍你自己"}
]
}'from anthropic import Anthropic
client = Anthropic(
api_key="sk-你的密钥",
base_url="https://api.thklumi.com",
)
resp = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}],
)
print(resp.content[0].text)在 Claude Code 中接入
export ANTHROPIC_BASE_URL="https://api.thklumi.com" export ANTHROPIC_API_KEY="sk-你的密钥"
该用哪个接口
两个接口都跑在同一个 Base URL 上,按项目情况选择即可:老项目继续用 chat.completions,新项目也可以用 responses.create。
大多数场景:client.chat.completions.create()
DeepSeek、GLM、Kimi 以及绝大多数 OpenAI 兼容模型都支持。普通聊天、流式输出、生产业务优先选它,兼容性最高。
新 OpenAI 模型:client.responses.create()
新版 OpenAI SDK 可继续使用 responses.create。即使上游只支持 chat.completions,Thklumi 也会在网关层自动完成协议转换。
可用模型
用下面的接口实时拉取当前账号可调用的完整模型列表;请求时 model 字段直接填返回里的 id(全小写)。也可以在模型页查看别名、价格与能力。
curl https://api.thklumi.com/v1/models \ -H "Authorization: Bearer sk-你的密钥"
已覆盖 Anthropic Claude、OpenAI GPT、Google Gemini、DeepSeek、GLM、Kimi 等 40+ 主流模型,全部通过一套 OpenAI 兼容协议直连。
打开模型页在 Agent 工具中接入
Codex、Cline、Cherry Studio 等支持 OpenAI 协议的客户端,只需把 Base URL 和 API Key 指向 Thklumi,无需改动工具本身。设置以下环境变量即可:
export OPENAI_BASE_URL="https://api.thklumi.com/v1" export OPENAI_API_KEY="sk-你的密钥"
凡是支持自定义 OpenAI Base URL 的客户端都可这样接入。如果工具是在界面里填写,把「API 地址 / Base URL」填 https://api.thklumi.com/v1,「密钥」填 sk- 开头的 Key 即可。
常见错误怎么排查
常见问题
调用返回 401 怎么办?
先看协议对不对:OpenAI 格式用 Authorization: Bearer sk-...,Anthropic 格式用 x-api-key: sk-...。再确认密钥复制完整、没有多余空格,且没有在控制台被停用。
模型报 not found?
模型名以模型页或 GET /v1/models 返回的 id 为准(全小写,注意 - 和 . 的区别)。Claude 系列请用 claude-* 别名,并确认该模型当前有可用渠道。
第一个字迟迟不出来?
大模型在思考阶段有几秒到几十秒延迟是正常现象,不代表失败。建议开启流式(stream),并把客户端读超时放宽到数百秒,别用默认的十几秒。
密钥怎么放才安全?
只放在服务端的环境变量或密钥托管里,别硬编码、别提交 Git、别打进前端包。一旦怀疑外泄,先去控制台删掉旧 Key 再建新的。
上线前检查清单
密钥只放后端
不要把 sk-lumi 密钥写到浏览器代码、App 客户端或公开 Git 仓库。前端应请求你自己的后端。
默认使用 chat.completions
除非模型明确要求 Responses API,否则优先接 chat.completions,兼容性最高。
给 429/502 加重试
推荐最多重试 2 到 3 次,并使用指数退避;用户取消请求时要及时停止流式连接。
上线后看请求日志
通过日志页检查模型、状态码、token 和花费。出现异常时用 request_id 快速定位。

