使用 Node.js 和 Taotoken 快速构建一个简单的对话机器人后端
本文面向具备 Node.js 基础的前端或全栈开发者,旨在提供一个清晰、可执行的指南,帮助你快速搭建一个能与大模型对话的简易后端服务。我们将使用 Node.js 环境下的openaiSDK,通过 Taotoken 平台统一接入多种模型,实现一个支持异步调用的聊天补全接口。
1. 准备工作:环境与依赖
在开始编码之前,你需要完成两项准备工作。第一是获取 Taotoken 的 API Key。访问 Taotoken 控制台,创建一个新的 API Key,并妥善保管。第二是确定你想要调用的模型。你可以在 Taotoken 的模型广场查看所有可用模型及其对应的模型 ID,例如claude-sonnet-4-6或gpt-4o-mini。
接下来,创建一个新的 Node.js 项目目录,并初始化项目。在终端中执行以下命令:
mkdir simple-chatbot && cd simple-chatbot npm init -y然后,安装项目所需的依赖包。核心依赖是openaiSDK,它将帮助我们以符合 OpenAI 标准的方式调用 API。同时,我们也会安装express来构建一个简单的 Web 服务器,以及dotenv来管理环境变量。
npm install openai express dotenv2. 核心配置:连接 Taotoken
连接 Taotoken 的关键在于正确配置openai客户端。Taotoken 提供了与 OpenAI 完全兼容的 HTTP API,这意味着你只需要修改两个参数:apiKey和baseURL。
首先,在项目根目录创建一个名为.env的文件,用于安全地存储你的 API Key。将你在控制台获取的密钥填入。
# .env 文件 TAOTOKEN_API_KEY=你的_Taotoken_API_Key接着,创建一个核心的配置文件或直接在应用入口文件中初始化客户端。下面的代码展示了如何正确配置客户端以指向 Taotoken 服务。请特别注意,baseURL必须设置为https://taotoken.net/api。
// config/openaiClient.js import OpenAI from 'openai'; import dotenv from 'dotenv'; dotenv.config(); const client = new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: 'https://taotoken.net/api', // 关键配置:Taotoken 的 OpenAI 兼容端点 }); export default client;这段代码创建了一个全局可用的客户端实例。baseURL设置为https://taotoken.net/api后,SDK 会自动在其后拼接/v1/chat/completions等标准路径,无需手动拼接完整 URL。环境变量TAOTOKEN_API_KEY通过dotenv加载,避免了将敏感信息硬编码在代码中。
3. 实现对话接口
有了配置好的客户端,我们就可以实现一个处理用户消息并返回模型回复的异步函数。这个函数将封装对client.chat.completions.create方法的调用。
// services/chatService.js import client from '../config/openaiClient.js'; /** * 向大模型发送消息并获取回复 * @param {string} userMessage - 用户输入的消息 * @param {string} modelId - 选用的模型ID,例如 'claude-sonnet-4-6' * @returns {Promise<string>} - 模型返回的文本内容 */ export async function getChatResponse(userMessage, modelId = 'claude-sonnet-4-6') { try { const completion = await client.chat.completions.create({ model: modelId, // 指定模型 messages: [{ role: 'user', content: userMessage }], max_tokens: 500, // 控制回复的最大长度 }); return completion.choices[0]?.message?.content || '模型未返回有效内容。'; } catch (error) { console.error('调用聊天接口失败:', error); throw new Error('处理您的请求时出错,请稍后重试。'); } }这个函数接收用户消息和可选的模型 ID 作为参数。在messages数组中,我们构造了一个简单的用户消息。max_tokens参数用于限制模型生成回复的长度,防止响应过长。函数返回模型生成的内容,或在出错时抛出异常。
4. 构建简易 HTTP 服务器
为了让前端或其他服务能够调用我们的对话功能,需要创建一个 HTTP 服务器来暴露一个 API 接口。这里使用 Express 框架来快速实现。
// app.js import express from 'express'; import { getChatResponse } from './services/chatService.js'; import dotenv from 'dotenv'; 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: '对话机器人后端服务运行中。' }); }); // 核心对话接口 app.post('/api/chat', async (req, res) => { const { message, model } = req.body; if (!message) { return res.status(400).json({ error: '请求中必须包含 message 字段。' }); } try { const modelId = model || 'claude-sonnet-4-6'; // 支持前端指定模型 const reply = await getChatResponse(message, modelId); res.json({ reply }); } catch (error) { res.status(500).json({ error: error.message }); } }); // 启动服务器 app.listen(port, () => { console.log(`服务器正在运行:http://localhost:${port}`); });这个服务器定义了两个端点。根路径/提供了一个健康检查接口。核心的/api/chat是一个 POST 接口,它期望接收一个 JSON 请求体,其中包含message(用户输入)和可选的model(模型 ID)。服务器会调用之前实现的getChatResponse函数,并将模型的回复以 JSON 格式返回给客户端。
5. 运行与测试
现在,整个后端服务已经准备就绪。首先,确保你的.env文件已正确配置 API Key。然后在终端中启动服务器:
node app.js看到“服务器正在运行”的日志后,你就可以使用curl、Postman 或任何 HTTP 客户端进行测试了。以下是一个使用curl命令测试接口的示例:
curl -X POST http://localhost:3000/api/chat \ -H "Content-Type: application/json" \ -d '{"message": "你好,请介绍一下你自己。", "model": "gpt-4o-mini"}'如果一切配置正确,你将收到一个包含模型回复的 JSON 响应。通过修改请求体中的model字段,你可以轻松切换使用 Taotoken 平台上的不同模型,无需更改任何代码。
至此,你已经完成了一个基于 Node.js 和 Taotoken 的最小化对话机器人后端。这个示例涵盖了从环境配置、SDK 初始化、业务逻辑封装到 HTTP 服务暴露的全流程。你可以在此基础上,增加对话历史管理、流式响应、更复杂的错误处理等功能,以适应更具体的业务场景。要开始使用 Taotoken 并探索更多模型,可以访问 Taotoken。