使用Node.js和Taotoken为大赛官网集成实时智能问答机器人
为大赛官网添加一个能够实时解答访客关于赛制、规则等问题的智能问答机器人,可以有效提升用户体验和服务效率。本文将介绍如何利用Node.js环境,通过Taotoken平台提供的统一API,快速构建一个稳定、可维护的智能问答后端接口。
1. 准备工作:获取API密钥与选择模型
在开始编码之前,你需要完成两项准备工作。首先,访问Taotoken平台,注册并登录后,在控制台的“API密钥”页面创建一个新的密钥。请妥善保管此密钥,它将用于后续的API身份验证。
其次,你需要为你的问答机器人选择一个合适的大语言模型。前往Taotoken的“模型广场”,这里聚合了多家主流厂商的模型。你可以根据模型的能力描述、上下文长度和价格等因素进行选择。例如,claude-sonnet-4-6、gpt-4o或deepseek-chat都是适用于问答场景的常见选择。记下你选定模型的ID,后续代码中会用到。
2. 项目初始化与环境变量配置
我们创建一个新的Node.js项目。在终端中,新建一个项目目录并初始化。
mkdir tournament-qa-bot cd tournament-qa-bot npm init -y接下来,安装必要的依赖。我们将使用官方openaiSDK,因为它与Taotoken的OpenAI兼容API可以无缝对接。
npm install openai为了安全地管理API密钥等敏感信息,我们使用环境变量。在项目根目录下创建一个名为.env的文件,并填入以下内容:
TAOTOKEN_API_KEY=你的API密钥 TAOTOKEN_MODEL_ID=你选择的模型ID,例如claude-sonnet-4-6请务必将你的API密钥和你选择的模型ID替换为你在第一步获取的实际值。同时,请确保将.env文件添加到.gitignore中,避免将密钥提交到版本控制系统。
3. 核心实现:构建问答服务接口
现在,我们来编写核心的Node.js服务代码。创建一个名为server.js的文件。
首先,加载环境变量和openai库,并初始化客户端。关键在于将baseURL正确设置为Taotoken的聚合端点。
import OpenAI from 'openai'; import dotenv from 'dotenv'; // 加载环境变量 dotenv.config(); // 初始化 OpenAI 客户端,指向 Taotoken 端点 const client = new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: 'https://taotoken.net/api', // 注意:此处 baseURL 不带 /v1 });接下来,我们实现一个异步函数来处理问答请求。这个函数将接收用户的问题,调用Taotoken API,并返回模型的回答。
/** * 调用大模型进行智能问答 * @param {string} userQuestion - 用户提出的问题 * @returns {Promise<string>} - 模型的回答 */ async function getAIAnswer(userQuestion) { try { const completion = await client.chat.completions.create({ model: process.env.TAOTOKEN_MODEL_ID, messages: [ { role: 'system', content: '你是一个大赛官网的智能助手,专门解答关于比赛赛制、规则、时间安排、报名方式等问题的。回答要专业、清晰、友好。如果遇到不知道的信息,请引导用户查看官网的具体公告或联系官方客服。' }, { role: 'user', content: userQuestion } ], temperature: 0.7, // 控制回答的创造性,可根据需要调整 max_tokens: 1000, // 控制回答的最大长度 }); return completion.choices[0]?.message?.content || '抱歉,暂时无法生成回答。'; } catch (error) { console.error('调用AI接口失败:', error); return '服务暂时不可用,请稍后再试。'; } }为了使这个函数能够被官网前端调用,我们需要创建一个简单的HTTP服务器。这里以Node.js原生http模块为例,你也可以使用Express、Koa等框架。
import http from 'http'; import url from 'url'; const server = http.createServer(async (req, res) => { // 设置CORS头部,允许前端跨域访问 res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); // 处理预检请求 if (req.method === 'OPTIONS') { res.writeHead(204); res.end(); return; } // 只处理POST请求到 /api/ask 路径 if (req.method === 'POST' && req.url === '/api/ask') { let body = ''; req.on('data', chunk => body += chunk.toString()); req.on('end', async () => { try { const { question } = JSON.parse(body); if (!question) { res.writeHead(400, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: '缺少问题参数' })); return; } const answer = await getAIAnswer(question); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ answer })); } catch (error) { res.writeHead(500, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: '服务器内部错误' })); } }); } else { res.writeHead(404, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: '接口不存在' })); } }); const PORT = process.env.PORT || 3000; server.listen(PORT, () => { console.log(`智能问答服务已启动,监听端口: ${PORT}`); console.log(`API端点: http://localhost:${PORT}/api/ask`); });4. 运行、测试与前端集成
完成代码编写后,我们需要在package.json中添加启动脚本,并修改模块类型以支持ESM导入。打开package.json,添加”type”: “module”字段和启动脚本。
{ "name": "tournament-qa-bot", "version": "1.0.0", "type": "module", "scripts": { "start": "node server.js" }, "dependencies": { "dotenv": "^16.0.0", "openai": "^4.0.0" } }现在,可以启动服务了。
node server.js # 或 npm start服务启动后,你可以使用curl命令或Postman等工具进行测试。
curl -X POST http://localhost:3000/api/ask \ -H "Content-Type: application/json" \ -d '{"question": "本次大赛的报名截止日期是什么时候?"}'如果一切正常,你将收到一个包含AI回答的JSON响应。最后,你只需要将官网前端中聊天窗口的提交请求,指向你部署的Node.js服务的/api/ask接口即可。前端示例代码如下(使用fetch API):
async function askBot(question) { const response = await fetch('http://你的服务器地址:3000/api/ask', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ question }) }); const data = await response.json(); return data.answer; }通过以上步骤,你就成功为大赛官网集成了一个基于Taotoken平台的实时智能问答机器人。这种方式将复杂的模型调用和路由逻辑交由Taotoken处理,你只需关注业务实现,并通过统一的接口和密钥管理多个模型,极大地简化了开发和运维工作。所有具体的模型列表、价格和平台功能,请以Taotoken控制台和官方文档为准。