🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
Node.js 服务中异步调用 Taotoken 聚合 API 的完整示例
在 Node.js 后端服务中集成大模型能力,通常需要处理不同厂商的 API 密钥、端点地址和调用方式。Taotoken 提供的 OpenAI 兼容 API 简化了这一过程,开发者可以使用熟悉的openaiSDK,通过统一的接口调用多个模型。本文将演示如何在 Node.js 项目中配置并异步调用 Taotoken,构建一个支持流式响应的聊天补全接口。
1. 项目初始化与依赖安装
首先,确保你有一个 Node.js 项目环境。如果尚未初始化,可以在项目目录下运行npm init -y。接着,安装必要的依赖包。我们将使用官方的openaiSDK 来发起请求,并使用dotenv管理环境变量。
npm install openai dotenv创建一个.env文件来安全地存储你的 Taotoken API 密钥。你可以在 Taotoken 控制台创建并获取它。
# .env TAOTOKEN_API_KEY=你的_API_密钥2. 配置 OpenAI 客户端指向 Taotoken
核心步骤是正确配置openai客户端的baseURL和apiKey。Taotoken 的 OpenAI 兼容端点基础地址是https://taotoken.net/api。请注意,这里配置的是baseURL,SDK 会自动在其后拼接/v1/chat/completions等具体路径。
创建一个名为taotokenClient.js的文件,用于初始化客户端。
// taotokenClient.js import OpenAI from 'openai'; import dotenv from 'dotenv'; dotenv.config(); // 初始化指向 Taotoken 的 OpenAI 客户端 const taotokenClient = new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: 'https://taotoken.net/api', // 关键配置:Taotoken 的 OpenAI 兼容端点 }); export default taotokenClient;重要提醒:baseURL必须设置为https://taotoken.net/api。这是与直接使用 OpenAI 官方 SDK 的主要区别。模型 ID 可以在 Taotoken 模型广场查看,例如claude-sonnet-4-6或gpt-4o-mini。
3. 实现异步聊天补全函数
接下来,我们实现一个核心的异步函数,用于发起聊天补全请求。这个函数将支持普通响应和流式响应两种模式,并包含基本的错误处理逻辑。
// chatService.js import taotokenClient from './taotokenClient.js'; /** * 调用 Taotoken 聊天补全 API * @param {Array} messages - 对话消息数组,格式如 [{role: 'user', content: 'Hello'}] * @param {string} model - 模型 ID,从 Taotoken 模型广场获取 * @param {boolean} stream - 是否启用流式响应 * @returns {Promise<Object|ReadableStream>} 响应结果或流对象 */ export async function createChatCompletion(messages, model = 'claude-sonnet-4-6', stream = false) { try { const completion = await taotokenClient.chat.completions.create({ model, messages, stream, // 可根据需要添加其他参数,如 temperature、max_tokens 等 }); return completion; } catch (error) { // 统一处理 API 调用错误 console.error('调用 Taotoken API 失败:', error); // 可以根据 error.status 或 error.code 进行更精细的错误分类处理 throw new Error(`AI 服务请求失败: ${error.message}`); } }4. 在 Web 框架中集成流式接口
假设我们使用 Express 框架,可以创建一个路由来处理前端的聊天请求,并返回流式响应。这能显著提升长文本生成的用户体验。
// server.js import express from 'express'; import { createChatCompletion } from './chatService.js'; const app = express(); app.use(express.json()); app.post('/api/chat', async (req, res) => { const { messages, model, stream } = req.body; // 设置响应头,支持流式传输 if (stream) { res.setHeader('Content-Type', 'text/event-stream'); res.setHeader('Cache-Control', 'no-cache'); res.setHeader('Connection', 'keep-alive'); } try { const completion = await createChatCompletion(messages, model, stream); if (stream) { // 处理流式响应 for await (const chunk of completion) { const content = chunk.choices[0]?.delta?.content || ''; if (content) { res.write(`data: ${JSON.stringify({ content })}\n\n`); } } res.write('data: [DONE]\n\n'); res.end(); } else { // 处理普通响应 res.json({ success: true, content: completion.choices[0]?.message?.content, usage: completion.usage, // 包含 token 消耗信息 }); } } catch (error) { console.error('接口处理错误:', error); if (!res.headersSent) { res.status(500).json({ success: false, error: error.message }); } } }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`服务运行在 http://localhost:${PORT}`); });5. 关键注意事项与错误排查
在实际部署中,有几个关键点需要注意。首先是网络稳定性,确保你的服务器能够稳定访问taotoken.net域名。其次是异步控制,在流式响应场景下,要妥善管理请求生命周期,避免客户端断开连接后服务器端仍在处理流。最后是成本监控,Taotoken 控制台提供了用量看板,建议定期查看 token 消耗情况。
如果遇到401错误,请检查 API 密钥是否正确且在有效期内。如果遇到404或连接错误,请确认baseURL配置为https://taotoken.net/api且没有多余的斜杠或路径。模型 ID 错误通常会导致400或404响应,请确保使用的是模型广场中列出的有效 ID。
通过以上步骤,你可以在 Node.js 服务中快速集成 Taotoken,以统一的异步接口调用多种大模型。具体的模型列表、计费详情和路由策略,请以 Taotoken 控制台和官方文档为准。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度