Google Üretken Yapay Zeka eklentisi, Gemini API aracılığıyla Google'ın Gemini modellerine arayüz sağlar.
Kurulum
npm i --save @genkit-ai/googleai
Yapılandırma
Bu eklentiyi kullanmak için Genkit'i ilk kez başlattığınızda belirtin:
import { genkit } from 'genkit';
import { googleAI } from '@genkit-ai/googleai';
const ai = genkit({
plugins: [googleAI()],
});
Eklenti, Gemini API için bir API anahtarı gerektirir. Bu anahtarı Google AI Studio'dan alabilirsiniz.
Aşağıdakilerden birini yaparak eklentiyi API anahtarınızı kullanacak şekilde yapılandırın:
GOOGLE_GENAI_API_KEY
ortam değişkenini API anahtarınıza ayarlayın.Eklentiyi başlatırken API anahtarını belirtin:
googleAI({ apiKey: yourKey });
Ancak API anahtarınızı doğrudan koda yerleştirmeyin. Bu özelliği yalnızca Cloud Secret Manager veya benzeri bir hizmetle birlikte kullanın.
Kullanım
Bu eklenti, desteklenen modellerine ait referansları statik olarak dışa aktarır:
import {
gemini15Flash,
gemini15Pro,
textEmbedding004,
} from '@genkit-ai/googleai';
generate()
'ün hangi modeli kullandığını belirtmek için bu referansları kullanabilirsiniz:
const ai = genkit({
plugins: [googleAI()],
model: gemini15Flash,
});
const llmResponse = await ai.generate('Tell me a joke.');
veya yerleşik oynatıcıları (ör. textEmbedding004
) ile embed
veya retriever'ler:
const ai = genkit({
plugins: [googleAI()],
});
const embedding = await ai.embed({
embedder: textEmbedding004,
content: input,
});
Gemini Files API
Gemini Files API'ye yüklenen dosyaları Genkit ile kullanabilirsiniz:
import { GoogleAIFileManager } from '@google/generative-ai/server';
import { genkit } from 'genkit';
import { googleAI } from '@genkit-ai/googleai';
const ai = genkit({
plugins: [googleAI()],
});
const fileManager = new GoogleAIFileManager(process.env.GOOGLE_GENAI_API_KEY);
const uploadResult = await fileManager.uploadFile(
'path/to/file.jpg',
{
mimeType: 'image/jpeg',
displayName: 'Your Image',
}
);
const response = await ai.generate({
model: gemini15Flash,
prompt: [
{text: 'Describe this image:'},
{media: {contentType: uploadResult.file.mimeType, url: uploadResult.file.uri}}
]
});
İnce ayar yapılmış modeller
Google Gemini API ile hassas ayarlanmış modelleri kullanabilirsiniz. Gemini API'deki talimatları uygulayın veya AI Studio'yu kullanarak bir modelde ince ayar yapın.
Ayarlama işlemi, yeni bir ayarlanmış model oluşturmak için bir temel model (ör. Gemini 1.5 Flash) ve sağladığınız örnekleri kullanır. Kullandığınız temel modeli hatırlayın ve yeni modelin kimliğini kopyalayın.
Genkit'te ayarlanmış modeli çağırırken model
parametresi olarak temel modeli kullanın ve ayarlanmış modelin kimliğini config
bloğunun bir parçası olarak iletin. Örneğin, temel model olarak Gemini 1.5 Flash'ı kullandıysanız ve tunedModels/my-example-model-apbm8oqbvuv2
model kimliğini aldıysanız bunu şu şekilde çağırabilirsiniz:
const ai = genkit({
plugins: [googleAI()],
});
const llmResponse = await ai.generate({
prompt: `Suggest an item for the menu of fish themed restruant`,
model: gemini15Flash.withConfig({
version: "tunedModels/my-example-model-apbm8oqbvuv2",
}),
});
Bağlam Önbelleğe Alma
Google Üretken Yapay Zeka eklentisi, modellerin performansı optimize etmek ve tekrarlanan görevlerde gecikmeyi azaltmak için daha önce önbelleğe alınmış içeriği yeniden kullanmasına olanak tanıyan bağlam önbelleğe alma özelliğini destekler. Bu özellik, özellikle modelin birden fazla istekte tutarlı bir şekilde büyük bir metin bölümüne referans verdiği sohbet akışları veya senaryolar için faydalıdır.
Bağlam Önbelleğe Alma özelliğini kullanma
Bağlam önbelleğe alma özelliğini etkinleştirmek için modelinizin bu özelliği desteklediğinden emin olun. Örneğin, gemini15Flash
ve gemini15Pro
, bağlam önbelleğe almayı destekleyen modellerdir.
Uygulamanızda aşağıdaki gibi bir önbelleğe alma mekanizması tanımlayabilirsiniz:
const ai = genkit({
plugins: [googleAI()],
});
const llmResponse = await ai.generate({
messages: [
{
role: 'user',
content: [{ text: 'Here is the relevant text from War and Peace.' }],
},
{
role: 'model',
content: [
{
text: 'Based on War and Peace, here is some analysis of Pierre Bezukhov’s character.',
},
],
metadata: {
cache: {
ttlSeconds: 300, // Cache this message for 5 minutes
},
},
},
],
model: gemini15Flash,
config: {
version: 'gemini-1.5-flash-001', // Only 001 currently supports context caching
},
prompt: 'Describe Pierre’s transformation throughout the novel.',
});
Bu kurulumda:
- messages
: İleti dizisi geçmişini iletmenize olanak tanır.
- metadata.cache.ttlSeconds
: Belirli bir yanıtın önbelleğe alınması için geçerlilik süresini (TTL) belirtir.
Örnek: Bağlamla Büyük Metinlerden Yararlanma
Savaş ve Barış veya Yüzüklerin Efendisi gibi uzun belgelere referans veren uygulamalar için sorgularınızı, önbelleğe alınmış bağlamları yeniden kullanacak şekilde yapılandırabilirsiniz:
const fs = require('fs/promises');
const textContent = await fs.readFile('path/to/war_and_peace.txt', 'utf-8');
const llmResponse = await ai.generate({
messages: [
{
role: 'user',
content: [{ text: textContent }], // Include the large text as context
},
{
role: 'model',
content: [
{
text: 'This analysis is based on the provided text from War and Peace.',
},
],
metadata: {
cache: {
ttlSeconds: 300, // Cache the response to avoid reloading the full text
},
},
},
],
model: gemini15Flash,
config: {
version: 'gemini-1.5-flash-001', // Only 001 currently supports context caching
},
prompt: 'Analyze the relationship between Pierre and Natasha.',
});
Diğer içerik modlarını önbelleğe alma
Gemini modelleri çok modlu olduğundan diğer içerik modlarının da önbelleğe alınmasına izin verilir.
Örneğin, uzun bir video içeriğini önbelleğe almak için önce Google AI SDK'sındaki dosya yöneticisini kullanarak yüklemeniz gerekir:
import { GoogleAIFileManager } from '@google/generative-ai/server';
const fileManager = new GoogleAIFileManager(
process.env.GOOGLE_GENAI_API_KEY
);
// Upload video to Google AI using the Gemini Files API
const uploadResult = await fileManager.uploadFile(videoFilePath, {
mimeType: 'video/mp4', // Adjust according to the video format
displayName: 'Uploaded Video for Analysis',
});
const fileUri = uploadResult.file.uri;
Artık aramalarınızdaki önbelleği ai.generate
olarak yapılandırabilirsiniz:
const analyzeVideoResponse = await ai.generate({
messages: [
{
role: 'user',
content: [
{
media: {
url: fileUri, // Use the uploaded file URL
contentType: 'video/mp4',
},
},
],
},
{
role: 'model',
content: [
{
text: 'This video seems to contain several key moments. I will analyze it now and prepare to answer your questions.',
},
],
// Everything up to (including) this message will be cached.
metadata: {
cache: true,
},
},
],
config: {
version: 'gemini-1.5-flash-001', // Only 001 versions support context caches
},
model: gemini15Flash,
prompt: query,
});
Bağlam Önbelleğe Alma İçin Desteklenen Modeller
Bağlam önbelleğe alma özelliği yalnızca gemini15Flash
ve gemini15Pro
gibi belirli modellerde desteklenir. Desteklenmeyen bir model kullanılırsa önbelleğe alma işleminin uygulanamayacağını belirten bir hata meydana gelir.
Daha fazla bilgi
Google Yapay Zeka'nın dokümanlarına göz atarak bağlam önbelleğe alma hakkında daha fazla bilgi edinebilirsiniz.