使用Node.js和TaoToken API快速搭建一个智能客服原型系统
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。👉。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
使用Node.js和TaoToken API快速搭建一个智能客服原型系统
对于前端或全栈开发者而言,利用Node.js环境快速构建一个具备对话能力的智能客服原型,是验证想法和启动项目的有效方式。通过TaoToken平台提供的OpenAI兼容API,你可以用熟悉的开发工具和流程,快速接入多种大语言模型,而无需分别处理各家厂商的认证和计费。本文将引导你使用Node.js和openai包,一步步搭建一个支持多轮对话的智能客服聊天接口。
1. 环境准备与项目初始化
开始之前,你需要确保本地已安装Node.js(建议版本16或更高)。首先,创建一个新的项目目录并初始化。
mkdir smart-customer-service
cd smart-customer-service
npm init -y
接下来,安装项目所需的依赖。核心是openai官方Node.js SDK,它将用于调用TaoToken的API。我们也会安装express来构建一个简单的Web服务器,以及dotenv来管理环境变量。
npm install openai express dotenv
2. 获取并配置TaoToken API密钥
要调用TaoToken的API,你需要一个有效的API Key。请访问Taotoken平台,注册并登录后,在控制台的API密钥管理页面创建一个新的密钥。这个密钥将用于所有API请求的身份验证。
在项目根目录下创建一个名为.env的文件,用于安全地存储你的密钥和其他配置。将你刚刚获取的API Key填入其中。
# .env 文件
TAOTOKEN_API_KEY=你的_API_Key_在这里
PORT=3000
请务必将.env文件添加到你的.gitignore中,避免将密钥意外提交到代码仓库。
3. 构建核心API调用模块
我们将创建一个独立的模块来处理与大模型的对话逻辑。在项目根目录下创建chatService.js文件。
这个模块的核心是正确配置OpenAI客户端,将其baseURL指向TaoToken的OpenAI兼容端点。请注意,对于使用openai SDK的场景,baseURL应设置为https://taotoken.net/api,SDK会自动为你拼接后续的路径(如/v1/chat/completions)。
// chatService.js
import OpenAI from 'openai';
import dotenv from 'dotenv';
dotenv.config();
// 初始化客户端,关键是指定Taotoken的端点
const client = new OpenAI({
apiKey: process.env.TAOTOKEN_API_KEY,
baseURL: 'https://taotoken.net/api', // 使用Taotoken的OpenAI兼容端点
});
// 存储对话历史,用于实现多轮对话上下文
const conversationHistory = new Map();
/**
* 发送消息给AI助手并获取回复
* @param {string} sessionId - 会话ID,用于区分不同用户或对话
* @param {string} userMessage - 用户输入的消息
* @param {string} model - 要使用的模型ID,可在Taotoken模型广场查看
* @returns {Promise<string>} AI助手的回复
*/
export async function getAIResponse(sessionId, userMessage, model = 'gpt-3.5-turbo') {
try {
// 获取或初始化当前会话的历史记录
let messages = conversationHistory.get(sessionId) || [];
// 将用户的新消息加入历史
messages.push({ role: 'user', content: userMessage });
// 调用Taotoken API
const completion = await client.chat.completions.create({
model: model, // 指定模型,例如:gpt-4, claude-3-haiku等
messages: messages, // 传入完整的对话历史
temperature: 0.7, // 控制回复的随机性
max_tokens: 500, // 控制回复的最大长度
});
const aiReply = completion.choices[0]?.message?.content;
if (aiReply) {
// 将AI的回复也加入历史记录
messages.push({ role: 'assistant', content: aiReply });
// 可选:限制历史记录长度,防止上下文过长
if (messages.length > 20) {
messages = messages.slice(-10); // 只保留最近10轮对话
}
conversationHistory.set(sessionId, messages);
}
return aiReply || '抱歉,我没有收到回复。';
} catch (error) {
console.error('调用AI API时发生错误:', error);
// 更友好的错误信息处理
if (error.status === 401) {
return '认证失败,请检查API密钥是否正确。';
} else if (error.status === 429) {
return '请求过于频繁,请稍后再试。';
} else {
return `服务暂时不可用,请稍后重试。错误码: ${error.status || '未知'}`;
}
}
}
/**
* 清除指定会话的历史记录
* @param {string} sessionId
*/
export function clearHistory(sessionId) {
conversationHistory.delete(sessionId);
}
4. 创建Express服务器提供聊天接口
现在,我们创建一个简单的HTTP服务器,对外提供聊天接口。创建server.js文件。
// server.js
import express from 'express';
import dotenv from 'dotenv';
import { getAIResponse, clearHistory } from './chatService.js';
dotenv.config();
const app = express();
const PORT = process.env.PORT || 3000;
// 中间件:解析JSON请求体
app.use(express.json());
// 健康检查端点
app.get('/', (req, res) => {
res.json({ status: 'ok', message: '智能客服API服务运行中' });
});
// 核心聊天API端点
app.post('/api/chat', async (req, res) => {
const { sessionId = 'default-session', message, model } = req.body;
if (!message || typeof message !== 'string') {
return res.status(400).json({ error: '请求中必须包含有效的 message 字段' });
}
try {
const reply = await getAIResponse(sessionId, message, model);
res.json({ reply, sessionId });
} catch (error) {
console.error('服务器处理错误:', error);
res.status(500).json({ error: '内部服务器错误' });
}
});
// 可选:清除某会话历史的端点
app.post('/api/chat/clear', (req, res) => {
const { sessionId } = req.body;
if (sessionId) {
clearHistory(sessionId);
res.json({ message: `会话 ${sessionId} 的历史记录已清除` });
} else {
res.status(400).json({ error: '请求中必须包含 sessionId 字段' });
}
});
// 启动服务器
app.listen(PORT, () => {
console.log(`智能客服服务器运行在 http://localhost:${PORT}`);
console.log(`尝试发送 POST 请求到 http://localhost:${PORT}/api/chat`);
});
5. 运行与测试
在package.json中添加启动脚本,以便快速运行。
// package.json 中添加
"type": "module",
"scripts": {
"start": "node server.js",
"dev": "node --watch server.js"
}
现在,你可以启动服务器了。
npm run dev
服务器启动后,你可以使用curl、Postman或任何HTTP客户端进行测试。以下是一个curl测试示例:
curl -X POST http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{
"sessionId": "user-123",
"message": "你好,请问你们支持哪些支付方式?",
"model": "gpt-3.5-turbo"
}'
如果一切配置正确,你将收到一个包含AI回复的JSON响应。通过改变sessionId,你可以为不同用户维持独立的对话上下文;通过改变model字段,你可以切换使用Taotoken模型广场上的其他模型,无需修改代码。
6. 关键注意事项与后续步骤
在开发过程中,有几个关键点需要注意。首先是API密钥的安全,务必通过环境变量管理,切勿写入代码或提交至版本控制系统。其次是模型的选择,你可以在Taotoken平台的模型广场查看所有可用模型及其对应的ID,根据客服场景对成本、速度和质量的要求进行选择。
对于错误处理,示例中提供了基本的网络和认证错误反馈。在生产环境中,你可能需要更完善的日志记录和监控,并考虑对API调用失败设置重试机制。此外,��前的对话历史存储在内存中,服务器重启会丢失。对于生产环境,你需要将其持久化到数据库(如Redis、MongoDB)中。
这个原型系统为你提供了一个起点。在此基础上,你可以轻松地为其添加前端界面,集成知识库检索(RAG),或连接业务数据库来查询订单、物流等真实信息,从而构建一个功能完整的智能客服系统。所有与大模型的交互,都通过统一配置的TaoToken端点完成,简化了开发和运维的复杂度。
你可以访问 Taotoken 获取API Key并探索更多可用的模型,开始你的智能应用开发。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
更多推荐


所有评论(0)