Python / Node.js SDK
使用 Python、Node.js 和环境变量接入业务服务。
本页目录
自研后端、Agent Server 和自动化脚本可以直接使用 OpenAI 或 Anthropic SDK。正确的生产接入顺序是:创建服务专用 Key -> 查询模型 -> 在本地跑最小示例 -> 增加超时和错误处理 -> 使用 Secret 部署。
第一步:创建服务专用 Key
- 登录
https://console.zcloudapi.com。 - 在「API 密钥」创建一条新 Key。
- 名称写明服务和环境,例如
order-agent-dev或report-api-prod。 - 只开放该服务真正需要的模型。
- 给生产 Key 设置可承受的额度上限。
- 开发、测试和生产分别使用不同 Key。
第二步:准备环境变量
下面的 YOUR_TEXT_MODEL_ID 是占位符,执行 SDK 示例前必须替换为本人 Key 的 /v1/models 返回结果中支持 Chat Completions 的完整文本模型 ID。
macOS / Linux:
export ZHICLOUD_BASE_URL="https://api.zcloudapi.com/v1"
export ZHICLOUD_API_KEY="sk-你的-ZCloudAPI-Key"
export ZHICLOUD_MODEL="YOUR_TEXT_MODEL_ID"
Windows PowerShell:
$env:ZHICLOUD_BASE_URL="https://api.zcloudapi.com/v1"
$env:ZHICLOUD_API_KEY="sk-你的-ZCloudAPI-Key"
$env:ZHICLOUD_MODEL="YOUR_TEXT_MODEL_ID"
先查询 /v1/models 并替换 ZHICLOUD_MODEL。模型可见不代表支持所有协议和参数;使用 Responses 或 Anthropic 示例时,需另外选择支持对应协议的模型,并以真实请求和使用日志验证。
第三步:完成基础连通性测试
curl "https://api.zcloudapi.com/v1/models" \
-H "Authorization: Bearer $ZHICLOUD_API_KEY"
再执行一次最小 Chat Completions 请求。基础 curl 没有成功前,不要开始排查 SDK。
Python OpenAI SDK
1. 创建独立项目环境
mkdir zhicloud-python-service
cd zhicloud-python-service
python -m venv .venv
激活环境。
macOS / Linux:
source .venv/bin/activate
Windows PowerShell:
.venv\Scripts\Activate.ps1
2. 安装依赖
python -m pip install --upgrade openai
3. 新建 app.py
import os
import sys
from openai import APIConnectionError, APIStatusError, OpenAI, RateLimitError
required = ["ZHICLOUD_API_KEY", "ZHICLOUD_BASE_URL", "ZHICLOUD_MODEL"]
missing = [name for name in required if not os.environ.get(name)]
if missing:
raise RuntimeError(f"缺少环境变量: {', '.join(missing)}")
client = OpenAI(
api_key=os.environ["ZHICLOUD_API_KEY"],
base_url=os.environ["ZHICLOUD_BASE_URL"],
timeout=60.0,
max_retries=2,
)
try:
response = client.chat.completions.create(
model=os.environ["ZHICLOUD_MODEL"],
messages=[{"role": "user", "content": "只回复 OK"}],
max_tokens=32,
)
except RateLimitError:
print("请求受到限流,请降低并发后重试", file=sys.stderr)
raise
except APIConnectionError:
print("无法连接模型 API,请检查网络和 Base URL", file=sys.stderr)
raise
except APIStatusError as error:
print(f"API 返回状态码 {error.status_code}", file=sys.stderr)
raise
print(response.choices[0].message.content)
print(response.usage)
4. 运行并验证
python app.py
确认输出 OK 和用量,然后到控制台使用日志核对同一次请求。
Node.js OpenAI SDK
1. 创建项目并安装依赖
mkdir zhicloud-node-service
cd zhicloud-node-service
npm init -y
npm install openai
2. 新建 app.mjs
import OpenAI from 'openai'
const required = ['ZHICLOUD_API_KEY', 'ZHICLOUD_BASE_URL', 'ZHICLOUD_MODEL']
const missing = required.filter((name) => !process.env[name])
if (missing.length > 0) {
throw new Error(`缺少环境变量: ${missing.join(', ')}`)
}
const client = new OpenAI({
apiKey: process.env.ZHICLOUD_API_KEY,
baseURL: process.env.ZHICLOUD_BASE_URL,
timeout: 60_000,
maxRetries: 2,
})
try {
const response = await client.chat.completions.create({
model: process.env.ZHICLOUD_MODEL,
messages: [{ role: 'user', content: '只回复 OK' }],
max_tokens: 32,
})
console.log(response.choices[0].message.content)
console.log(response.usage)
} catch (error) {
console.error('ZCloudAPI 请求失败', {
name: error?.name,
status: error?.status,
message: error?.message,
})
process.exitCode = 1
}
3. 运行并验证
node app.mjs
不要在错误日志中输出 SDK 客户端对象、完整 Header 或环境变量。
使用 Responses API
Codex 或 Agent 服务使用 Responses API 时,只改变 SDK 方法和输入结构:
response = client.responses.create(
model=os.environ["ZHICLOUD_MODEL"],
input="只回复 OK",
max_output_tokens=32,
)
print(response.output_text)
完整返回结构和工具调用注意事项见「Responses API」。
使用 Anthropic SDK
Claude 服务应使用 Anthropic SDK。先在上文的独立 Python 环境安装依赖:
python -m pip install --upgrade anthropic
把 base_url 设为不带 /v1 的 API Origin;SDK 会自行追加 /v1/messages。首次连通性测试关闭自动重试,便于核对单次请求:
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["ZHICLOUD_API_KEY"],
base_url=os.environ.get("ZHICLOUD_ANTHROPIC_BASE_URL", "https://api.zcloudapi.com"),
timeout=60.0,
max_retries=0,
)
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=32,
messages=[{"role": "user", "content": "只回复 OK"}],
)
for block in message.content:
if block.type == "text":
print(block.text)
最近验证:2026 年 10 月 16 日,Python 3.10.12、Anthropic SDK 1.15.0,以上 Messages 最小调用返回 OK、end_turn 和有效 usage,并与站内使用日志一致。模型权限和可用性仍以当前 Key 的实际配置为准。
上线前增加的保护
超时
- 普通文本建议从 60 秒开始。
- 推理、Agent 和图片请求需要更长超时。
- 同时设置连接超时和整体请求超时,避免无限等待。
重试
- 只对网络错误、
429和部分5xx做有限重试。 - 使用指数退避并增加随机抖动。
- 不要对所有
400、401、403自动重试。 - 有副作用的工具调用需要业务幂等键,避免重试导致重复执行。
日志
建议记录:
- 业务 request ID。
- 模型名、接口、状态码和耗时。
- 输入与输出 Token 数量。
- 是否重试以及最终结果。
不要记录:
- 完整 API Key 和 Authorization Header。
- 密码、私钥和上游凭据。
- 没有业务必要的完整敏感请求正文。
模型可用性
- 部署前用生产 Key 查询
/v1/models。 - 启动时检查目标模型是否存在。
- 为关键业务准备经过测试的备用模型。
- 切换模型时重新验证协议、参数和价格。
部署时如何提供 Secret
| 环境 | 推荐方式 |
|---|---|
| GitHub Actions | Repository / Environment Secrets |
| Docker Compose | 服务器 .env 或 Docker Secret |
| Kubernetes | Kubernetes Secret 或外部密钥管理服务 |
| 云函数 | 平台 Secret / Environment Variables |
| 本地开发 | 密码管理器或未提交的本地环境文件 |
把 .env 加入 .gitignore 只能降低误提交风险,不能替代正式 Secret 管理。
上线验收清单
- 生产 Key 只开放必要模型和额度。
/v1/models返回目标模型。- 最小 SDK 请求返回
200和正文。 - SDK 能读取
usage。 - 控制台使用日志有对应记录。
- 超时、有限重试和错误分类已经配置。
- 日志不会输出完整 Key 和敏感正文。
- Key 只存在于部署环境的 Secret 中。
- 轮换 Key 时可以在不中断服务的情况下切换。