Sinds de verschijning van ChatGPT en Google Gemini hebben we gezien dat er veel apps zijn gelanceerd die gebruik maken van deze modellen. De techniek wordt arbitrage genoemd, een methode die een van de vele taken die AI kan uitvoeren, uitbreidt met efficiënte aanwijzingen en deze vervolgens als functie aan klanten aanbiedt.
Dit artikel is een stapsgewijze handleiding voor het integreren van het Google Gemini-model in onze Node.js-applicatie. We zullen zien hoe u zowel Gemini-pro, dat generatieve tekst verwerkt, als Gemini-pro-vision, dat afbeeldingen verwerkt, kunt gebruiken.
We beginnen eerst met het opzetten van het project en gebruiken het vervolgens op een eigen voorbeeld.
Vereisten
-
Node.js versie 18+
-
Google AI Platform account om onze API-sleutel te verkrijgen
Aan de slag
Maak eerst een nieuw Node.js-project in een lege map:
mkdir gemini-node
cd gemini-node
npm init -y
Nu zullen we de vereiste pakketten voor het omgevingsbestand en de Gemini SDK installeren:
npm install dotenv @google/generative-ai
API-sleutel instellen
Klik op uw Google AI-platform op de knop API-sleutel ophalen om de API-sleutel op te halen en sla deze vervolgens op in uw omgevingsbestand (.env) in de hoofdmap:
API_KEY=YOUR_GEMINI_KEY
Maak een nieuwe lib-map en maak daarin een config.js-bestand. Voor de volgende stap exporteren we onze API-sleutel:
const dotenv = require("dotenv");
dotenv.config();
const API_KEY = process.env.API_KEY;
module.exports = { API_KEY };
Gemini SDK-installatie
In deze stap gaan we onze modellen instellen, zodat we ze in onze code kunnen gebruiken. Laten we in onze lib-map twee bestanden maken, gemini.js voor het verwerken van tekst en gemini-vision.js voor het verwerken van afbeeldingen.
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 };
We zullen de geëxporteerde functie gebruiken om tekst te genereren op basis van een prompt. We kunnen het gebruiken om een chatsysteem, tekstvertaling en nog veel meer gebruiksscenario's te bouwen.
2- Google Gemini-visie
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 };
We zullen de geëxporteerde functie gebruiken om tekst uit een afbeelding te genereren.
De app bouwen
Maak een nieuw index.js-bestand en plak deze code:
const main = async () => {
console.log("Hello world!");
};
main();
Nu kunnen we onze geëxporteerde functies importeren en deze gebruiken om tekst te genereren, hetzij op basis van een vraag of een afbeeldingsprompt.
De functie neemt een bestandspad als argument, dus u zult een afbeeldingsbestand aan uw projectmap moeten toevoegen om het te testen.
Onze code wordt omgezet in:
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();
Wat is het volgende
Nu kunt u ExpressJS gebruiken om een API te bouwen in plaats van een script. U kunt ook onderzoek doen naar best practices voor het schrijven van aanwijzingen voor uw gebruiksscenario's.
Dit zijn enkele voorbeelden van apps die u kunt bouwen:
-
SEO Meta-gegevensgenerator met behulp van Unsplash API
-
CV-reviewer door een extra script toe te voegen dat inhoud uit PDF haalt
-
Instagram-bioschrijver van een afbeelding
Ben je geïnteresseerd in het bouwen van betere apps? Doe mee aan onze Web Development-bootcamp en leer hoe u een volledig functioneel product kunt bouwen!