使用Nodejs和Taotoken构建一个简单的AI对话代理服务
1. 项目初始化与环境配置
首先创建一个新的Node.js项目并安装必要的依赖。在项目目录下执行以下命令:
npm init -y npm install openai express dotenv创建.env文件用于存储敏感信息,避免将API密钥硬编码在代码中。文件内容如下:
TAOTOKEN_API_KEY=your_api_key_here PORT=3000在Taotoken控制台获取API Key后替换your_api_key_here。建议将.env添加到.gitignore中以防止密钥意外提交。
2. 基础服务搭建
创建一个server.js文件作为应用入口,设置Express服务器和OpenAI客户端:
import express from 'express'; import { OpenAI } from 'openai'; import dotenv from 'dotenv'; dotenv.config(); const app = express(); app.use(express.json()); const client = new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: 'https://taotoken.net/api', }); app.post('/chat', async (req, res) => { try { const { message } = req.body; if (!message) { return res.status(400).json({ error: 'Message is required' }); } const completion = await client.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 get AI response' }); } }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });3. 请求处理与错误管理
上述代码已经包含了基本的错误处理,但我们可以进一步完善:
app.post('/chat', async (req, res) => { try { const { message, model } = req.body; if (!message) { return res.status(400).json({ error: 'Message is required' }); } const validModels = ['claude-sonnet-4-6', 'gpt-3.5-turbo']; const selectedModel = validModels.includes(model) ? model : 'claude-sonnet-4-6'; const completion = await client.chat.completions.create({ model: selectedModel, messages: [{ role: 'user', content: message }], max_tokens: 500, }); if (!completion.choices?.[0]?.message?.content) { throw new Error('Empty response from AI'); } res.json({ reply: completion.choices[0].message.content, usage: completion.usage }); } catch (error) { console.error('Error:', error.message); let status = 500; let message = 'Internal server error'; if (error instanceof OpenAI.APIError) { status = error.status || 500; message = error.message; } res.status(status).json({ error: message }); } });4. 服务测试与部署
可以使用curl或Postman测试服务:
curl -X POST http://localhost:3000/chat \ -H "Content-Type: application/json" \ -d '{"message":"Explain quantum computing in simple terms"}'对于生产环境部署,建议:
- 使用PM2等进程管理器保持服务运行
- 添加HTTPS支持
- 实现请求限流防止滥用
- 添加更详细的日志记录
5. 进阶扩展方向
这个基础服务可以进一步扩展:
- 添加对话历史管理,实现多轮对话
- 集成用户认证系统
- 添加响应缓存减少API调用
- 实现流式传输(streaming)提升用户体验
- 添加管理接口查看使用统计
Taotoken提供了多种模型选择和使用统计功能,可以帮助开发者更好地管理和优化AI服务。