文章目录
在前面的文章中,我们讨论了 AI 开发工具的使用方法和注意事项。今天,让我们通过具体的实战案例,深入探讨如何在小程序开发中应用 AI 技术。
一、云函数开发实践
1. AI 对话功能的实现
系统设计
// 云函数配置
{
"name": "aiChat",
"timeout": 20, // 超时时间设置为20秒
"triggers": [], // 触发器配置
"vpc": false // VPC配置
}
// 系统角色设定
const SYSTEM_PROMPT = `你是Moodo的AI助手,一个专注于情感支持和心理健康的AI伙伴。
请遵循以下原则:
1. 保持温暖、友好的态度
2. 用同理心倾听用户
3. 提供积极的建议
4. 不做具体的心理诊断
5. 使用简单的中文
6. 回复长度适中(60-240字)
7. 适时给予鼓励`
核心实现
// aiChat/index.js
const cloud = require('wx-server-sdk')
const axios = require('axios')
exports.main = async (event, context) => {
const {
content, sessionId } = event
const wxContext = cloud.getWXContext()
const db = cloud.database()
try {
// 1. 保存用户消息
const userMessage = await saveUserMessage(db, {
sessionId,
content,
openid: wxContext.OPENID
})
// 2. 获取历史消息
const history = await getHistoryMessages(db, {
sessionId,
openid: wxContext.OPENID,
limit: 5
})
// 3. 调用 AI API
const aiResponse = await callAIAPI({
messages: [
{
role: 'system', content: SYSTEM_PROMPT },
...history,
{
role: 'user', content }
]
})
// 4. 保存 AI 回复
await saveAIResponse(db, {
sessionId,
content: aiResponse,
openid: wxContext.OPENID,
replyTo: userMessage._id
})
return {
content: aiResponse }
} catch (error) {
handleError(error)
}
}
错误处理优化
// 错误处理函数
function handleError(error) {
// 网络错误
if (error.code === 'ECONNABORTED') {
throw new Error('网络请求超时,请重试')
}
// API 错误
if (error.response) {
switch (error.response.status) {
case 401:
throw new Error('API 认证失败')
case 429:
throw new Error('请求过于频繁,请稍后再试')
case 500:
throw new Error('服务器错误,请稍后重试')
default:
throw new Error('请求失败,请重试')
}
}
// 其他错误
console.error('AI 对话错误:', error)
throw new Error('系统错误,请稍后重试')
}
2. 数据库设计实践
集合设计
// 1. 聊天记录集合
db.collection('chat_records').add({
data: {
sessionId: String, // 会话ID
role: String,