wx-server-sdk 调用
通过微信云开发内置的 wx-server-sdk 在云函数中调用 CloudBase AI 大模型,无需额外安装依赖,支持文本生成、流式输出等能力。
前置条件
- 已开通微信云开发环境
- wx-server-sdk 3.0.5-beta.1 或更高版本(支持
cloud.ai()) - 已购买 Token 资源包并启用模型开关(见 接入大模型)
版本说明
cloud.ai() 接口需要 wx-server-sdk 3.0.5-beta.1 或更高版本。可在云函数的 package.json 中指定版本:
{
"dependencies": {
"wx-server-sdk": "3.0.5-beta.1"
}
}
初始化
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
timeout: 60000 // AI 生成可能耗时较长,建议设置较长超时时间
})
exports.main = async (event, context) => {
const ai = cloud.ai()
// 使用 AI 功能
}
超时配置
AI 模型生成文本可能需要较长时间,建议将 timeout 设置为 60000(60 秒)或更高,避免请求超时。
文本生成
generateText() - 非流式
一次性返回完整结果。
const ai = cloud.ai()
const model = ai.createModel('cloudbase')
const result = await model.generateText({
model: 'hy3-preview',
messages: [{ role: 'user', content: '介绍一下李白' }],
})
console.log(result.text) // 生成的文本
console.log(result.usage) // Token 使用量
console.log(result.messages) // 完整消息历史
返回值
| 属性 | 类型 | 说明 |
|---|---|---|
| text | string | 生成的文本 |
| messages | ChatModelMessage[] | 完整消息历史 |
| usage | Usage | Token 使用量 |
| rawResponses | unknown[] | 原始模型响应 |
| error | unknown | 错误信息(如有) |
streamText() - 流式
流式返回文本,适用于实时对话场景。
const ai = cloud.ai()
const model = ai.createModel('cloudbase')
const res = await model.streamText({
model: 'hy3-preview',
messages: [{ role: 'user', content: '介绍一下李白' }],
})
// 方式一:迭代文本流(推荐)
for await (const text of res.textStream) {
console.log(text) // 增量文本
}
// 方式二:迭代数据流,获取完整响应数据
for await (const data of res.dataStream) {
console.log(data) // 包含 choices、usage 等完整信息
}
// 获取最终结果
const messages = await res.messages
const usage = await res.usage
返回值
| 属性 | 类型 | 说明 |
|---|---|---|
| textStream | AsyncIterable<string> | 增量文本流 |
| dataStream | AsyncIterable<DataChunk> | 完整数据流 |
| messages | Promise<ChatModelMessage[]> | 最终消息历史 |
| usage | Promise<Usage> | 最终 Token 使用量 |
完整示例
AI 聊天接口
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
timeout: 60000
})
exports.main = async (event, context) => {
const { messages } = event
const ai = cloud.ai()
const model = ai.createModel('cloudbase')
try {
const result = await model.generateText({
model: 'hy3-preview',
messages
})
return {
success: true,
text: result.text,
usage: result.usage
}
} catch (error) {
return {
success: false,
error: error.message
}
}
}
流式响应
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
timeout: 60000
})
exports.main = async (event, context) => {
const { messages } = event
const ai = cloud.ai()
const model = ai.createModel('cloudbase')
const res = await model.streamText({
model: 'hy3-preview',
messages
})
// 收集完整文本
let fullText = ''
for await (const text of res.textStream) {
fullText += text
}
const usage = await res.usage
return {
text: fullText,
usage
}
}
与 @cloudbase/node-sdk 的差异
| 特性 | wx-server-sdk | @cloudbase/node-sdk |
|---|---|---|
| 安装 | 内置,无需安装 | npm install @cloudbase/node-sdk |
| 版本要求 | 3.0.5-beta.1+ | 3.16.0+ |
| 初始化 | cloud.init() | tcb.init() |
| AI 入口 | cloud.ai() | app.ai() |
| 图片生成 | 支持 | 支持 |
| 适用场景 | 微信云函数 | 微信云函数 / 云托管 / 独立 Node.js 服务 |