使用Nodejs和Taotoken为网站构建实时AI客服后端
使用Nodejs和Taotoken为网站构建实时AI客服后端1. 环境准备与依赖安装在开始构建AI客服后端前需要确保开发环境已安装Node.js建议版本18或更高。创建一个新项目目录并初始化npmmkdir ai-customer-service cd ai-customer-service npm init -y安装必要的依赖包包括openai用于与Taotoken API交互express用于构建web服务以及dotenv管理环境变量npm install openai express dotenv cors2. 配置Taotoken API连接在项目根目录创建.env文件用于安全存储API密钥TAOTOKEN_API_KEYyour_api_key_here PORT3000通过Taotoken控制台获取API Key后替换上述占位符。新建config.js文件配置OpenAI客户端import dotenv/config; import OpenAI from openai; export const openai new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: https://taotoken.net/api, });关键点说明baseURL必须设置为https://taotoken.net/api以实现OpenAI兼容接入密钥通过环境变量注入避免硬编码风险模型ID可在Taotoken模型广场查看如claude-sonnet-4-63. 实现流式聊天接口创建server.js文件实现核心聊天功能。以下示例展示支持流式响应的POST接口import express from express; import cors from cors; import { openai } from ./config.js; const app express(); app.use(cors()); app.use(express.json()); app.post(/chat, async (req, res) { try { const { messages } req.body; const stream await openai.chat.completions.create({ model: claude-sonnet-4-6, messages, stream: true, }); res.setHeader(Content-Type, text/event-stream); for await (const chunk of stream) { const content chunk.choices[0]?.delta?.content || ; res.write(data: ${JSON.stringify({ content })}\n\n); } res.end(); } catch (error) { console.error(API Error:, error); res.status(500).json({ error: error.message }); } }); app.listen(process.env.PORT, () { console.log(Server running on port ${process.env.PORT}); });4. 前端对接与测试前端可通过EventSource或fetch API连接该接口。以下是使用fetch的示例async function sendMessage(messages) { const response await fetch(http://localhost:3000/chat, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ messages }), }); if (!response.ok) throw new Error(Network response was not ok); const reader response.body.getReader(); const decoder new TextDecoder(); while (true) { const { done, value } await reader.read(); if (done) break; const chunk decoder.decode(value); const lines chunk.split(\n).filter(line line.startsWith(data:)); lines.forEach(line { const data JSON.parse(line.replace(data: , )); console.log(Received:, data.content); }); } }5. 错误处理与生产建议实际部署时需要考虑以下增强措施速率限制添加express-rate-limit中间件防止滥用输入验证检查messages数组结构是否符合API要求超时控制为长时间流式响应设置适当超时模型切换通过请求参数动态指定模型ID日志记录记录关键交互信息用于分析优化完整的错误处理增强示例app.post(/chat, async (req, res) { try { // 输入验证 if (!Array.isArray(req.body.messages)) { return res.status(400).json({ error: Messages must be an array }); } // 模型选择默认为claude-sonnet-4-6 const model req.body.model || claude-sonnet-4-6; const controller new AbortController(); const timeout setTimeout(() controller.abort(), 30000); // 30秒超时 const stream await openai.chat.completions.create({ model, messages: req.body.messages, stream: true, }, { signal: controller.signal }); // ...流式响应处理逻辑 } catch (error) { if (error.name AbortError) { res.status(504).json({ error: Request timeout }); } else { res.status(500).json({ error: error.message }); } } finally { clearTimeout(timeout); } });通过Taotoken平台开发者可以快速构建支持多模型的AI应用。如需了解更多接入细节请访问Taotoken查看完整文档。