AI API 中转站使用指南:接入流程、Key 安全与排错

最后更新:

API 中转服务为应用提供统一的模型调用入口。接入时需要同时核对请求地址、API Key、模型标识和支持的接口格式。本页按首次调用到上线验证的顺序说明操作,适用于聊天应用、内容处理和内部自动化工具;图像输入、工具调用等能力需逐个模型确认。

实际接入流程

  1. 进入 Kejike 控制台,确认账户权限和可用额度,创建项目使用的 API Key,并从当前列表复制模型 ID。
  2. 核对接口文档中的完整请求地址。本页使用 POST https://sub.kejike.top/v1/chat/completions。自动拼接 /chat/completions 的 SDK 应使用基础地址 https://sub.kejike.top/v1,不要填入完整端点或重复拼接 /v1。
  3. 在服务端配置环境变量,先发送一条短文本请求,确认 HTTP 状态码、响应正文及用量记录。
  4. 最小请求成功后,再逐项加入多轮上下文、输出限制或流式参数,分别验证支持情况。
  5. 由应用后端转发请求,配置超时、并发上限与错误提示,通过测试后再逐步增加流量。

配置环境变量并完成首次请求

以下命令适用于 Bash 或 Git Bash,在本地终端或受保护的服务端运行。占位符必须替换为实际值;不要把真实 Key 放进共享脚本或命令截图。生产环境通过部署平台的密钥配置注入。

export KEJIKE_CHAT_COMPLETIONS_URL='https://sub.kejike.top/v1/chat/completions'
export KEJIKE_API_KEY='YOUR_API_KEY'
export KEJIKE_MODEL_ID='YOUR_MODEL_ID'

curl --fail-with-body --connect-timeout 10 --max-time 60 "$KEJIKE_CHAT_COMPLETIONS_URL" \
  -H "Authorization: Bearer $KEJIKE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data "{\"model\":\"$KEJIKE_MODEL_ID\",\"messages\":[{\"role\":\"user\",\"content\":\"请回复:连接成功\"}],\"stream\":false}"

示例设置了连接和总请求超时,可按实际任务调整。若本机 cURL 版本不支持 --fail-with-body,可用 -i 查看状态与响应。这些选项可能显示错误正文或响应头;记录日志、截图或分享排错信息前,应移除密钥、个人数据及敏感请求或响应内容。需要 JavaScript、字段说明和流式响应处理时,继续阅读兼容 API 接入说明。

API Key 安全与环境管理

常见错误的排查顺序

上线前验证与持续观察

使用脱敏样例覆盖正常响应、无效 Key、无效模型、超时和取消请求。记录模型、耗时、状态码及返回的用量信息,避免记录完整密钥和敏感正文。对可能触发外部操作的任务,在应用侧使用任务标识防止重复执行;不要假定接口提供幂等保证。

按业务样例比较质量、延迟和实际用量,再决定默认模型及回退方式。回退模型也要验证参数和输出格式,不能仅替换模型名称。

账户、额度与项目准备

正式接入前先把账户侧的事情确认清楚,能避免绝大多数“接口没问题但业务跑不起来”的情况。

网关转发、超时与重试幂等

中转链路上多了一层网关,超时和重试就需要比直连更明确地设计。核心原则是:超时要有分层,重试要有上限,写操作要有幂等保护。

  1. 分层超时。客户端连接超时、读取超时、服务端总超时分别设置,不要只依赖一个默认值。
  2. 限定重试条件。只对明确的瞬时故障(连接中断、5xx、限流)重试;400、401、403、404 重试没有意义。
  3. 指数退避加抖动。固定间隔重试会形成同步冲击,退避加随机抖动更稳。
  4. 限制重试上限。两到三次足够;超时后盲目重试可能产生重复用量。
  5. 写操作使用任务标识。涉及创建、扣减、通知等外部动作时,在应用侧用唯一任务标识做防重,不要假定接口提供幂等保证。
// 退避重试的最小实现(仅对可重试状态码)
async function callWithRetry(fn, maxAttempts = 3) {
  const retryable = new Set([408, 429, 500, 502, 503, 504]);
  for (let i = 0; i < maxAttempts; i++) {
    try { return await fn(); }
    catch (e) {
      const status = e && e.status;
      if (!retryable.has(status) || i === maxAttempts - 1) throw e;
      await new Promise(r => setTimeout(r, 300 * 2 ** i + Math.random() * 200));
    }
  }
}

观测与告警的最小配置

不需要复杂平台,先做到“出错时能一眼看出是哪一类问题”。建议按下面三项建立最小观测面。

观测项看什么异常信号
请求结果分布按状态码统计成功与失败401/403 集中出现说明凭证或权限异常;429 上升说明触及限流或额度
延迟分布首字节时间与总耗时分位数分位数持续抬升通常是链路拥塞或输入过大
消耗趋势单位时间内的用量与请求量请求量平稳但消耗突增,需排查重试与上下文膨胀

告警阈值先用保守值,观察一周后再调整;过早设置严格阈值只会带来噪声。

数据处理与日志脱敏

从直连上游迁移的检查表

  1. 基础地址替换为 https://sub.kejike.top/v1,确认没有重复拼接 /v1 或 /chat/completions。
  2. 密钥替换为控制台创建的项目 Key,并从旧环境变量中彻底移除原厂密钥。
  3. 模型标识替换为控制台模型 ID,避免沿用旧名称。
  4. 移除仅原厂需要的组织头、项目头等自定义表头。
  5. 重新设置超时与重试策略,按上文的分层与上限执行。
  6. 用脱敏样例跑通非流式、流式、多轮和异常分支四类用例。
  7. 灰度放量:先小流量观察延迟、失败率与消耗,再逐步提升。
  8. 保留回退方案:旧配置在切换后至少保留一个观察周期。

接口细节见 兼容 API 接入说明,错误处理见 错误码与排障手册。

相关文章