注册并创建 API Key
在控制台创建密钥,建议按项目或环境拆分。新密钥只在创建时显示一次,请妥善保存。
前往注册完全兼容 OpenAI SDK 与 API 规范。只需修改 Base URL 与 API Key,即可在现有项目中无缝切换全球模型,Token 用量在响应里直接可见。
curl https://tkonegeo.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxx" \
-d '{
"model": "anthropic/claude-fable-5.1",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxx",
base_url="https://tkonegeo.com/v1"
)
response = client.chat.completions.create(
model="anthropic/claude-fable-5.1",
messages=[{"role": "user", "content": "Hello!"}],
stream=True
)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-xxxx",
baseURL: "https://tkonegeo.com/v1",
});
const stream = await client.chat.completions.create({
model: "anthropic/claude-fable-5.1",
messages: [{ role: "user", content: "Hello!" }],
stream: true,
});
如果你已经在使用 OpenAI SDK,迁移只需要替换两个值。不需要改业务代码,也不需要重新设计数据模型。
在控制台创建密钥,建议按项目或环境拆分。新密钥只在创建时显示一次,请妥善保存。
前往注册把 https://api.openai.com/v1 替换为 https://tkonegeo.com/v1。
选择模型,发送对话请求。响应中的 usage 字段会返回本次消耗的 Token。
下面的示例使用 Claude Fable 5.1。把 model 换成任意上架模型,即可切换。流式输出默认开启,适合聊天与长文生成。
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxx",
base_url="https://tkonegeo.com/v1"
)
stream = client.chat.completions.create(
model="anthropic/claude-fable-5.1",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "用三句话解释什么是 Token。"},
],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-xxxx",
baseURL: "https://tkonegeo.com/v1",
});
const stream = await client.chat.completions.create({
model: "anthropic/claude-fable-5.1",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "用三句话解释什么是 Token。" },
],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
curl https://tkonegeo.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxx" \
-d '{
"model": "anthropic/claude-fable-5.1",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "用三句话解释什么是 Token。"}
],
"stream": true
}'
兼容 OpenAI 的核心端点。每次对话响应都会返回 usage 字段,把 prompt_tokens 与 completion_tokens 入库,就能做自己的成本分析。
| 端点 | 方法 | 说明 | Token 计量 |
|---|---|---|---|
| /v1/chat/completions | POST | 对话补全,支持流式输出、函数调用与多模态消息 | prompt + completion |
| /v1/models | GET | 获取当前可用的模型列表 | 不消耗 |
| /v1/embeddings | POST | 文本向量化,用于检索、聚类与推荐 | prompt |
{
"id": "chatcmpl-...",
"object": "chat.completion",
"model": "anthropic/claude-fable-5.1",
"usage": {
"prompt_tokens": 18,
"completion_tokens": 42,
"total_tokens": 60
}
}
把每次调用的 usage 与业务单据关联,你就能回答:哪个功能最费 Token、哪个客户消耗最高、哪个模型值得替换。
常见错误码与处理方式。生产环境建议对 429 与 5xx 做指数退避重试,并记录请求 ID 便于排查。
| 状态码 | 含义 | 常见原因 | 建议处理 |
|---|---|---|---|
| 400 | 请求参数错误 | 模型名不存在、messages 格式错误、参数越界 | 检查请求体与模型名 |
| 401 | 未授权 | API Key 缺失、失效或格式错误 | 检查 Authorization 头 |
| 403 | 无权限 | Key 未开通该模型或额度不足 | 检查 Key 的模型范围与额度 |
| 429 | 请求过多 | 超出速率限制或并发限制 | 指数退避重试,降低并发 |
| 500 | 服务内部错误 | 上游异常或临时故障 | 重试;持续出现请联系客服 |
| 503 | 无可用渠道 | 该模型暂无可用线路 | 切换模型或稍后重试 |
这些习惯不复杂,但能帮你少踩很多坑。
不要把密钥写进前端代码或 Git 仓库。使用环境变量或密钥管理服务。
每个项目或环境一个 Key,便于归因 Token 用量,也便于单独吊销。
聊天与长文场景开启 stream,首字延迟更低,用户体验明显更好。
对 429 与 5xx 使用指数退避,并设置最大重试次数,避免放大故障。