Plugin AI Generatif Google menyediakan antarmuka ke model Gemini Google melalui Gemini API.
Penginstalan
npm i --save @genkit-ai/googleai
Konfigurasi
Untuk menggunakan plugin ini, tentukan saat Anda menginisialisasi Genkit:
import { genkit } from 'genkit';
import { googleAI } from '@genkit-ai/googleai';
const ai = genkit({
plugins: [googleAI()],
});
Plugin ini memerlukan kunci API untuk Gemini API, yang dapat Anda peroleh dari Google AI Studio.
Konfigurasikan plugin untuk menggunakan kunci API Anda dengan melakukan salah satu hal berikut:
- Tetapkan variabel lingkungan
GOOGLE_GENAI_API_KEY
ke kunci API Anda. Tentukan kunci API saat Anda menginisialisasi plugin:
googleAI({ apiKey: yourKey });
Namun, jangan sematkan kunci API Anda secara langsung di dalam kode. Gunakan fitur ini saja bersama dengan layanan seperti Cloud Secret Manager atau yang serupa.
Penggunaan
Plugin ini mengekspor referensi secara statis ke model yang didukungnya:
import {
gemini15Flash,
gemini15Pro,
textEmbedding004,
} from '@genkit-ai/googleai';
Anda dapat menggunakan referensi ini untuk menentukan model yang digunakan generate()
:
const ai = genkit({
plugins: [googleAI()],
model: gemini15Flash,
});
const llmResponse = await ai.generate('Tell me a joke.');
atau menggunakan penyemat (mis. textEmbedding004
) dengan embed
atau pengambil:
const ai = genkit({
plugins: [googleAI()],
});
const embedding = await ai.embed({
embedder: textEmbedding004,
content: input,
});
Gemini Files API
Anda dapat menggunakan file yang diupload ke Gemini Files API dengan 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}}
]
});
Model yang disesuaikan
Anda dapat menggunakan model yang disesuaikan dengan Google Gemini API. Ikuti petunjuk dari Gemini API atau sesuaikan model menggunakan AI Studio.
Proses penyesuaian menggunakan model dasar—misalnya, Gemini 1.5 Flash—dan contoh yang Anda berikan untuk membuat model baru yang disesuaikan. Ingat model dasar yang Anda gunakan, dan salin ID model baru.
Saat memanggil model yang dioptimalkan di Genkit, gunakan model dasar sebagai parameter model
, dan teruskan ID model yang dioptimalkan sebagai bagian dari blok config
. Misalnya,
jika Anda menggunakan Gemini 1.5 Flash sebagai model dasar, dan mendapatkan ID model
tunedModels/my-example-model-apbm8oqbvuv2
, Anda dapat memanggilnya dengan:
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",
}),
});
Penyimpanan Cache Konteks
Plugin AI Generatif Google mendukung caching konteks, yang memungkinkan model menggunakan kembali konten yang di-cache sebelumnya untuk mengoptimalkan performa dan mengurangi latensi untuk tugas berulang. Fitur ini sangat berguna untuk alur percakapan atau skenario saat model mereferensikan isi teks yang besar secara konsisten di beberapa permintaan.
Cara Menggunakan Cache Konteks
Untuk mengaktifkan cache konteks, pastikan model Anda mendukungnya. Misalnya, gemini15Flash
dan gemini15Pro
adalah model yang mendukung penyimpanan dalam cache konteks.
Anda dapat menentukan mekanisme penyimpanan dalam aplikasi seperti ini:
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.',
});
Dalam penyiapan ini:
- messages
: Memungkinkan Anda meneruskan histori percakapan.
- metadata.cache.ttlSeconds
: Menentukan time-to-live (TTL) untuk meng-cache respons tertentu.
Contoh: Memanfaatkan Teks Besar dengan Konteks
Untuk aplikasi yang mereferensikan dokumen panjang, seperti War and Peace atau Lord of the Rings, Anda dapat menyusun kueri untuk menggunakan kembali konteks yang di-cache:
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.',
});
Menyimpan mode konten lainnya ke dalam cache
Model Gemini bersifat multi-modal, dan mode konten lainnya juga diizinkan untuk di-cache.
Misalnya, untuk menyimpan konten video berdurasi panjang ke dalam cache, Anda harus menguploadnya terlebih dahulu menggunakan pengelola file dari 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;
Sekarang Anda dapat mengonfigurasi cache dalam panggilan ke 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,
});
Model yang Didukung untuk Penyimpanan dalam Cache Konteks
Hanya model tertentu, seperti gemini15Flash
dan gemini15Pro
, yang mendukung penyimpanan dalam cache konteks. Jika model yang tidak didukung digunakan, error akan muncul, yang menunjukkan bahwa penyimpanan dalam cache tidak dapat diterapkan.
Bacaan Lebih Lanjut
Lihat informasi selengkapnya tentang penyimpanan dalam cache konteks di Google AI dalam dokumentasinya.