1. 项目背景:当相亲遇上大语言模型
去年冬天的一次相亲经历让我意识到,现代社交场合中存在着大量"无效沟通"——对方不断抛出诗词歌赋和哲学命题,而我只想了解ta的真实性格和生活习惯。作为程序员,我决定用技术手段解决这个痛点:基于微信小程序和LLM(大语言模型)构建一个AI Agent,在相亲场景中实现"人机协作"沟通。
这个项目的核心在于:通过微信小程序快速搭建对话界面,利用云开发能力接入大模型,构建具备个性化应答能力的智能体。实测发现,当AI介入后,不仅成功破解了对方的"文艺防御",还通过对话分析提取出关键性格特征,最终促成了意想不到的良好结果。
2. 技术方案设计
2.1 整体架构设计
采用微信小程序+云开发+LLM的三层架构:
code复制用户端(小程序) → 云函数(逻辑处理) → 大模型服务(智能应答)
选择微信小程序作为载体是因为:
- 无需安装额外App,扫码即用
- 原生支持语音输入、图片上传等相亲场景刚需功能
- 完善的用户身份体系(微信账号直接关联)
2.2 核心组件选型
使用微信官方提供的Agent UI组件库,主要考虑:
- 开箱即用的聊天界面(含消息气泡、输入框、功能按钮)
- 内置多模态交互支持(文字/语音/图片/文件)
- 原生集成云开发AI能力
关键配置示例:
javascript复制Page({
data: {
chatMode: "bot",
agentConfig: {
botId: "matchmaking-bot-v1",
allowVoice: true, // 启用语音输入
allowWebSearch: false // 禁用联网搜索(避免信息过载)
}
}
})
3. 实现细节解析
3.1 个性化应答引擎搭建
在云函数中实现对话逻辑处理:
javascript复制// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
// 解析用户输入
const { content, userInfo } = event
// 构建Prompt
const prompt = `
你是一位专业的婚恋顾问,正在协助用户进行相亲对话。
对方刚发送: "${content}"
用户基本信息: ${JSON.stringify(userInfo)}
请用2-3句话回应,要求:
1. 适当引用古典诗词展示修养
2. 暗中分析对方性格特征
3. 自然引导话题到生活习惯
`
// 调用大模型
const res = await cloud.ai().chat({
messages: [{role: 'user', content: prompt}],
model: 'deepseek-v3'
})
return {
reply: res.choices[0].message.content,
analysis: extractPersonality(res) // 性格分析函数
}
}
3.2 实时性格分析模块
通过对话内容提取关键特征:
javascript复制function extractPersonality(response) {
// 使用正则匹配关键词
const traits = {
'浪漫': response.match(/爱情|诗意|星空/g)?.length || 0,
'务实': response.match(/实际|现实|预算/g)?.length || 0,
'开朗': response.match(/哈哈|开心|快乐/g)?.length || 0
}
// 计算主导性格
const dominantTrait = Object.entries(traits)
.sort((a,b) => b[1]-a[1])[0][0]
return {
traits,
dominantTrait,
confidence: Math.max(...Object.values(traits))/5
}
}
4. 实战效果优化
4.1 对话节奏控制
设置响应延迟策略提升真实感:
javascript复制// 模拟人类回复速度
const delayStrategies = {
'短文本': () => Math.random()*2000 + 1000,
'长文本': () => Math.random()*4000 + 2000,
'思考型': () => Math.random()*6000 + 3000
}
function getDelay(text) {
const length = text.length
if(length < 15) return delayStrategies.短文本()
if(length > 50) return delayStrategies.思考型()
return delayStrategies.长文本()
}
4.2 多模态交互增强
支持图片语义分析:
javascript复制wx.chooseImage({
success(res) {
wx.cloud.uploadFile({
filePath: res.tempFilePaths[0],
cloudPath: `chat_images/${Date.now()}.jpg`
}).then(uploadRes => {
// 调用图片理解API
return cloud.ai().imageUnderstanding({
imageUrl: uploadRes.fileID,
operations: ['object-detection', 'scene-classification']
})
}).then(analysis => {
// 生成图片相关话题
const topics = analysis.scene.map(s => s.category)
triggerConversation(`你拍的${topics[0]}真不错...`)
})
}
})
5. 避坑指南
5.1 敏感内容过滤
必须配置内容安全审查:
javascript复制// 在云函数中前置检查
const securityRes = await cloud.openapi.security.msgSecCheck({
content: userInput
})
if(securityRes.result.suggest !== 'pass') {
return { reply: '这个话题我们换个角度聊聊?' }
}
5.2 性能优化实践
- 缓存策略:对常见问题(如"你喜欢什么书")缓存标准回答
- 冷启动优化:预加载常用诗词库等资源
- 流量控制:限制每分钟请求次数防止超额收费
实测数据:
- 平均响应时间:2.8秒
- 95%请求能在5秒内完成
- 错误率低于0.5%
6. 效果评估与迭代
6.1 量化评估指标
建立对话质量评估体系:
markdown复制| 指标 | 权重 | 达标值 |
|-----------------|------|--------|
| 回复相关度 | 30% | ≥85% |
| 话题延续性 | 25% | ≥3轮 |
| 性格分析准确率 | 20% | ≥70% |
| 用户主动提问率 | 15% | ≥40% |
| 负面反馈率 | 10% | ≤5% |
6.2 持续优化方向
- 个性化学习:根据历史对话调整应答风格
- 场景扩展:支持更多社交场景(如朋友聚会)
- 多语言支持:增加英语等语言应对海归群体
实际案例:通过3轮对话准确识别出对方"表面文艺实则务实"的双重性格特征,最终发现双方在理财观念上高度契合,这是纯人工交流难以快速发现的。
