Desde o surgimento do ChatGPT e do Google Gemini, vimos muitos aplicativos sendo lançados aproveitando esses modelos. A técnica é chamada de arbitragem, um método que pega uma das múltiplas tarefas que a IA pode realizar, aprimora-a com prompts eficientes e, em seguida, fornece-a aos clientes como um recurso.
Este artigo será um guia passo a passo sobre como integrar o modelo Google Gemini em nosso aplicativo Node.js. Veremos como usar o Gemini-pro, que lida com texto generativo, e o Gemini-pro-vision, que lida com imagens.
Começaremos primeiro configurando o projeto e depois usá-lo em um exemplo próprio.
Requisitos
-
Node.js versão 18+
-
Conta Google AI Platform para obter nossa chave de API
Começando
Primeiro, crie um novo projeto Node.js dentro de uma pasta vazia:
mkdir gemini-node
cd gemini-node
npm init -y
Agora, instalaremos os pacotes necessários para o arquivo de ambiente e o Gemini SDK:
npm install dotenv @google/generative-ai
Configuração da chave API
Na sua Google AI Platform, clique no botão Obter chave de API para obter a chave de API e salve-a em seu arquivo de ambiente (.env) no diretório raiz:
API_KEY=YOUR_GEMINI_KEY
Crie uma nova pasta lib e crie um arquivo config.js dentro dela. Para a próxima etapa, exportaremos nossa chave API:
const dotenv = require("dotenv");
dotenv.config();
const API_KEY = process.env.API_KEY;
module.exports = { API_KEY };
Configuração do Gemini SDK
Nesta etapa, configuraremos nossos modelos para que possamos utilizá-los em nosso código. Dentro de nossa pasta lib, vamos criar 2 arquivos, gemini.js para manipulação de texto e gemini-vision.js para manipulação de imagens.
1- Google Gemini 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 a função exportada para gerar texto a partir de um prompt. Podemos usá-lo para construir um sistema de chat, tradução de textos e muitos outros casos de uso.
2- Visão Google Gemini
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 a função exportada para gerar texto a partir de uma imagem.
Construindo o aplicativo
Crie um novo arquivo index.js e cole este código:
const main = async () => {
console.log("Hello world!");
};
main();
Agora podemos importar nossas funções exportadas e usá-las para gerar texto, seja a partir de uma pergunta ou de um prompt de imagem.
A função usa um caminho de arquivo como argumento, então você precisará adicionar um arquivo de imagem à pasta do seu projeto para testá-lo.
Nosso código será convertido em:
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();
Qual é o próximo
Agora você pode usar ExpressJS para construir uma API em vez de um script. Você também pode pesquisar sobre as práticas recomendadas para escrever prompts para seus casos de uso.
Estes são alguns exemplos de aplicativos que você pode criar:
-
Gerador de metadados de SEO usando API Unsplash
-
Retome o revisor adicionando um script extra que obtém conteúdo do PDF
-
Escritor de biografia do Instagram a partir de uma imagem
Você está interessado em criar aplicativos melhores? Participe do nosso bootcamp de Desenvolvimento Web e aprenda como construir um produto totalmente funcional!