发布于 2026-01-05 2 阅读
0

如何使用 Google Gemini 和 Node.js DEV 的全球展示挑战赛(由 Mux 呈现):展示你的项目!

如何在 Node.js 中使用 Google Gemini

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

介绍

过去一年,生成式人工智能一直是科技界的热门话题。大家都在用它开发各种炫酷的项目。谷歌也拥有自己的生成式人工智能平台,名为Gemini。

最近,谷歌推出了面向 Gemini 开发者的 API。其中包含多个库和框架,开发者可以将其集成到自己的应用程序中。

本文中,我们将构建一个简单的 Node.js 应用程序,并将其集成 Google Gemini。我们将使用Google Gemini SDK

那么,事不宜迟,让我们开始吧!

什么是双子座?

图片描述

Google Gemini 是由 Google AI 开发的一款功能强大且用途广泛的 AI 模型。Gemini 不仅可以处理文本,还能理解和处理各种格式的数据,例如代码、音频、图像和视频。这为您的 Node.js 项目带来了无限可能。

项目设置:

1. 创建Node.js项目:

要启动我们的项目,我们需要搭建一个 Node.js 环境。所以,让我们创建一个 Node 项目。在终端中运行以下命令。

npm init
Enter fullscreen mode Exit fullscreen mode

这将初始化一个新的Node.js项目。

2. 安装依赖项:

现在,我们将安装项目所需的依赖项。

npm install express body-parser @google/generative-ai dotenv
Enter fullscreen mode Exit fullscreen mode

这将安装以下软件包:

  • Express:一个流行的 Node.js Web 框架

  • body-parser:用于解析请求体的中间件

  • @google/generative-ai:一个用于访问 Gemini 模型的软件包

  • dotenv:从 .env 文件加载环境变量

3.设置环境变量:

接下来,我们将创建一个.env文件夹来安全地存储我们的敏感信息,例如 API 凭据。

//.env
API_KEY=YOUR_API_KEY
PORT=3000
Enter fullscreen mode Exit fullscreen mode

4.获取 API 密钥:

在使用 Gemini 之前,我们需要在 Google 开发者控制台中设置 API 凭据。为此,我们需要注册 Google 帐户并创建 API 密钥。

登录后,访问https://makersuite.google.com/app/apikey。你会看到类似这样的信息:

Google AI Studio 控制台图像

然后,我们将点击“创建 API 密钥”按钮。这将生成一个唯一的 API 密钥,我们将使用该密钥来验证对 Google Generative AI API 的请求。

要测试您的 API,您可以运行以下 Curl 命令:

curl \
  -H 'Content-Type: application/json' \
  -d '{"contents":[{"parts":[{"text":"Write a story about a magic backpack"}]}]}' \
  -X POST https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=YOUR_API_KEY

替换YOUR_API_KEY为我们之前获取的实际 API 密钥。

获取 API 密钥后,我们将.env使用我们的 API 密钥更新文件。

5. 创建 Express 服务器:

现在,我们将index.js在根目录下创建一个文件,并搭建一个基本的 Express 服务器。请看以下代码:

const express = require("express");
const dotenv = require("dotenv");

dotenv.config();

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

app.get("/", (req, res) => {
  res.send("Hello World");
});

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});
Enter fullscreen mode Exit fullscreen mode

这里,我们使用“dotenv”包从文件中获取端口号.env

在项目顶部,我们使用环境变量加载,dotenv.config()以便在整个文件中都能访问这些环境变量。

6. 运行项目:

在这一步中,我们将向package.json文件中添加一个启动脚本,以便轻松运行我们的项目。

所以,请将以下脚本添加到 package.json 文件中。

"scripts": {
  "start": "node index.js"
}
Enter fullscreen mode Exit fullscreen mode

package.json 文件应该如下所示:

package.json 文件

为了检查一切是否正常,让我们使用以下命令运行项目:

npm run start
Enter fullscreen mode Exit fullscreen mode

这将启动 Express 服务器。现在,如果我们访问这个 URL http://localhost:3000/,我们将看到以下内容:

http://localhost:3000/ 的图片

太棒了!项目设置已完成,运行完美。接下来,我们将在下一节中将 Gemini 添加到项目中。

添加 Google Gemini:

1. 设置路由和中间件:

为了将 Gemini 添加到我们的项目中,我们将创建一个/generate路由,通过该路由与 Gemini AI 进行通信。

为此,请将以下代码添加到index.js文件中。

const bodyParser = require("body-parser");
const { generateResponse } = require("./controllers/index.js");

//middleware to parse the body content to JSON
app.use(bodyParser.json());

app.post("/generate", generateResponse);
Enter fullscreen mode Exit fullscreen mode

在这里,我们使用body-parser中间件将内容解析为 JSON 格式。

2. 配置 Google 生成式 AI:

现在,我们将创建一个 controller 文件夹,并在其中创建一个index.js文件。在这里,我们将创建一个新的控制器函数来处理上面代码中声明的已生成路由。

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

dotenv.config();

// GoogleGenerativeAI required config
const configuration = new GoogleGenerativeAI(process.env.API_KEY);

