ChatGPT ve Google Gemini'nin ortaya çıkışından bu yana, bu modellerden yararlanan birçok uygulamanın başlatıldığını gördük. Bu tekniğe arbitraj adı veriliyor; yapay zekanın yapabileceği birçok görevden birini alan, onu etkili istemlerle geliştiren ve daha sonra bunu müşterilere bir özellik olarak sunan bir yöntem.
Bu makale Google Gemini modelini Node.js uygulamamıza nasıl entegre edebileceğiniz konusunda adım adım bir rehber olacaktır. Hem üretken metni işleyen Gemini-pro'nun hem de görüntüleri işleyen Gemini-pro-vision'un nasıl kullanılacağını göreceğiz.
Önce projeyi kurarak başlayacağız, sonra bunu kendi örneğimiz üzerinde kullanacağız.
Gereksinimler
-
Node.js sürüm 18+
-
API Anahtarımızı almak için Google AI Platform hesabı
Başlarken
Öncelikle boş bir klasörün içinde yeni bir Node.js projesi oluşturun:
mkdir gemini-node
cd gemini-node
npm init -y
Şimdi ortam dosyası ve Gemini SDK için gerekli paketleri kuracağız:
npm install dotenv @google/generative-ai
API Anahtarı Kurulumu
Google AI Platformunuzda, API Anahtarını almak için API Anahtarını Al düğmesini tıklayın ve ardından bunu kök dizindeki ortam dosyanıza (.env) kaydedin:
API_KEY=YOUR_GEMINI_KEY
Yeni bir lib klasörü oluşturun ve içinde bir config.js dosyası oluşturun, ardından bir sonraki adım için API Anahtarımızı dışa aktaracağız:
const dotenv = require("dotenv");
dotenv.config();
const API_KEY = process.env.API_KEY;
module.exports = { API_KEY };
Gemini SDK Kurulumu
Bu adımda modellerimizi kodumuzda kullanabileceğimiz şekilde ayarlayacağız. lib klasörümüzün içinde, metni işlemek için gemini.js ve görüntüleri işlemek için gemini-vision.js olmak üzere 2 dosya oluşturalım.
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 };
Bir istemden metin oluşturmak için dışa aktarılan işlevi kullanacağız. Bunu bir sohbet sistemi, metin çevirisi ve daha birçok kullanım durumu oluşturmak için kullanabiliriz.
2- Google Gemini Vizyonu
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 };
Bir görüntüden metin oluşturmak için dışa aktarılan işlevi kullanacağız.
Uygulamayı oluşturma
Yeni bir index.js dosyası oluşturun ve şu kodu yapıştırın:
const main = async () => {
console.log("Hello world!");
};
main();
Artık dışa aktarılan işlevlerimizi içe aktarabilir ve bunları bir sorudan veya bir görüntü isteminden metin oluşturmak için kullanabiliriz.
İşlev, argüman olarak bir dosya yolunu alır, bu nedenle onu test etmek için proje klasörünüze bir görüntü dosyası eklemeniz gerekecektir.
Kodumuz şuna dönüşecek:
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();
Sırada ne var
Artık komut dosyası yerine API oluşturmak için ExpressJS'yi kullanabilirsiniz. Ayrıca kullanım senaryolarınız için istem yazma konusunda en iyi uygulamaları da araştırabilirsiniz.
Bunlar, oluşturabileceğiniz uygulamalara ilişkin birkaç örnektir:
-
Unsplash API kullanan SEO Meta veri oluşturucu
-
İçeriği PDF'den alan fazladan bir komut dosyası ekleyerek incelemeyi sürdürün
-
Bir görüntüden Instagram biyografi yazarı
Daha iyi uygulamalar geliştirmekle ilgileniyor musunuz? Web Geliştirme eğitim kampımıza katılın ve tamamen işlevsel bir ürünü nasıl oluşturacağınızı öğrenin!