后端与接口
在 Node.js 后端/云函数中调用 CloudBase…
通过 @cloudbase/node-sdk 在 Node.js 后端、云函数或 CloudRun 中调用 AI 模型前,先完成资源包与模型组两步预检,再按正确参数调用文本/图片生成。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 Node.js 后端/云函数中调用 特定
解决思路
- 安装依赖:npm install @cloudbase/node-sdk,并确认版本 >= 3.16.0(用 npm list @cloudbase/node-sdk 检查),图片生成仅该版本起支持。
- 初始化:云函数内用 const app = tcb.init({ env: '<YOUR_ENV_ID>' }),再 const ai = app.ai();普通 Node.js 服务器额外传入 secretId、secretKey。
- 云函数需设置更长超时:在 func.timeout 中设置(单位秒,范围 1–900,默认 20 秒通常不够)。文本生成与流式推荐 60–120 秒,图片生成推荐 300–900 秒(建议 900 秒),组合操作设 900 秒。
- 预检第 0 步:调用 MCP 工具 queryEnv(action=info)读取 EnvId。
- 预检①资格:调用 callCloudApi(service="tcb", action="DescribeEnvPostpayPackage", params={ EnvId }),确认 envPostpayPackageInfoList 中至少有一条 postpayPackageId 以 pkg_tcb_tokencredits_ 开头且 status 不在 [3,4]。不满足则停止写代码,向用户返回购买链接 https://buy.cloud.tencent.com/lowcode?buyType=resPack&envId={envId}&resourceType=token。
- 预检②模型组就绪:调用 callCloudApi(service="tcb", action="DescribeAIModels", params={ EnvId }),检查目标 GroupName 存在且 Status=1,且目标 Model 已在其 Models[] 中;不要假设任何模型已启用。
- 若目标模型未启用:先调用 callCloudApi(service="tcb", action="DescribeManagedAIModelList", params={ EnvId }) 获取权威支持模型名与定价(ModelChargingInfo 含输入/输出/缓存价格与计费单位),向用户展示价格后再启用。
- 启用模型:调用 callCloudApi(service="tcb", action="UpdateAIModel", params={ EnvId, GroupName: "cloudbase", Models: [...], Status: 1 }),注意 Models 为全量替换,必须把已启用的模型一并重新提交,再追加新模型(使用 DescribeManagedAIModelList 返回的精确拼写)。
- createModel 只接受三种合法值:"cloudbase"(主托管组,推荐)、"hunyuan-exp"(仅当 DescribeAIModels 明确返回该组时使用)、以 custom- 开头的自定义 GroupName(如 custom-kimi、custom-openai-compat)。禁止传厂商名、具体模型 id 或 "custom" 占位符。
- 正确区分字段:GroupName 传给 createModel,具体模型 id 放在 generateText/streamText 的 model 字段,例如 ai.createModel("cloudbase") 后 model.generateText({ model: "deepseek-v4-flash", messages: [...] })。
- 图片生成使用独立入口:ai.createImageModel("hunyuan-image") 且 model: "hunyuan-image",调用前同样确认已启用。
- 非托管模型(自托管、企业内网、第三方 OpenAI 兼容端点)走自定义接入流程(见 references/custom-onboarding.md),GroupName 必须以 custom- 开头,密钥放在 CreateAIModel.Secret.ApiKey,不要硬编码在业务代码中。
- 长文本交互优先使用流式:streamText + for await (const chunk of result.textStream) 增量返回,在 catch 中处理流中断并关闭底层响应。
- 图片生成单独规划超时与配额:HTTP 函数网关上限 60 秒,需改用异步任务 + 轮询模式;按用户限制并发与频率,避免一次失败耗尽整个 Token 包。
- 将模型名集中到配置常量,来源为 DescribeAIModels / DescribeManagedAIModelList,避免散落的字面量。
- 区分“预检失败”与“模型调用失败”:前者是资源包未激活或模型未启用(引导购买/启用),后者是参数或上游错误,不要用同一个通用提示。
- 生产环境不要记录完整 prompt 或生成文本,只记录 usage.total_tokens 和短前缀。
- TypeScript 中不要用 any、as any、@ts-ignore、@ts-nocheck 压制 SDK 类型错误,改用 unknown + 类型守卫、精确 interface 或本地 .d.ts 扩展。
- 完成前自验证:运行 tsc --noEmit、项目构建,并实际调用函数(本地调用 / manageFunctions(action="invokeFunction") / 直接 HTTP 请求),确认 usage.total_tokens > 0 且返回文本不是错误信封。
- 不要臆造 SDK 方法名或参数:以 SKILL.md + references/api-reference.md 为权威参考,未文档化的方法或字段应停止并询问,或通过 MCP 工具查询实时契约。
适用边界 · 注意事项
- 浏览器/Web 前端 AI 聊天 UI:不要用此后端 SDK 包一层代理,应使用 ai-model-web 技能直接从浏览器调用模型。
- 微信小程序:应# 使用 ai-model-wechat 技能。
- 无 CloudBase SDK 的运行时(Python、Go、PHP、curl 等):应使用 http-api-cloudbase 技能,通过 HTTP 直接调用 AI 模型端点,不要用 HTTP 代理包装本 SDK。