一、前言
DeepSeek火了一整个过年,过年回来后星火页支持deepseek还免费一段时间,又到我随便cv一下使用的时间了。本文将手把手教你如何在微信小程序中集成讯飞DeepSeek服务,实现智能聊天机器人功能。
二、前期准备
- 注册讯飞开放平台账号
- 创建应用获取API Key(示例代码中的
api_key
和加密密钥) - 配置小程序服务器域名:
maas-api.cn-huabei-1.xf-yun.com
- 前置文章学习《小程序纯前端接入讯飞星火大模型》,包含WebSocket鉴权机制与初始化配置
三、核心实现原理
3.1 WebSocket鉴权机制
// 采用HMAC-SHA256签名算法
const signatureOrigin = `host: ${host}\ndate: ${date}\nGET /v1.1/chat HTTP/1.1`;
const signatureSha = CryptoJS.HmacSHA256(signatureOrigin, secretKey);
const authorization = weBtoa(authorizationOrigin);
鉴权流程:
- 生成GMT格式时间戳
- 拼接签名原始字符串
- 使用HMAC-SHA256算法加密
- Base64编码生成最终签名
3.2 WebSocket连接管理
wx.connectSocket({
url: authUrl,
success() {
console.log('连接建立成功');
}
});
wx.onSocketMessage(res => {
// 处理服务端返回的对话数据
});
连接特性:
- 自动重连机制(处理1000/1006错误码)
- 心跳检测维护连接
- 异常关闭处理
四、实现步骤分解
4.1 初始化配置
data: {
chatList: [], // 对话记录
scrollTop: 0 // 滚动位置
}
4.2 消息处理流程
- 用户输入 → 2. 添加至对话列表 → 3. 构造请求参数 → 4. WebSocket发送 → 5. 流式接收响应
4.3 核心代码解析
消息发送:
const params = {
"parameter": {
"chat": {
"domain": "xdeepseekv3",
"temperature": 0.8 // 控制回答随机性
}
},
"payload": {
"message": {
"text": chatHistory // 包含上下文
}
}
};
响应处理:
// 流式拼接响应内容
if (chatList[chatList.length - 1].role == 'assistant') {
chatList[chatList.length - 1].content += tmp_content;
} else {
chatList.push({role: 'assistant', content: tmp_content});
}
五、性能优化策略
- 防抖处理:通过loopClock避免频繁请求
- 滚动优化:自动滚动到底部
- 加载状态管理:wx.showLoading提升用户体验
- 数据上报:wx.reportEvent监控使用情况
六、常见问题处理
6.1 鉴权失败
- 检查时间戳格式(必须为GMT)
- 确认API Key和加密密钥正确
- 按照官方文档逐步验证签名生成逻辑
大家可以扫码体验