Nodejs 后端服务快速集成 Taotoken 实现 AI 对话功能完整示例
1. 环境准备与依赖安装
在开始集成 Taotoken 之前,确保你的 Node.js 开发环境已经准备就绪。推荐使用 Node.js 16 或更高版本,并已安装 npm 或 yarn 包管理器。创建一个新的项目目录或使用现有项目,初始化 package.json 文件。
安装必要的依赖包。我们将使用openai官方 JavaScript 库来简化 API 调用,同时需要express作为 Web 框架:
npm install openai express dotenvdotenv用于从.env文件加载环境变量,这是管理 API Key 等敏感信息的推荐做法。
2. 配置 Taotoken API 访问
在项目根目录下创建.env文件,用于存储 Taotoken API Key:
TAOTOKEN_API_KEY=your_api_key_here请将your_api_key_here替换为你在 Taotoken 控制台获取的实际 API Key。确保将此文件添加到.gitignore中,避免将敏感信息提交到版本控制系统。
接下来,创建一个配置文件config.js来集中管理 API 设置:
require('dotenv').config(); module.exports = { taotoken: { apiKey: process.env.TAOTOKEN_API_KEY, baseURL: 'https://taotoken.net/api', defaultModel: 'claude-sonnet-4-6' // 可在模型广场查看其他可用模型 } };3. 实现 API 客户端
创建一个taotokenClient.js文件来封装 Taotoken API 的调用逻辑:
const { OpenAI } = require('openai'); const config = require('./config'); const client = new OpenAI({ apiKey: config.taotoken.apiKey, baseURL: config.taotoken.baseURL, }); async function chatCompletion(messages, model = config.taotoken.defaultModel) { try { const completion = await client.chat.completions.create({ model, messages, }); return completion.choices[0]?.message?.content || ''; } catch (error) { console.error('Taotoken API error:', error); throw error; } } async function streamChatCompletion(messages, model = config.taotoken.defaultModel) { try { const stream = await client.chat.completions.create({ model, messages, stream: true, }); return stream; } catch (error) { console.error('Taotoken streaming error:', error); throw error; } } module.exports = { chatCompletion, streamChatCompletion, };4. 构建 Express 服务端点
现在我们可以创建一个 Express 应用,并添加处理 AI 对话的端点。创建app.js文件:
const express = require('express'); const { chatCompletion, streamChatCompletion } = require('./taotokenClient'); const app = express(); const port = process.env.PORT || 3000; app.use(express.json()); // 普通聊天端点 app.post('/api/chat', async (req, res) => { try { const { messages, model } = req.body; const response = await chatCompletion(messages, model); res.json({ response }); } catch (error) { res.status(500).json({ error: error.message }); } }); // 流式聊天端点 app.post('/api/chat/stream', async (req, res) => { try { const { messages, model } = req.body; const stream = await streamChatCompletion(messages, model); res.setHeader('Content-Type', 'text/event-stream'); res.setHeader('Cache-Control', 'no-cache'); res.setHeader('Connection', 'keep-alive'); for await (const chunk of stream) { const content = chunk.choices[0]?.delta?.content || ''; res.write(`data: ${JSON.stringify({ content })}\n\n`); } res.end(); } catch (error) { res.status(500).json({ error: error.message }); } }); app.listen(port, () => { console.log(`Server running on port ${port}`); });5. 测试与使用
启动服务:
node app.js你可以使用 Postman 或 curl 测试 API 端点。对于普通聊天接口:
curl -X POST http://localhost:3000/api/chat \ -H "Content-Type: application/json" \ -d '{"messages":[{"role":"user","content":"你好,请介绍一下你自己"}],"model":"claude-sonnet-4-6"}'对于流式响应接口:
curl -X POST http://localhost:3000/api/chat/stream \ -H "Content-Type: application/json" \ -d '{"messages":[{"role":"user","content":"写一首关于春天的诗"}],"model":"claude-sonnet-4-6"}'6. 生产环境注意事项
在实际生产环境中部署时,建议考虑以下几点:
- 添加 API 请求速率限制,防止滥用
- 实现更完善的错误处理和日志记录
- 考虑添加身份验证中间件保护你的端点
- 监控 API 调用情况和 Token 使用量
- 根据业务需求选择合适的模型,可以在 Taotoken 模型广场查看各模型的特点和定价
Taotoken 提供了详细的 API 文档和用量统计功能,可以帮助你更好地管理和优化 AI 服务的使用。