Desde la aparición de ChatGPT y Google Gemini, hemos visto el lanzamiento de muchas aplicaciones aprovechando estos modelos. La técnica se llama arbitraje, un método que toma una de las múltiples tareas que la IA puede realizar, la mejora con indicaciones eficientes y luego se la ofrece a los clientes como una característica.
Este artículo será una guía paso a paso sobre cómo integrar el modelo Google Gemini en nuestra aplicación Node.js. Veremos cómo usar Gemini-pro que maneja texto generativo y Gemini-pro-vision que maneja imágenes.
Primero comenzaremos configurando el proyecto y luego lo usaremos en nuestro propio ejemplo.
Requisitos
-
Node.js versión 18+
-
Cuenta Google AI Platform para obtener nuestra clave API
Empezando
Primero, cree un nuevo proyecto Node.js dentro de una carpeta vacía:
mkdir gemini-node
cd gemini-node
npm init -y
Ahora, instalaremos los paquetes necesarios para el archivo de entorno y el SDK de Gemini:
npm install dotenv @google/generative-ai
Configuración de clave API
En su Google AI Platform, haga clic en el botón Obtener clave API para obtener la clave API y luego guárdela en su archivo de entorno (.env) en el directorio raíz:
API_KEY=YOUR_GEMINI_KEY
Cree una nueva carpeta lib y cree un archivo config.js dentro de ella, luego, para el siguiente paso, exportaremos nuestra clave API:
const dotenv = require("dotenv");
dotenv.config();
const API_KEY = process.env.API_KEY;
module.exports = { API_KEY };
Configuración del SDK de Gemini
En este paso, configuraremos nuestros modelos para poder usarlos en nuestro código. Dentro de nuestra carpeta lib, creemos 2 archivos, gemini.js para manejar texto y gemini-vision.js para manejar imágenes.
1- Google Géminis Pro
const { GoogleGenerativeAI } = require("@google/generative-ai");
const { API_KEY } = require("./config");
const googleAI = new GoogleGenerativeAI(API_KEY);
const geminiConfig = {
temperature: 0.9,
topP: 1,
topK: 1,
maxOutputTokens: 4096,
};
const geminiModel = googleAI.getGenerativeModel({
model: "gemini-pro",
geminiConfig,
});
const generateText = async (prompt) => {
try {
const result = await geminiModel.generateContent(prompt);
const response = result.response;
return response.text();
} catch (error) {
console.log("response error", error);
}
};
module.exports = { generateText };
Usaremos la función exportada para generar texto a partir de un mensaje. Podemos usarlo para construir un sistema de chat, traducción de texto y muchos más casos de uso.
2- Visión de Géminis de Google
const { GoogleGenerativeAI } = require("@google/generative-ai");
const { API_KEY } = require("./config");
const fs = require("fs");
const googleAI = new GoogleGenerativeAI(API_KEY);
const geminiConfig = {
temperature: 0.4,
topP: 1,
topK: 32,
maxOutputTokens: 4096,
};
const geminiModel = googleAI.getGenerativeModel({
model: "gemini-pro-vision",
geminiConfig,
});
const interactWithImage = async (filePath) => {
try {
const imageFile = fs.readFileSync(filePath);
const imageBase64 = imageFile.toString("base64");
const promptConfig = [
{ text: "Generate a caption from this image" },
{
inlineData: {
mimeType: "image/jpeg",
data: imageBase64,
},
},
];
const result = await geminiModel.generateContent({
contents: [{ role: "user", parts: promptConfig }],
});
return result.response.text();
} catch (error) {
console.log("response error", error);
}
};
module.exports = { interactWithImage };
Usaremos la función exportada para generar texto a partir de una imagen.
Construyendo la aplicación
Cree un nuevo archivo index.js y pegue este código:
const main = async () => {
console.log("Hello world!");
};
main();
Ahora, podemos importar nuestras funciones exportadas y usarlas para generar texto, ya sea a partir de una pregunta o una imagen.
La función toma una ruta de archivo como argumento, por lo que deberá agregar un archivo de imagen a la carpeta de su proyecto para probarlo.
Nuestro código se convertirá en:
const { generateText } = require("./lib/gemini");
const { interactWithImage } = require("./lib/gemini-vision");
const path = require("path");
const main = async () => {
// Text Generation
let textFromPrompt = await generateText(
"tell me about bootcamps in a sentence"
);
console.log(textFromPrompt);
// Caption Generation
const directoryName = path.join(__dirname, "fish.jpg");
let captionFromImage = await interactWithImage(directoryName);
console.log(captionFromImage);
};
main();
Que sigue
Ahora puede utilizar ExpressJS para crear una API en lugar de un script. También puede investigar sobre las mejores prácticas para escribir indicaciones para sus casos de uso.
Estos son algunos ejemplos de aplicaciones que puedes crear:
-
Generador de metadatos SEO usando API Unsplash
-
Reanudar el revisor agregando un script adicional que obtiene contenido del PDF
-
Redactor de biografía de Instagram a partir de una imagen.
¿Estás interesado en crear mejores aplicaciones? Únase a nuestro bootcamp de desarrollo web y aprenda cómo crear un producto completamente funcional.