Nodejs后端服务调用Taotoken聚合API实现智能客服回复
Node.js 后端服务调用 Taotoken 聚合 API 实现智能客服回复
1. 环境准备与依赖安装
在开始之前,确保你的开发环境已安装 Node.js 16 或更高版本。我们将使用openainpm 包来对接 Taotoken 的 OpenAI 兼容 API。创建一个新的 Node.js 项目并安装必要依赖:
mkdir taotoken-chatbot && cd taotoken-chatbot npm init -y npm install express openai dotenv这里我们选择了 Express 作为 Web 框架,同时安装了openai包用于 API 调用,以及dotenv用于管理环境变量。如果你偏好 Koa 框架,可以相应替换为npm install koa @koa/router openai dotenv。
2. 配置 Taotoken API 访问
在项目根目录创建.env文件,用于安全存储你的 Taotoken API Key:
TAOTOKEN_API_KEY=your_api_key_here PORT=3000请将your_api_key_here替换为你在 Taotoken 控制台获取的实际 API Key。这个 Key 将用于所有 API 请求的身份验证。注意不要将此文件提交到版本控制系统。
3. 实现基础 Express 服务
创建一个app.js文件作为应用入口,设置基础 Express 服务和路由:
require('dotenv').config(); const express = require('express'); const { OpenAI } = require('openai'); const app = express(); app.use(express.json()); const openai = new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: 'https://taotoken.net/api', }); app.post('/api/chat', async (req, res) => { try { const { message } = req.body; if (!message) { return res.status(400).json({ error: 'Message is required' }); } const completion = await openai.chat.completions.create({ model: 'claude-sonnet-4-6', messages: [{ role: 'user', content: message }], }); res.json({ reply: completion.choices[0]?.message?.content }); } catch (error) { console.error('API Error:', error); res.status(500).json({ error: 'Failed to process your request' }); } }); app.listen(process.env.PORT, () => { console.log(`Server running on port ${process.env.PORT}`); });这段代码创建了一个简单的 Express 服务,监听/api/chat的 POST 请求。关键点在于正确配置openai客户端的baseURL为https://taotoken.net/api,这是 Taotoken 的 OpenAI 兼容 API 端点。
4. 增强错误处理与超时控制
在实际生产环境中,我们需要更健壮的错误处理和超时机制。修改/api/chat路由处理程序如下:
app.post('/api/chat', async (req, res) => { const { message } = req.body; if (!message || typeof message !== 'string') { return res.status(400).json({ error: 'Invalid request: message must be a non-empty string' }); } try { const controller = new AbortController(); const timeout = setTimeout(() => controller.abort(), 10000); // 10秒超时 const completion = await openai.chat.completions.create({ model: 'claude-sonnet-4-6', messages: [{ role: 'user', content: message }], max_tokens: 500, signal: controller.signal, }); clearTimeout(timeout); if (!completion.choices?.[0]?.message?.content) { throw new Error('Empty response from API'); } res.json({ reply: completion.choices[0].message.content, usage: completion.usage, }); } catch (error) { clearTimeout(timeout); console.error('Chat Error:', error.message); const statusCode = error.name === 'AbortError' ? 504 : 500; res.status(statusCode).json({ error: error.name === 'AbortError' ? 'Request timeout' : 'Failed to generate response', }); } });这里我们添加了几个重要改进:
- 输入验证确保消息是有效字符串
- 10秒请求超时控制
- 响应数据中包含 Token 使用量信息
- 更详细的错误分类处理
5. 测试与运行
创建一个简单的测试脚本test.js来验证服务:
const axios = require('axios'); async function testChat() { try { const response = await axios.post('http://localhost:3000/api/chat', { message: '如何重置我的账户密码?' }); console.log('Response:', response.data); } catch (error) { console.error('Test Failed:', error.response?.data || error.message); } } testChat();启动服务并运行测试:
node app.js # 在新终端窗口 node test.js你应该能看到类似以下的输出,表示服务运行正常:
{ "reply": "您可以通过登录页面点击'忘记密码'链接来重置密码...", "usage": { "prompt_tokens": 15, "completion_tokens": 42, "total_tokens": 57 } }6. 生产环境注意事项
当准备将服务部署到生产环境时,考虑以下建议:
- API Key 安全:在服务器环境中使用环境变量或密钥管理服务,不要硬编码在源代码中
- 速率限制:根据业务需求实现适当的速率限制,防止滥用
- 模型选择:可以在 Taotoken 模型广场查看不同模型的特性,根据需求调整
model参数 - 日志记录:记录重要的请求和响应数据,便于监控和调试
- 健康检查:添加健康检查端点,确保服务可用性
完整的示例代码可以作为一个起点,根据你的具体业务需求进行扩展。如需了解更多关于 Taotoken API 的能力和配置选项,可以参考 Taotoken 官方文档。
