// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// cloud.extend.AI.register("hunyuan-exp") // 增加扩展注册
// 云函数入口函数
exports.main = async (event, context) => {
const { fileID } = event
if (!fileID) {
return {
code: -1,
message: '缺少图片文件ID'
}
}
try {
console.log('开始处理图片,fileID:', fileID)
// 1. 下载图片
const res = await cloud.downloadFile({
fileID: fileID,
}).catch(err => {
console.error('下载图片失败:', err)
throw new Error('下载图片失败: ' + err.message)
})
const buffer = res.fileContent
console.log('图片下载成功,大小:', buffer.length)
// 2. 将图片转为base64
const imageBase64 = buffer.toString('base64')
console.log('图片转换为base64成功')
// 3. 调用混元大模型
console.log('开始调用AI模型分析')
// 调用hunyuan云函数
const model = cloud.extend.AI.createModel("hunyuan-exp");
const result = await model.generateText({
model: "hunyuan-turbos-latest",
timeout: 10000, // 增加10秒超时
messages: [{
role: "user",
content: [
{
type: "text",
text: "请分析这张餐点图片,告诉我:1. 有哪些食材 2. 预估总热量 3. 蛋白质、碳水化合物、脂肪的大致占比 4. 针对减重目标给出建议"
},
{
type: "image",
image_base64: imageBase64
}
]
}]
});
console.log('AI模型返回原始结果:', result)
if (!result || !result.result || !result.result.choices || !result.result.choices[0].message.content) {
console.error('AI返回结果无效:', result)
throw new Error('AI返回结果无效')
}
// 4. 返回分析结果
return {
code: 0,
data: {
aiResponse: result.result.choices[0].message.content,
requestId: context.requestId // 添加请求ID便于追踪
},
message: 'AI分析完成'
}
} catch (err) {
console.error('分析餐点失败:', err)
return {
code: -1,
message: err.message || '分析失败',
error: {
message: err.message,
stack: err.stack,
requestId: context.requestId
}
}
}
}
2025-03-17T03:32:27.200Z 分析餐点失败: TypeError: Cannot read properties of undefined (reading 'AI')
at exports.main (/var/user/index.js:41:32)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
Response RequestId: f824c092-343f-4749-8bf7-5aeb7e7b6af1 RetMsg: {"code":-1,"message":"Cannot read properties of undefined (reading 'AI')","error":{"message":"Cannot read properties of undefined (reading 'AI')","stack":"TypeError: Cannot read properties of undefined (reading 'AI')\n at exports.main (/var/user/index.js:41:32)\n at processTicksAndRejections (node:internal/process/task_queues:96:5)"}}
目前wx.cloud.extend.AI支持在小程序客户端环境中调 , 云函数环境下用
https://docs.cloudbase.net/ai/sdk-reference/init#%E4%BA%91%E5%87%BD%E6%95%B0-nodejs-%E7%AB%AF%E5%88%9D%E5%A7%8B%E5%8C%96
或 http api https://docs.cloudbase.net/ai/api-key