在 Node.js 后端服务中集成 Taotoken 调用大模型 API

1. 准备工作

在开始集成 Taotoken 之前,请确保已具备以下条件:

  • 拥有有效的 Taotoken API Key(可在控制台创建)
  • 已安装 Node.js 16 或更高版本
  • 了解基本的异步编程概念

建议将 API Key 存储在环境变量中而非硬编码在代码里。可以通过 .env 文件管理敏感信息:

# .env
TAOTOKEN_API_KEY=your_api_key_here

2. 安装依赖

使用 npm 安装官方 OpenAI 包(兼容 Taotoken API):

npm install openai

如果需要读取环境变量,可以同时安装 dotenv:

npm install dotenv

3. 基础配置

创建一个服务模块来初始化 OpenAI 客户端。以下是完整的配置示例:

// taotokenService.js
import { config } from 'dotenv';
import OpenAI from 'openai';

config(); // 加载.env文件

const client = new OpenAI({
  apiKey: process.env.TAOTOKEN_API_KEY,
  baseURL: 'https://taotoken.net/api',
});

注意 baseURL 必须设置为 https://taotoken.net/api,这是 Taotoken 的 OpenAI 兼容端点。

4. 实现聊天补全功能

下面是一个完整的异步函数示例,实现对话补全功能:

export async function chatCompletion(messages, model = 'claude-sonnet-4-6') {
  try {
    const completion = await client.chat.completions.create({
      model,
      messages,
      temperature: 0.7,
    });
    
    return completion.choices[0]?.message?.content || '';
  } catch (error) {
    console.error('Taotoken API 调用失败:', error);
    throw error;
  }
}

5. 在路由中使用

在 Express 或其他框架中,可以这样使用上述服务:

import express from 'express';
import { chatCompletion } from './taotokenService.js';

const app = express();
app.use(express.json());

app.post('/api/chat', async (req, res) => {
  const { messages } = req.body;
  
  try {
    const response = await chatCompletion(messages);
    res.json({ success: true, response });
  } catch (error) {
    res.status(500).json({ 
      success: false, 
      error: error.message 
    });
  }
});

6. 处理流式响应

如果需要处理流式响应,可以修改 chatCompletion 函数:

export async function streamChatCompletion(messages, model, callback) {
  const stream = await client.chat.completions.create({
    model,
    messages,
    stream: true,
  });

  for await (const chunk of stream) {
    const content = chunk.choices[0]?.delta?.content || '';
    callback(content);
  }
}

然后在路由中使用:

app.post('/api/chat/stream', (req, res) => {
  const { messages } = req.body;
  
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  res.setHeader('Connection', 'keep-alive');
  
  streamChatCompletion(messages, 'claude-sonnet-4-6', (chunk) => {
    res.write(`data: ${JSON.stringify({ content: chunk })}\n\n`);
  }).then(() => {
    res.end();
  }).catch((error) => {
    console.error('流式传输错误:', error);
    res.status(500).end();
  });
});

7. 最佳实践建议

  1. 错误处理:始终封装 API 调用在 try-catch 块中,考虑实现重试逻辑
  2. 超时控制:为长时间运行的请求设置超时
  3. 模型选择:根据需求在模型广场选择合适的模型
  4. 日志记录:记录重要调用的请求和响应摘要
  5. 速率限制:遵循平台的速率限制规则

完整示例代码可参考 Taotoken Node.js 示例库


开始使用 Taotoken 大模型服务,请访问 Taotoken 获取 API Key 并探索可用模型。

更多推荐