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
Next, install the necessary dependencies for our project:
npm install express body-parser @google/generative-ai dotenv
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
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}`);
});
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"
}
Now, start your Express server using the following command:
npm run start
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);
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 });
Managing Conversation History
To track the conversation history, create an array and export it from the controller file:
export const history = [];
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" });
}
};
Checking Response History
Create a route to check the response history:
app.get("/history", (req, res) => {
res.send(history);
});
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)