You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js基于Google GEMINI开发AI聊天机器人?

Node.js 集成 Google Gemini 开发聊天机器人分步指南

1. 前期准备

  • 前往Google AI Studio创建项目并生成API密钥,密钥是调用Gemini接口的核心凭证
  • 初始化Node.js项目:执行 npm init -y 生成package.json文件
  • 安装官方SDK:执行 npm install @google/generative-ai 引入Gemini的Node.js开发包

2. 基础单轮聊天实现

以下是最基础的文本对话代码,可直接测试运行:

const { GoogleGenerativeAI } = require('@google/generative-ai');

// 替换为你自己的Gemini API密钥
const API_KEY = '你的API密钥';
const genAI = new GoogleGenerativeAI(API_KEY);

// 初始化文本对话模型(gemini-pro适用于纯文本场景)
const model = genAI.getGenerativeModel({ model: 'gemini-pro' });

// 单轮对话函数
async function getGeminiReply(userInput) {
  const chat = model.startChat({ history: [] });
  const result = await chat.sendMessage(userInput);
  const response = await result.response;
  return response.text();
}

// 测试调用
getGeminiReply('你好,我想用Node.js开发聊天机器人,给点实用建议')
  .then(reply => console.log('Gemini回复:', reply))
  .catch(err => console.error('调用出错:', err));

3. 多轮对话功能实现

要支持上下文连贯的多轮对话,需要维护对话历史,代码示例如下:

const { GoogleGenerativeAI } = require('@google/generative-ai');

const API_KEY = '你的API密钥';
const genAI = new GoogleGenerativeAI(API_KEY);
const model = genAI.getGenerativeModel({ model: 'gemini-pro' });

// 用于存储对话历史的数组
let chatHistory = [];

// 多轮对话函数
async function multiTurnChat(userInput) {
  // 将历史记录格式化为模型要求的结构
  const formattedHistory = chatHistory.map(item => ({
    role: item.role,
    parts: [{ text: item.content }]
  }));

  const chat = model.startChat({ history: formattedHistory });
  const result = await chat.sendMessage(userInput);
  const replyText = await result.response.text();

  // 更新对话历史
  chatHistory.push(
    { role: 'user', content: userInput },
    { role: 'model', content: replyText }
  );

  return replyText;
}

// 测试多轮对话
async function testMultiTurn() {
  let reply = await multiTurnChat('推荐一本适合Node.js入门的书籍');
  console.log('Gemini回复:', reply);

  reply = await multiTurnChat('这本书完全零基础能看懂吗?');
  console.log('Gemini回复:', reply);
}

testMultiTurn();

4. 进阶优化建议

  • 参数自定义:调用sendMessage时可传入generationConfig参数,控制回复的长度、随机性等:
    const result = await chat.sendMessage(userInput, {
      generationConfig: {
        maxOutputTokens: 512, // 限制最大输出字符数
        temperature: 0.7, // 0-1区间,值越高回复越随机
        topP: 0.9 // 控制词汇选择的多样性
      }
    });
    
  • 流式输出:如果需要实时展示回复内容,可使用流式调用:
    async function streamReply(userInput) {
      const chat = model.startChat({ history: chatHistory });
      const result = await chat.sendMessageStream(userInput);
      
      let fullReply = '';
      for await (const chunk of result.stream) {
        const chunkText = chunk.text();
        fullReply += chunkText;
        process.stdout.write(chunkText); // 实时输出每一段内容
      }
    
      // 更新对话历史
      chatHistory.push(
        { role: 'user', content: userInput },
        { role: 'model', content: fullReply }
      );
    }
    
    streamReply('用Node.js写一个简单的HTTP服务器示例');
    
  • 会话持久化:将对话历史存储到MongoDB、Redis等数据库中,支持跨会话的上下文延续
  • 错误处理:增加对API密钥失效、请求配额超限、网络异常等情况的捕获和处理逻辑

5. 常见问题排查

  • API调用失败:检查密钥是否正确,确认Google AI Studio中已启用Gemini API权限
  • 请求配额不足:免费版有调用次数限制,可在Google Cloud控制台查看并调整配额
  • 模型选择错误:纯文本对话用gemini-pro,需要支持图片输入的场景用gemini-pro-vision

内容的提问来源于stack exchange,提问作者sreelekshmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:45:08