// Model initialization
const modelId = "gemini-pro";
const model = configuration.getGenerativeModel({ model: modelId });
Enter fullscreen mode Exit fullscreen mode

在这里,我们通过传递环境变量中的 API 密钥来创建 Google Generative AI API 的配置对象。

getGenerativeModel然后,我们通过向配置对象的方法提供模型 ID(“gemini-pro”)来初始化模型。

模型配置:

我们还可以根据自身需要配置模型参数。

这些参数值控制模型如何生成响应。

例子:

const generationConfig = {
  stopSequences: ["red"],
  maxOutputTokens: 200,
  temperature: 0.9,
  topP: 0.1,
  topK: 16,
};

const model = configuration.getGenerativeModel({ model: modelId, generationConfig });

安全设置:

我们可以使用安全设置来防止收到有害回复。默认情况下,安全设置会屏蔽各种维度上中等至高度不安全的可能性内容。

以下是一个例子:

const { HarmBlockThreshold, HarmCategory } = require("@google/generative-ai");

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_ONLY_HIGH,
  },
  {
    category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
  },
];

const model = genAI.getGenerativeModel({ model: "MODEL_NAME", safetySettings });

通过这些安全设置,我们可以最大限度地减少有害内容的产生,从而增强安全性。

3. 管理对话历史记录:

为了跟踪对话历史记录,我们创建了一个数组history并将其从控制器文件中导出:

export const history = [];
Enter fullscreen mode Exit fullscreen mode

4.实现控制器功能:

现在,我们将编写一个控制器函数generateResponse来处理生成路由(/generate),并生成对用户请求的响应。

/**
 * Generates a response based on the given prompt.
 * @param {Object} req - The request object.
 * @param {Object} res - The response object.
 * @returns {Promise} - A promise that resolves when the response is sent.
 */
export const generateResponse = async (req, res) => {
  try {
    const { prompt } = req.body;

    const result = await model.generateContent(prompt);
    const response = await result.response;
    const text = response.text();
    console.log(text);

    history.push(text);
    console.log(history);

    res.send({ response: text });
  } catch (err) {
    console.error(err);
    res.status(500).json({ message: "Internal server error" });
  }
};
Enter fullscreen mode Exit fullscreen mode

在这里,我们从请求正文中获取提示信息,并使用该方法根据提示信息生成响应model.generateContent

为了跟踪响应,我们将响应推送到历史数组中。

5. 查看回复历史记录:

现在,我们将创建一个路由来检查响应历史记录。此端点返回一个history数组。

将这段简单的代码添加到./index.js文件夹中。

app.get("/generate", (req, res) => {
  res.send(history);
});
Enter fullscreen mode Exit fullscreen mode

我们完成了!

6. 运行项目:

现在,我们需要检查一下我们的应用程序是否运行正常!

让我们使用以下命令运行项目:

npm run start
Enter fullscreen mode Exit fullscreen mode

终端输出

没有错误!感谢上帝!:) 它运行正常。

7. 检查功能

接下来,我们将使用 Postman 发送一个 Post 请求来验证我们的控制器函数。

我们将向http://localhost:3000/generate发送一个 POST 请求,其中包含以下 JSON 有效负载:

{
  "prompt": "Write 3 Javascript Tips for Beginners"
}
Enter fullscreen mode Exit fullscreen mode

Postman 控制台输出

我们收到了回复:

{
    "response": "1. **Use console.log() for Debugging:**\n   - console.log() is a useful tool for debugging your JavaScript code. It allows you to inspect the values of variables and expressions, and to see how your code is executing. This can be especially helpful when you encounter errors or unexpected behavior in your program.\n\n2. **Learn the Basics of Data Types:**\n   - JavaScript has several built-in data types, including strings, numbers, booleans, and objects. Understanding the properties and behaviors of each data type is crucial for writing effective code. For instance, strings can be manipulated using string methods, while numbers can be used in mathematical operations.\n\n3. **Use Strict Mode:**\n   - Strict mode is a way to opt-in to a restricted and secure subset of JavaScript. It helps you to write more secure and reliable code, as it throws errors for common mistakes that would otherwise go unnoticed in regular JavaScript mode. To enable strict mode, simply add \"use strict;\" at the beginning of your JavaScript file or module."
}
Enter fullscreen mode Exit fullscreen mode

Postman 控制台输出

太棒了!我们的 Gemini AI 集成运行正常!

此外,我们还可以访问http://localhost:3000/generate 的历史记录端点来查看对话历史记录。

至此,我们已将 Gemini AI 集成到我们的 Node.js 应用中。在接下来的文章中,我们将探讨 Gemini AI 的更多应用案例。

敬请期待!

结论

如果您觉得这篇文章对您有所帮助,请考虑分享给其他可能受益的人。您也可以关注我,获取更多关于 JavaScript、React 和其他 Web 开发主题的内容。

如需赞助我的工作,请访问:Arindam 的赞助页面,了解各种赞助选项。

请在TwitterLinkedInYoutubeGitHub上关注我

感谢阅读 :)

谢谢

文章来源:https://dev.to/arindam_1729/how-to-use-google-gemini-with-nodejs-2d39