ปลั๊กอิน Generative AI ของ Google มีอินเทอร์เฟซสำหรับโมเดล 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.');
หรือใช้เครื่องมือฝัง (เช่น 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",
}),
});
การแคชบริบท
ปลั๊กอิน Generative AI ของ Google รองรับการแคชบริบท ซึ่งช่วยให้โมเดลใช้เนื้อหาที่แคชไว้ก่อนหน้านี้ซ้ำเพื่อเพิ่มประสิทธิภาพและลดเวลาในการตอบสนองสำหรับงานที่ต้องทำซ้ำๆ ได้ ฟีเจอร์นี้มีประโยชน์อย่างยิ่งสำหรับขั้นตอนการสนทนาหรือสถานการณ์ที่โมเดลอ้างอิงข้อความจำนวนมากอย่างสอดคล้องกันในคำขอหลายรายการ
วิธีใช้การแคชบริบท
หากต้องการเปิดใช้การแคชบริบท โปรดตรวจสอบว่าโมเดลของคุณรองรับการแคช เช่น 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
: ระบุ Time to Live (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
หากใช้รูปแบบที่ระบบไม่รองรับ ระบบจะแสดงข้อผิดพลาดที่ระบุว่าใช้การแคชไม่ได้
อ่านเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับการแคชบริบทใน AI ของ Google ในเอกสารประกอบ