DEV Community

Hritam Shrivatava
Hritam Shrivatava

Posted on

Integrating Generative AI into a Node.js Application

In the realm of technological innovation, generative AI has emerged as a transformative force, captivating developers with its potential for creativity and problem-solving. Google, a pioneer in AI research, has unveiled its own generative AI model named Gemini. With the recent launch of Google's Gemini APIs, developers are empowered with a suite of libraries and frameworks to seamlessly integrate Gemini into their applications. In this article, we embark on a journey to build a Node.js application that incorporates Google Gemini using the Google Gemini SDK.

Understanding Google Gemini

Google Gemini stands out as a sophisticated AI model developed by Google AI. Unlike conventional AI models that focus solely on text, Gemini demonstrates remarkable versatility by operating across diverse formats such as code, audio, images, and video. This flexibility opens up a myriad of possibilities for enhancing the capabilities of Node.js projects.

Project Initialization

To commence our project, we first establish a Node.js environment. Begin by creating a new Node.js project:

mkdir gemini-node-app
cd gemini-node-app
npm init -y
Enter fullscreen mode Exit fullscreen mode

Next, install the necessary dependencies for our project:

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

Here's a brief overview of the packages we're installing:

  • express: A widely-used web framework for Node.js.
  • body-parser: Middleware for parsing request bodies.
  • @google/generative-ai: A package facilitating access to the Gemini model.
  • dotenv: A package for loading environment variables from a .env file, ensuring secure storage of sensitive information such as API credentials.

Configuring Environment Variables

Create a .env file in the project's root directory to securely store sensitive information:

API_KEY=YOUR_API_KEY
PORT=3000
Enter fullscreen mode Exit fullscreen mode

Obtain an API key by creating one in the Google Developers Console. This key will be used to authenticate requests to the Google Generative AI API.

Setting Up the Express Server

Create an index.js file in the root directory to set up a basic Express server:

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

In this code, we load environment variables using dotenv.config() and access the PORT number from the .env file.

Running the Project

Add a start script to your package.json file to easily run your project:

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

Now, start your Express server using the following command:

npm run start
Enter fullscreen mode Exit fullscreen mode

Navigate to http://localhost:3000/ in your browser to verify that your server is running correctly.

Integrating Google Gemini

Configuring Routes and Middleware

Create a /generate route to communicate with the Gemini AI. Use the body-parser middleware to parse the request body:

const bodyParser = require("body-parser");

app.use(bodyParser.json());

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

Initializing Google Generative AI

In a controllers/index.js file, set up the Google Generative AI configuration:

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

dotenv.config();

const configuration = new GoogleGenerativeAI(process.env.API_KEY);
const modelId = "gemini-pro";
const model = configuration.getGenerativeModel({ model: modelId });
Enter fullscreen mode Exit fullscreen mode

Managing Conversation History

To track the conversation history, create an array and export it from the controller file:

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

Implementing the Controller Function

Create a generateResponse function to handle the /generate route and generate a response based on the prompt:

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();

    history.push(text);

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

Checking Response History

Create a route to check the response history:

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

Conclusion

In this article, we've demonstrated how to integrate Google Gemini into a Node.js application, leveraging the Google Generative AI SDK. By following these steps, you can harness the power of Gemini to enhance the capabilities of your Node.js projects. As you explore the possibilities of generative AI, consider experimenting with different prompts and scenarios to unlock new realms of creativity and innovation in your applications.

Let's connect: twitter.com/CypherHritam

Top comments (0)