Plugin AI Generatif Google

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.