基于 Node.js + 大模型的 AI 客服系统
基于 Node.js 大模型的 AI 客服系统 | Eucalyptus引言 痛点引入博客文章越来越多读者找不到想看的内容评论区冷清互动少自己没时间回复每一条留言。 解决方案给博客装一个 AI 智能助手24 小时在线能聊天、能搜文章、能回答问题。 项目介绍核心功能 智能对话基于大语言模型 博客文章搜索与推荐 FAQ 知识库自动匹配 支持多模https://blog.eucalyptus.cc/2026/06/28/%E5%9F%BA%E4%BA%8E-Node-js-%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84-AI-%E5%AE%A2%E6%9C%8D%E7%B3%BB%E7%BB%9F/引言痛点引入博客文章越来越多读者找不到想看的内容评论区冷清互动少自己没时间回复每一条留言。解决方案给博客装一个 AI 智能助手24 小时在线能聊天、能搜文章、能回答问题。项目介绍核心功能智能对话基于大语言模型博客文章搜索与推荐FAQ 知识库自动匹配支持多模型切换聊天/图像生成限流保护防止滥用技术栈Node.js Express Axios 大模型 API关键技术实现文章索引与搜索// 从 Hexo 的 _posts 目录读取文章 // 解析 front-matter标题、日期、标签、分类 // 构建可搜索的文章对象数组 const POSTS_DIR /www/wwwroot/myblog/source/_posts;亮点直接读取源文件无需数据库部署简单。FAQ 知识库设计// JSON 格式存储常见问题 // 关键词匹配 评分机制 // 匹配成功直接返回无需调用大模型省钱快速 const FAQ_FILE path.join(__dirname, faq.json);亮点80% 的常见问题走 FAQ只有复杂问题才调用大模型。多模型支持// 支持聊天模型 图像生成模型 // 用户可切换模型 // 统一接口封装 #ai-chatbot-input-area #ai-chatbot-model-menu div.ai-chatbot-model-item(data-modelsensenova-6.7-flash-lite>限流与安全防护// IP 级别60 秒内最多 20 次请求 // 防止 API Key 被刷爆 // 错误处理与降级 function getClientIP(req) { return req.headers[x-forwarded-for]?.split(,)[0]?.trim() || req.connection?.remoteAddress || req.socket?.remoteAddress; } const RATE_LIMIT {}; const RATE_LIMIT_WINDOW 60000; const RATE_LIMIT_MAX 20;前端集成聊天窗口的 UI 设计位置控制与 Hexo 主题的融合调用后端 API 的 JavaScript 代码// 发送消息到后端 async function sendMessage(message) { const response await fetch(https://your-api.com/api/chat, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ message, history: chatHistory }) }); const data await response.json(); return data.reply; }部署与运维部署方式方式适用场景命令本地开发调试测试node server.js服务器部署生产环境pm2 start server.js环境变量配置API_KEYyour-api-key BOT_NAMEAI助手 BOT_AVATARhttps://your-avatar-url SERVICE_PORT5004自动重启与监控使用pm2进程管理配合 Nginx 反向代理日志轮转效果展示对话示例用户推荐一些MySQL相关的文章用户你是谁用户樱花纷飞的放学路上两个身影隔着三米的距离一前一后走着。女生抱着书包马尾辫随着步伐轻轻晃动耳朵尖泛着可疑的红。男生双手插兜假装在看远处的天空却每隔几秒就用余光偷瞄前面的背影。一阵风吹过樱花瓣纷纷扬扬落在两人之间像一条粉色的河。画面定格在女生突然停下脚步、男生差点撞上去的刹那两人错愕的对视中一片花瓣恰好停在女生的睫毛上。背景虚化前景花瓣清晰浪漫氛围拉满。性能数据平均响应时间~500msFAQ/ ~2s大模型支持并发取决于 API 限额文章索引自动加载无需手动更新遇到的问题与解决方案问题解决方案大模型 API 费用高FAQ 优先匹配减少 API 调用文章更新后索引不同步提供/api/reload接口手动刷新前端样式与主题冲突使用 CSS 变量适配 Anzhiyu 主题响应慢增加 timeout 处理超时返回友好提示总结项目价值让博客从静态展示变成动态交互学习收获Node.js 服务开发、大模型 API 调用、全文检索思路体验地址https://blog.eucalyptus.cc/