Google Üretken Yapay Zeka eklentisi

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.