Node.js / TypeScript 适合 Web 后端、Server Actions、队列任务和自动化工具。不要在浏览器端直接暴露 Tapapi API Key。
以下示例默认运行在服务端、脚本、队列 worker、Next.js Route Handler 或 Server Action 中。不要把 Tapapi API Key 放进浏览器前端、移动端包、公开仓库或客户端配置。
环境变量
初始化客户端
OpenAI Node SDK 的 timeout 单位是毫秒。SDK 默认会对部分网络错误、429 和 5xx 做有限重试;生产系统仍然需要自己的业务 task_id、幂等记录和并发控制。
文本请求
流式输出
流式响应通常读取 choices[0].delta.content。生产解析时要跳过空内容、保活事件和没有普通文本 delta 的 chunk;最终 usage 可能受上游或网络影响缺失,计费以控制台账单记录为准。
Responses 请求
/v1/chat/completions 是 Node.js 接入的默认主线。需要 Responses API 时,先确认你的 openai SDK 版本、模型详情和返回字段:
Responses 的返回结构和 Chat Completions 不完全一样,不要共用同一套解析代码。
图片生成
图片返回可能是 url 或 b64_json。生产环境建议把图片转存到自己的对象存储,不要长期依赖临时 URL。批量生成时还要记录请求 n、实际返回数量和成功转存数量;如果响应包含 metadata.tapapi_partial,按实际返回张数处理。
保存图片结果
如果 URL 下载失败,优先重试下载和转存,不要立刻重新生成图片。
原生 fetch
SDK 错误处理
OpenAI SDK 的 request_id 通常来自上游标准 x-request-id。Tapapi 排障时还要优先保存响应头里的 X-Oneapi-Request-Id;如果你需要完整请求标识,建议在关键路径使用原生 fetch 或 SDK 的 raw response 能力读取 headers。
超时控制
客户端超时只代表你的进程不再等待响应,不一定代表上游任务没有执行。遇到 AbortError、504 或 524 时,先查自己的业务任务状态、Tapapi 账单和日志,再决定是否补跑。
生产建议
下一步