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

افزونه Google Generative AI رابط هایی را برای مدل های Gemini گوگل از طریق Gemini API یا Gemini API در Vertex AI فراهم می کند.

پیکربندی

پیکربندی بستگی به ارائه دهنده ای دارد که انتخاب می کنید:

هوش مصنوعی گوگل

برای استفاده از این افزونه، بسته googlegenai را وارد کنید و googlegenai.GoogleAI را به WithPlugins() در Genkit Initializer ارسال کنید:

import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), ai.WithPlugins(&googlegenai.GoogleAI{}))

این افزونه به یک کلید API برای Gemini API نیاز دارد که می‌توانید آن را از Google AI Studio دریافت کنید.

با انجام یکی از موارد زیر، افزونه را برای استفاده از کلید API خود پیکربندی کنید:

  • متغیر محیطی GEMINI_API_KEY را روی کلید API خود تنظیم کنید.

  • هنگامی که افزونه را مقداردهی اولیه می کنید، کلید API را مشخص کنید:

    ai.WithPlugins(&googlegenai.GoogleAI{APIKey: "YOUR_API_KEY"})
    

    با این حال، کلید API خود را مستقیماً در کد قرار ندهید! از این ویژگی فقط در ارتباط با سرویسی مانند Cloud Secret Manager یا موارد مشابه استفاده کنید.

Vertex AI

برای استفاده از این افزونه، بسته googlegenai را وارد کنید و googlegenai.VertexAI به WithPlugins() در Genkit Initializer ارسال کنید:

import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), genkit.WithPlugins(&googlegenai.VertexAI{}))

این افزونه از شما می‌خواهد که شناسه پروژه Google Cloud، منطقه‌ای که می‌خواهید درخواست‌های Vertex API را به آن ارسال کنید و اعتبار پروژه Google Cloud خود را مشخص کنید.

  • به طور پیش فرض، googlegenai.VertexAI شناسه پروژه Google Cloud شما را از متغیر محیطی GOOGLE_CLOUD_PROJECT دریافت می کند.

    همچنین می توانید این مقدار را مستقیماً ارسال کنید:

    genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
    
  • به طور پیش‌فرض، googlegenai.VertexAI مکان API Vertex AI را از متغیر محیطی GOOGLE_CLOUD_LOCATION دریافت می‌کند.

    همچنین می توانید این مقدار را مستقیماً ارسال کنید:

    genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
    
  • برای ارائه اعتبارنامه API، باید اعتبارنامه پیش‌فرض Google Cloud Application را تنظیم کنید.

    1. برای مشخص کردن اعتبار خود:

      • اگر جریان خود را از یک محیط Google Cloud (توابع Cloud، Cloud Run و غیره) اجرا می کنید، این به طور خودکار تنظیم می شود.

      • در محیط توسعه دهنده محلی خود، این کار را با اجرای:

      gcloud auth application-default login
    2. علاوه بر این، مطمئن شوید که نقش Vertex AI User IAM ( roles/aiplatform.user ) به حساب داده شده است. اسناد کنترل دسترسی Vertex AI را ببینید.

استفاده

مدل های مولد

برای دریافت ارجاع به مدل پشتیبانی شده، شناسه آن را در googlegenai.GoogleAIModel یا googlgenai.VertexAIModel مشخص کنید:

model := googlegenai.GoogleAIModel(g, "gemini-2.0-flash")

از طرف دیگر، می توانید یک ModelRef ایجاد کنید که نام مدل را با پیکربندی آن جفت می کند:

modelRef := googlegenai.GoogleAIModelRef("gemini-2.0-flash", &googlegenai.GeminiConfig{
    Temperature: 0.5,
    MaxOutputTokens: 500,
    // Other configuration...
})

مدل‌های زیر پشتیبانی می‌شوند: gemini-1.5-pro ، gemini-1.5-flash ، gemini-2.0-pro ، gemini-2.0-flash و سایر مدل‌های آزمایشی.

مراجع مدل دارای یک متد Generate() هستند که Google API را فراخوانی می کند:

resp, err := genkit.Generate(ctx, g, ai.WithModel(modelRef), ai.WithPrompt("Tell me a joke."))
if err != nil {
      return err
}

log.Println(resp.Text())

برای اطلاعات بیشتر به تولید محتوا با مدل های هوش مصنوعی مراجعه کنید.

مدل های تعبیه شده

برای دریافت ارجاع به یک مدل جاسازی پشتیبانی شده، شناسه آن را در googlegenai.GoogleAIEmbedder یا googlgenai.VertexAIEmbedder مشخص کنید:

embeddingModel := googlegenai.GoogleAIEmbedder(g, "text-embedding-004")

مدل های زیر پشتیبانی می شوند:

  • هوش مصنوعی گوگل

    text-embedding-004 و embedding-001

  • Vertex AI

    textembedding-gecko@003 ، textembedding-gecko@002 ، textembedding-gecko@001 ، text-embedding-004 ، textembedding-gecko-multilingual@001 ، text-multilingual-embedding-002 ، و چند multimodalembedding

مراجع Embedder دارای یک روش Embed() هستند که Google AI API را فراخوانی می کند:

resp, err := ai.Embed(ctx, embeddingModel, ai.WithDocs(userInput))
if err != nil {
      return err
}

همچنین می توانید یک Embedder را به متد Index() indexer و متد Retrieve() retriever ارسال کنید:

if err := ai.Index(ctx, myIndexer, ai.WithDocs(docsToIndex...)); err != nil {
      return err
}
resp, err := ai.Retrieve(ctx, myRetriever, ai.WithDocs(userInput))
if err != nil {
      return err
}

برای اطلاعات بیشتر به نسل افزوده شده بازیابی (RAG) مراجعه کنید.