🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度

使用Nodejs为网站构建AI客服机器人,通过Taotoken稳定接入大模型

1. 项目概述与准备工作

为网站添加一个AI客服机器人,可以显著提升用户体验和自动化服务能力。使用Node.js作为后端,配合OpenAI官方SDK,可以快速构建一个可响应的聊天接口。通过Taotoken平台,你可以用一个统一的API Key接入多个主流大模型,简化了模型选型和接入流程。

在开始编码之前,你需要完成两项准备工作。第一,访问Taotoken平台并注册账号。第二,在平台控制台中创建一个API Key,这个Key将用于后续所有API调用的身份验证。同时,建议你浏览一下模型广场,那里列出了所有可用的模型及其标识符(Model ID),例如claude-sonnet-4-6gpt-4o-mini,后续在代码中需要指定具体的模型。

2. 初始化Node.js项目与依赖安装

首先,创建一个新的项目目录并初始化Node.js项目。打开终端,执行以下命令:

mkdir ai-customer-service
cd ai-customer-service
npm init -y

接下来,安装项目所需的核心依赖。我们将使用openai这个官方Node.js库来调用兼容OpenAI的API,同时使用express来构建一个简单的Web服务器,dotenv用于管理环境变量。

npm install openai express dotenv

安装完成后,在项目根目录下创建一个名为.env的文件,用于安全地存储你的API密钥和配置。这个文件不应该被提交到版本控制系统(记得将其添加到.gitignore中)。

3. 配置Taotoken API并实现核心服务函数

关键的配置步骤在于正确设置SDK的baseURL参数。Taotoken提供了OpenAI兼容的API端点,你需要将baseURL指向https://taotoken.net/api。在.env文件中,添加你的API Key:

TAOTOKEN_API_KEY=你的_API_Key_粘贴在此处

然后,创建一个名为service.js的文件,实现AI聊天的核心逻辑。我们将导出一个异步函数,它接收用户消息并返回模型的回复。

import OpenAI from 'openai';
import dotenv from 'dotenv';

dotenv.config();

// 初始化OpenAI客户端,关键是指定Taotoken的baseURL
const client = new OpenAI({
  apiKey: process.env.TAOTOKEN_API_KEY,
  baseURL: 'https://taotoken.net/api',
});

/**
 * 获取AI客服回复
 * @param {Array} messageHistory - 消息历史记录,格式为 [{role: 'user', content: '...'}, ...]
 * @param {string} model - 选用的模型ID,例如 'claude-sonnet-4-6'
 * @returns {Promise<string>} - AI返回的文本内容
 */
export async function getAIResponse(messageHistory, model = 'claude-sonnet-4-6') {
  try {
    const completion = await client.chat.completions.create({
      model: model,
      messages: messageHistory,
      temperature: 0.7, // 控制回复的随机性,可根据需要调整
      max_tokens: 500,
    });

    return completion.choices[0]?.message?.content || '抱歉,我没有收到回复。';
  } catch (error) {
    console.error('调用AI API时发生错误:', error);
    return '客服机器人暂时无法响应,请稍后再试。';
  }
}

这段代码的核心是初始化OpenAI客户端时,将baseURL设置为Taotoken的地址。getAIResponse函数封装了API调用,接收消息历史和模型ID,返回AI生成的文本。错误处理确保了服务在API异常时也能向用户返回友好的提示。

4. 构建Express服务器与API路由

有了核心服务函数,我们需要创建一个HTTP服务器来暴露一个可供网站前端调用的API接口。创建一个server.js文件。

import express from 'express';
import { getAIResponse } from './service.js';

const app = express();
const port = process.env.PORT || 3000;

// 中间件:解析JSON请求体
app.use(express.json());
// 可选:配置CORS以允许你的网站域名访问
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '你的前端网站域名'); // 例如:'https://yourwebsite.com'
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  next();
});

// 定义AI聊天API端点
app.post('/api/chat', async (req, res) => {
  const { messages, model } = req.body;

  // 简单的请求验证
  if (!messages || !Array.isArray(messages)) {
    return res.status(400).json({ error: '无效的请求参数:messages应为数组' });
  }

  try {
    const aiReply = await getAIResponse(messages, model);
    res.json({ reply: aiReply });
  } catch (error) {
    console.error('API路由错误:', error);
    res.status(500).json({ error: '服务器内部错误' });
  }
});

// 健康检查端点
app.get('/health', (req, res) => {
  res.json({ status: 'ok' });
});

app.listen(port, () => {
  console.log(`AI客服服务运行在 http://localhost:${port}`);
});

这个服务器创建了一个/api/chat的POST接口。前端需要以JSON格式发送请求体,包含messages(对话历史数组)和可选的model参数。服务器调用之前实现的getAIResponse函数,并将结果以JSON格式返回给前端。

5. 运行测试与前端集成示例

现在,可以启动你的AI客服后端服务了。在终端中运行:

node server.js

如果看到服务启动成功的日志,说明后端已经就绪。你可以使用curl命令或Postman等工具进行测试。

curl -X POST http://localhost:3000/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [{"role": "user", "content": "你好,请问你们支持哪些支付方式?"}],
    "model": "claude-sonnet-4-6"
  }'

对于前端集成,这里提供一个简单的JavaScript Fetch API调用示例。你可以将其嵌入到你的网站JavaScript中。

async function askAICustomerService(userMessage, conversationHistory = []) {
  const messages = [...conversationHistory, { role: 'user', content: userMessage }];

  const response = await fetch('http://你的后端地址/api/chat', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      messages: messages,
      model: 'claude-sonnet-4-6' // 或从下拉菜单中获取用户选择的模型
    }),
  });

  const data = await response.json();
  if (response.ok) {
    return data.reply; // AI回复内容
  } else {
    console.error('API调用失败:', data.error);
    return '网络请求失败,请检查连接。';
  }
}

// 使用示例
const reply = await askAICustomerService('我的订单什么时候发货?');
console.log(reply);

至此,一个基础的、可通过Taotoken调用多种大模型的AI客服后端已经搭建完成。你可以在Taotoken控制台中实时查看API调用量和费用消耗,并根据业务需求在代码中轻松切换不同的模型ID。

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