当前位置: 首页 > news >正文

使用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并查看可用模型。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度
http://www.zskr.cn/news/1356121.html

相关文章:

  • 配置OpenClaw Agent使用Taotoken作为模型供应商
  • MoMask:革命性3D人体动画生成技术,让创意自由流动
  • 终极指南:免费开源SMUDebugTool实现AMD Ryzen处理器深度调试与精准控制
  • 终极BepisPlugins插件合集:彻底改变你的Illusion游戏体验![特殊字符]
  • 戴森球计划工厂蓝图:革命性工厂配置架构的5大技术突破
  • 黑苹果配置终极简化:OpCore Simplify三步搞定OpenCore EFI
  • 字体压缩实战:Fontmin深度指南与最佳实践
  • Day04 Web应用蜜罐系统堡垒机运维API内外接口第三方拓展架构部署影响
  • Topit:macOS窗口置顶工具,让多任务工作流更流畅
  • 如何快速生成Beyond Compare 5注册密钥:3种方法完整教程
  • 如何用强化学习实战构建智能交通信号控制系统?[特殊字符]
  • 水促进铜氧化lammps_ReaxFF分子动力学模拟
  • 80集短剧,3天拍完:当电影人下场做Agent,影视生产迎来了“最懂行”的解法
  • RAG检索增强:新手程序员必备教程,轻松掌握大模型知识更新与优化技巧(收藏版)
  • 快速上手Lapce:高效配置指南与5个实用技巧
  • 用 Excel 手算 MLP:彻底吃透神经网络反向传播
  • 构建企业级AI约束求解引擎:Timefold Solver架构设计与性能优化指南
  • 5分钟终极指南:如何用BepInEx为Unity游戏添加模组插件
  • 从兴奋到祛魅:小白亲历三大AI实战坑,收藏这份避坑指南!
  • 3个关键步骤掌握Hugo-PaperMod主题部署
  • 朱雀广告平台架构解密:构建高性能一站式广告解决方案的技术突破
  • AI科技日报-2026年5月23日
  • 脑机接口的 “信号生命线”:自研模拟前端如何破解非侵入式采集的性能困局
  • 3步解锁对讲机隐藏功能:开源固件深度改造指南
  • KMS智能激活终极教程:三步永久激活Windows与Office的完整指南
  • VutronMusic:如何打造你的跨平台高颜值音乐中心
  • 还在为歌词同步烦恼吗?5分钟学会用LRC Maker制作专业级滚动歌词
  • ComfyUI-FramePackWrapper终极指南:如何在8GB显存上实现高清AI视频生成
  • 黄金回收白银回收铂金回收彩金回收店铺推荐中方县2026最新五家靠谱回收门店TOP5排行榜及联系方式推荐 - 前途无量YY
  • ZMK开源键盘固件:从零打造你的终极定制化机械键盘