使用Nodejs和Taotoken为前端应用集成AI对话能力 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度使用Node.js和Taotoken为前端应用集成AI对话能力为前端应用添加AI对话功能通常需要一个可靠的后端服务来处理模型调用、密钥管理和请求转发。Taotoken作为一个提供统一OpenAI兼容API的平台能够简化这一过程。本文将指导你如何在Node.js服务端项目中集成Taotoken构建一个为Web前端提供AI对话能力的后端服务。1. 项目初始化与环境配置首先确保你已安装Node.js建议版本18或更高。创建一个新的Node.js项目目录并初始化项目。mkdir ai-backend-service cd ai-backend-service npm init -y接下来安装必要的依赖。核心是openai官方Node.js库用于调用兼容API。我们也会安装dotenv来管理环境变量以及express来构建一个简单的Web服务器如果你需要提供HTTP接口给前端。npm install openai dotenv express npm install -D nodemon在项目根目录创建.env文件用于存储敏感信息。你需要从Taotoken控制台获取API Key并在模型广场查看你希望使用的模型ID。# .env TAOTOKEN_API_KEYyour_taotoken_api_key_here TAOTOKEN_MODELclaude-sonnet-4-6 # 示例模型ID请替换为实际值 PORT3000 # 可选用于Express服务器请务必将.env文件添加到.gitignore中避免将密钥提交到版本控制系统。2. 配置OpenAI客户端并调用API创建一个核心服务文件例如src/aiService.js。在这里我们将配置OpenAI客户端指向Taotoken的端点并编写调用函数。// src/aiService.js import OpenAI from openai; import dotenv from dotenv; dotenv.config(); // 初始化客户端关键是指定baseURL为Taotoken的OpenAI兼容端点 const client new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: https://taotoken.net/api, // 注意baseURL末尾不带/v1 }); /** * 调用AI聊天补全接口非流式 * param {Array} messages - 消息历史数组格式如 [{role: user, content: Hello}] * returns {Promisestring} - AI返回的文本内容 */ export async function createChatCompletion(messages) { try { const completion await client.chat.completions.create({ model: process.env.TAOTOKEN_MODEL, messages: messages, // 可根据需要调整其他参数如temperature、max_tokens等 // temperature: 0.7, // max_tokens: 500, }); return completion.choices[0]?.message?.content || ; } catch (error) { console.error(AI API调用失败:, error); throw new Error(AI服务暂时不可用: ${error.message}); } } /** * 调用AI聊天补全接口流式响应 * param {Array} messages - 消息历史数组 * returns {AsyncIterable} - 一个异步迭代器用于逐步读取流式响应 */ export async function* createChatCompletionStream(messages) { try { const stream await client.chat.completions.create({ model: process.env.TAOTOKEN_MODEL, messages: messages, stream: true, // 启用流式输出 }); for await (const chunk of stream) { const content chunk.choices[0]?.delta?.content || ; if (content) { yield content; } } } catch (error) { console.error(AI流式API调用失败:, error); yield [错误] 流式请求中断: ${error.message}; } }关键配置说明初始化OpenAI客户端时baseURL参数必须设置为https://taotoken.net/api。这是Taotoken为OpenAI兼容SDK提供的统一入口点SDK会自动在其后拼接/v1/chat/completions等具体路径。请勿在此处添加/v1。3. 构建后端API服务为了让前端能够调用我们需要创建一个HTTP服务器。这里使用Express框架创建一个简单的REST API。创建一个主服务器文件例如src/server.js。// src/server.js import express from express; import dotenv from dotenv; import { createChatCompletion, createChatCompletionStream } from ./aiService.js; dotenv.config(); const app express(); const port process.env.PORT || 3000; app.use(express.json()); // 健康检查端点 app.get(/health, (req, res) { res.json({ status: ok, service: taotoken-ai-backend }); }); // 非流式聊天接口 app.post(/api/chat, async (req, res) { const { messages } req.body; if (!messages || !Array.isArray(messages)) { return res.status(400).json({ error: 请求体需包含 messages 数组 }); } try { const aiResponse await createChatCompletion(messages); res.json({ response: aiResponse }); } catch (error) { res.status(500).json({ error: error.message }); } }); // 流式聊天接口 app.post(/api/chat/stream, async (req, res) { const { messages } req.body; if (!messages || !Array.isArray(messages)) { return res.status(400).json({ error: 请求体需包含 messages 数组 }); } res.setHeader(Content-Type, text/plain; charsetutf-8); res.setHeader(Transfer-Encoding, chunked); try { const stream createChatCompletionStream(messages); for await (const chunk of stream) { res.write(chunk); } res.end(); } catch (error) { res.write([流式传输错误] ${error.message}); res.end(); } }); app.listen(port, () { console.log(AI后端服务运行在 http://localhost:${port}); });在package.json中添加启动脚本。{ scripts: { start: node src/server.js, dev: nodemon src/server.js } }现在你可以运行npm run dev启动开发服务器。服务将提供两个主要端点POST /api/chat用于非流式响应POST /api/chat/stream用于流式响应。4. 前端调用与安全实践前端应用如React、Vue可以通过fetch或axios调用上述后端接口。以下是一个简单的调用示例。// 前端调用示例 (非流式) async function callAIBackend(userMessage, history []) { const messages [...history, { role: user, content: userMessage }]; const response await fetch(http://localhost:3000/api/chat, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ messages }), }); const data await response.json(); return data.response; } // 前端调用示例 (流式) async function callAIBackendStream(userMessage, history [], onChunk) { const messages [...history, { role: user, content: userMessage }]; const response await fetch(http://localhost:3000/api/chat/stream, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ messages }), }); const reader response.body.getReader(); const decoder new TextDecoder(utf-8); let done false; while (!done) { const { value, done: doneReading } await reader.read(); done doneReading; const chunk decoder.decode(value); if (chunk onChunk) { onChunk(chunk); } } }安全与部署建议密钥安全API Key永远不要暴露给前端。本文的模式将Key保存在后端环境变量中是正确做法。请求验证在生产环境中应为后端API添加身份验证如JWT、速率限制和输入验证。错误处理后端服务应妥善处理Taotoken API可能返回的错误如额度不足、模型不可用并向前端返回友好的错误信息。环境分离为开发、测试、生产环境配置不同的.env文件和Taotoken API Key。部署你可以将此Node.js服务部署到任何云平台如Vercel、Railway、你自己的服务器。只需确保环境变正确设置。通过以上步骤你便拥有了一个稳定、可扩展的后端服务为你的前端应用提供来自Taotoken聚合的多模型AI对话能力。所有模型调用、计费管理和供应商路由都统一由Taotoken平台处理你只需关注业务逻辑的实现。开始构建你的AI应用可以前往 Taotoken 获取API Key并查看可用模型。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度