הפלאגין של Google Generative AI מספק ממשקים למודלים של Gemini מבית Google דרך Gemini API.
התקנה
npm i --save @genkit-ai/googleai
תצורה
כדי להשתמש בפלאגין הזה, צריך לציין אותו כשאתם מאתחלים את Genkit:
import { genkit } from 'genkit';
import { googleAI } from '@genkit-ai/googleai';
const ai = genkit({
plugins: [googleAI()],
});
כדי להשתמש בפלאגין, צריך מפתח API ל-Gemini API. אפשר לקבל אותו מ-Google AI Studio.
מגדירים את הפלאגין כך שישתמש במפתח ה-API שלכם באחת מהדרכים הבאות:
- מגדירים את משתנה הסביבה
GOOGLE_GENAI_API_KEY
למפתח ה-API. מציינים את מפתח ה-API כשמאתחלים את הפלאגין:
googleAI({ apiKey: yourKey });
עם זאת, אל תטמיעו את מפתח ה-API ישירות בקוד! מומלץ להשתמש בתכונה הזו רק בשילוב עם שירות כמו Cloud Secret Manager או שירות דומה.
שימוש
הפלאגין הזה מייצא באופן סטטי הפניות למודלים הנתמכים שלו:
import {
gemini15Flash,
gemini15Pro,
textEmbedding004,
} from '@genkit-ai/googleai';
אפשר להשתמש בהפניות האלה כדי לציין את המודל שבו generate()
משתמש:
const ai = genkit({
plugins: [googleAI()],
model: gemini15Flash,
});
const llmResponse = await ai.generate('Tell me a joke.');
או להשתמש ב-Embedders (למשל textEmbedding004
) עם embed
או עם פודים:
const ai = genkit({
plugins: [googleAI()],
});
const embedding = await ai.embed({
embedder: textEmbedding004,
content: input,
});
Gemini Files API
אתם יכולים להשתמש בקבצים שהועלו ל-Gemini Files API באמצעות Genkit:
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}}
]
});
מודלים שעברו כוונון עדין
אפשר להשתמש במודלים שמותאמים אישית באמצעות Google Gemini API. פועלים לפי ההוראות ב-Gemini API או משדרגים את המודל באמצעות AI Studio.
בתהליך ההתאמה משתמשים במודל בסיס – לדוגמה, Gemini 1.5 Flash – ובדוגמאות שסיפקתם כדי ליצור מודל חדש מותאם. חשוב לזכור את מודל הבסיס שבו השתמשתם, ולהעתיק את המזהה של המודל החדש.
כשקוראים למודל המכוונן ב-Genkit, משתמשים במודל הבסיס בתור הפרמטר model
, ומעבירים את המזהה של המודל המכוונן כחלק מהבלוק config
. לדוגמה, אם השתמשתם ב-Gemini 1.5 Flash בתור המודל הבסיסי וקיבלתם את מזהה המודל tunedModels/my-example-model-apbm8oqbvuv2
, תוכלו להפעיל אותו באמצעות:
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",
}),
});
שמירת הקשר במטמון
הפלאגין של Google Generative AI תומך באחסון בזיכרון של הקשר, שמאפשר למודלים לעשות שימוש חוזר בתוכן שנשמר בעבר בזיכרון כדי לבצע אופטימיזציה של הביצועים ולצמצם את זמן האחזור במשימות חוזרות. התכונה הזו שימושית במיוחד בתרחישים של תהליכי שיחה או בתרחישים שבהם המודל מפנה לגוף טקסט גדול באופן עקבי במספר בקשות.
איך משתמשים במטמון הקשר
כדי להפעיל שמירת הקשר במטמון, צריך לוודא שהמודל תומך בכך. לדוגמה, gemini15Flash
ו-gemini15Pro
הם מודלים שתומכים בשמירת הקשר במטמון.
אפשר להגדיר מנגנון מטמון באפליקציה באופן הבא:
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.',
});
בהגדרה הזו:
- messages
: מאפשרת להעביר את היסטוריית השיחות.
- metadata.cache.ttlSeconds
: קובע את אורך החיים (TTL) לשמירת תגובה ספציפית במטמון.
דוגמה: ניצול טקסטים ארוכים עם הקשר
באפליקציות שמתייחסות למסמכים ארוכים, כמו מלחמה ושלום או שר הטבעות, אפשר לבנות את השאילתות כך שיעשה שימוש חוזר בהקשרים שנשמרו במטמון:
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.',
});
שמירת תוכן במטמון בפורמטים אחרים
המודלים של Gemini הם מולטימודליים, ומותר גם לשמור במטמון מודלים אחרים של תוכן.
לדוגמה, כדי לשמור בזיכרון קטע ארוך של תוכן וידאו, קודם צריך להעלות אותו באמצעות מנהל הקבצים של Google AI SDK:
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;
עכשיו אפשר להגדיר את המטמון בשיחות ל-ai.generate
:
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,
});
מודלים נתמכים לשמירת הקשר במטמון
רק מודלים ספציפיים, כמו gemini15Flash
ו-gemini15Pro
, תומכים בשמירת הקשר במטמון. אם משתמשים במודל שאינו נתמך, תופיע שגיאה עם ההודעה 'לא ניתן להשתמש במטמון'.
מקורות מידע נוספים
מידע נוסף על שמירת הקשר במטמון ב-Google AI זמין במסמכי העזרה שלהם.