افزونه 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 را تنظیم کنید.
برای مشخص کردن اعتبار خود:
اگر جریان خود را از یک محیط Google Cloud (توابع Cloud، Cloud Run و غیره) اجرا می کنید، این به طور خودکار تنظیم می شود.
در محیط توسعه دهنده محلی خود، این کار را با اجرای:
gcloud auth application-default login
- برای محیط های دیگر، به اسناد اعتبارنامه پیش فرض برنامه مراجعه کنید.
علاوه بر این، مطمئن شوید که نقش 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) مراجعه کنید.