开发者文档
蟑螂科技把多家上游模型收敛到统一的 OpenAI 兼容协议。你只需要一个 Base URL 与一个 API Key,即可在现有项目里替换调用地址,无需改写业务逻辑。
开始使用
服务地址为 https://zhanglangkeji.com/v1,认证方式与 OpenAI 一致:在请求头中携带 Authorization: Bearer <API Key>。密钥在控制台「令牌」页面创建,建议按应用分别创建,便于单独限额与吊销。
基础信息
| Base URL | https://zhanglangkeji.com/v1 |
|---|---|
| 认证方式 | Authorization: Bearer sk-... |
| 请求格式 | application/json,UTF-8 |
| 兼容协议 | OpenAI Chat Completions、OpenAI Responses、Anthropic Messages、Gemini |
| 速率限制 | 默认每用户每分钟 120 次请求,超出返回 429 |
| 计费方式 | 按输入 / 输出 token 用量扣减额度,单价见模型广场 |
第一个请求
curl https://zhanglangkeji.com/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-pro",
"messages": [{"role": "user", "content": "用一句话介绍你自己"}]
}'
from openai import OpenAI
client = OpenAI(api_key="sk-...", base_url="https://zhanglangkeji.com/v1")
r = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(r.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.API_KEY,
baseURL: "https://zhanglangkeji.com/v1",
});
const r = await client.chat.completions.create({
model: "deepseek-v4-pro",
messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
console.log(r.choices[0].message.content);
deepseek-v4-pro、deepseek-v4-flash、claude-sonnet-5、claude-opus-5。名称必须完全一致,否则返回 model_not_found。对话
对话接口为 POST /v1/chat/completions,与 OpenAI 的请求体完全一致,支持多轮消息、系统提示、温度、最大输出长度、工具调用与流式输出。
多轮对话与系统提示
{
"model": "claude-sonnet-5",
"messages": [
{"role": "system", "content": "你是一名严谨的技术顾问,回答简洁。"},
{"role": "user", "content": "网关和代理的区别是什么?"},
{"role": "assistant", "content": "…"},
{"role": "user", "content": "那对我现在的项目意味着什么?"}
],
"temperature": 0.7,
"max_tokens": 1024
}
流式输出
设置 "stream": true 后返回 SSE 事件流,以 data: 开头,最后以 data: [DONE] 结束。客户端需逐行解析,不要等待完整响应。
stream = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[{"role": "user", "content": "写一段 100 字的项目简介"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
const stream = await client.chat.completions.create({
model: "deepseek-v4-pro",
messages: [{ role: "user", content: "写一段 100 字的项目简介" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
常用参数
| 参数 | 说明 |
|---|---|
model | 模型 ID,必填 |
messages | 消息数组,必填,支持 system / user / assistant |
stream | 是否流式返回,默认 false |
temperature | 随机性,0–2,越大越发散 |
max_tokens | 最大输出 token 数 |
tools / tool_choice | 函数调用,格式与 OpenAI 一致 |
图像生成
图像接口兼容 OpenAI 的 POST /v1/images/generations,也支持文生图与图生图(/v1/images/edits)。返回 b64_json 或 url,取决于参数。
curl https://zhanglangkeji.com/v1/images/generations \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-1",
"prompt": "极简风格的白色苏打水瓶,纯黑背景,产品摄影",
"size": "1024x1024",
"n": 1
}'
r = client.images.generate(
model="gpt-image-1",
prompt="极简风格的白色苏打水瓶,纯黑背景,产品摄影",
size="1024x1024",
n=1,
)
print(r.data[0].url)
| 参数 | 说明 |
|---|---|
model | 图像模型 ID |
prompt | 提示词,必填 |
size | 常见取值 1024x1024、1536x1024、1024x1536 |
n | 生成张数,默认 1 |
response_format | url 或 b64_json |
视频生成
视频生成属于长任务,采用「提交任务 → 轮询结果」的异步模式:先提交生成请求拿到任务 ID,再按间隔查询任务状态,成功后返回视频地址。
curl https://zhanglangkeji.com/v1/video/generations \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "sora-2",
"prompt": "黑底画面中,一只白色线条勾勒的昆虫缓慢转动",
"duration": 5,
"size": "1280x720"
}'
curl https://zhanglangkeji.com/v1/video/generations/TASK_ID \ -H "Authorization: Bearer sk-..."
任务状态依次为 queued → in_progress → completed,失败时为 failed 并附带 error。建议轮询间隔 5–10 秒,单个任务通常在一至数分钟内完成。
{
"id": "task_8f2c...",
"status": "completed",
"model": "sora-2",
"created_at": 1793278800,
"result": {
"video_url": "https://…/output.mp4",
"duration": 5,
"size": "1280x720"
}
}
一键配置 Agent
多数 AI 编程与桌面 Agent 只要求两个值:API 地址与密钥。把它指向本站即可复用已有额度与账单。
Claude Code
设置以下环境变量,Claude Code 会通过 Anthropic 兼容协议调用本站模型。
export ANTHROPIC_BASE_URL="https://zhanglangkeji.com" export ANTHROPIC_AUTH_TOKEN="sk-..." export ANTHROPIC_MODEL="claude-sonnet-5" export ANTHROPIC_SMALL_FAST_MODEL="claude-haiku-4-5" # 写入 ~/.zshrc 或 ~/.bashrc 后重启终端 claude
Cline / Roo Code / Continue
在插件设置中选择 Provider 为 OpenAI Compatible,填入:
| Base URL | https://zhanglangkeji.com/v1 |
|---|---|
| API Key | sk-... |
| Model ID | claude-sonnet-5 或 deepseek-v4-pro |
OpenAI Codex CLI
model = "claude-sonnet-5" model_provider = "zhanglangkeji" [model_providers.zhanglangkeji] name = "蟑螂科技" base_url = "https://zhanglangkeji.com/v1" env_key = "API_KEY"
桌面客户端(Cherry Studio / LobeChat 等)
- 模型服务商选择 OpenAI 或 自定义 / OpenAI 兼容;
- API 地址填
https://zhanglangkeji.com/v1(部分客户端需填到/v1,不要重复追加); - 粘贴 API Key 后点击「检查 / 获取模型列表」,能看到模型即表示连通。
https://zhanglangkeji.com(不带 /v1);如果只支持 OpenAI 协议,则填 https://zhanglangkeji.com/v1。错误码
| 状态码 | 错误类型 | 原因与处理 |
|---|---|---|
400 | invalid_request_error | 请求体格式错误、缺少必填参数、参数超出范围。检查 JSON 与字段名。 |
401 | invalid_api_key | 密钥缺失、格式错误或已被吊销。确认请求头为 Authorization: Bearer sk-...。 |
403 | insufficient_quota | 额度不足或令牌无权访问该模型 / 分组。前往控制台充值或检查令牌权限。 |
404 | model_not_found | 模型 ID 不存在或已下线。以模型广场中的名称为准。 |
429 | rate_limit_exceeded | 超过每分钟请求上限(默认 120 次)。降低并发、加入退避重试。 |
500 | internal_error | 服务内部异常。携带请求 ID 联系技术支持。 |
502 / 504 | upstream_error | 上游渠道异常或超时。平台会自动重试,可稍后重试或改用同分组其他模型。 |
503 | service_unavailable | 该能力未开通或渠道暂时不可用。联系管理员确认渠道状态。 |
错误响应体与 OpenAI 一致,可直接用 SDK 的异常类型捕获:
{
"error": {
"message": "当前分组上游负载已饱和,请稍后再试",
"type": "rate_limit_exceeded",
"code": "429"
}
}
常见问题
请求地址结尾要不要带 /v1?
OpenAI 兼容客户端需要带 /v1;Anthropic 兼容客户端只填域名,不要带 /v1。
为什么模型列表里有但我调用报 model_not_found?
多为模型名不完全一致(大小写、连字符)或该模型未对你所在分组开放。可先用 GET /v1/models 拉取可用列表。
额度是按次还是按 token 扣费?
按实际输入与输出 token 用量扣费,不同模型单价不同,实际扣费可在控制台调用日志逐条核对。
可以开具发票吗?
可以,支持增值税普通发票与专用发票。申请所需资料与时效见主页「常见问题」或联系客服。
密钥泄露了怎么办?
立即在控制台令牌页面删除该密钥并重新创建,同时检查调用日志中是否有异常消耗。
蟑螂科技