پلاگین هوش مصنوعی Google Generative

افزونه Google Generative AI رابط هایی را برای مدل های Gemini گوگل از طریق 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 یا retriever استفاده کنید:

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 - و نمونه های ارائه شده شما برای ایجاد یک مدل تنظیم شده جدید استفاده می کند. مدل پایه ای که استفاده کردید را به خاطر بسپارید و شناسه مدل جدید را کپی کنید.

هنگام فراخوانی مدل تنظیم شده در 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 از ذخیره‌سازی متن پشتیبانی می‌کند که به مدل‌ها اجازه می‌دهد از محتوای ذخیره‌شده قبلی برای بهینه‌سازی عملکرد و کاهش تأخیر برای کارهای تکراری استفاده مجدد کنند. این ویژگی به ویژه برای جریان‌های مکالمه یا سناریوهایی که مدل به متن بزرگی به طور مداوم در چندین درخواست ارجاع می‌دهد مفید است.

نحوه استفاده از Context Caching

برای فعال کردن کش زمینه، مطمئن شوید که مدل شما از آن پشتیبانی می‌کند. به عنوان مثال، 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 را در اسناد آنها مشاهده کنید.