Wtyczka Google Generative AI udostępnia interfejsy modeli Gemini od Google za pomocą Gemini API lub Gemini API in Vertex AI.
Konfiguracja
Konfiguracja zależy od wybranego dostawcy:
AI od Google
Aby użyć tej wtyczki, zaimportuj pakiet googlegenai
i przekaż parametr googlegenai.GoogleAI
do WithPlugins()
w inicjalizatorze Genkit:
import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), ai.WithPlugins(&googlegenai.GoogleAI{}))
Aby korzystać z wtyczki, musisz mieć klucz interfejsu Gemini API, który możesz uzyskać w Google AI Studio.
Aby skonfigurować wtyczkę do używania klucza interfejsu API, wykonaj jedną z tych czynności:
Ustaw zmienną środowiskową
GEMINI_API_KEY
na swój klucz interfejsu API.Podczas inicjowania wtyczki podaj klucz interfejsu API:
ai.WithPlugins(&googlegenai.GoogleAI{APIKey: "YOUR_API_KEY"})
Nie umieszczaj jednak klucza API bezpośrednio w kodzie. Używaj tej funkcji tylko w połączeniu z usługą, taką jak Cloud Secret Manager lub podobną.
Vertex AI
Aby użyć tej wtyczki, zaimportuj pakiet googlegenai
i przekaż parametr googlegenai.VertexAI
do WithPlugins()
w inicjalizatorze Genkit:
import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), genkit.WithPlugins(&googlegenai.VertexAI{}))
Aby użyć wtyczki, musisz podać identyfikator projektu Google Cloud, region, w którym chcesz wysyłać żądania do interfejsu Vertex API, oraz dane logowania do projektu Google Cloud.
Domyślnie
googlegenai.VertexAI
pobiera identyfikator projektu Google Cloud z zmiennej środowiskowejGOOGLE_CLOUD_PROJECT
.Możesz też podać tę wartość bezpośrednio:
genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
Domyślnie
googlegenai.VertexAI
pobiera lokalizację interfejsu Vertex AI API z zmiennej środowiskowejGOOGLE_CLOUD_LOCATION
.Możesz też podać tę wartość bezpośrednio:
genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
Aby podać dane logowania do interfejsu API, musisz skonfigurować domyślne dane logowania aplikacji Google Cloud.
Aby określić swoje dane uwierzytelniające:
Jeśli uruchamiasz przepływ z środowiska Google Cloud (Cloud Functions, Cloud Run itp.), ta opcja jest ustawiana automatycznie.
W lokalnym środowisku programistycznym wykonaj te czynności:
gcloud auth application-default login
- W przypadku innych środowisk zapoznaj się z dokumentacją dotyczącą domyślnego uwierzytelniania aplikacji.
Sprawdź też, czy do konta przypisana jest rola uprawnień użytkownika Vertex AI (
roles/aiplatform.user
). Zapoznaj się z dokumentami dotyczącymi kontroli dostępu w Vertex AI.
Wykorzystanie
modele generatywne,
Aby uzyskać odwołanie do obsługiwanego modelu, podaj jego identyfikator jako googlegenai.GoogleAIModel
lub googlgenai.VertexAIModel
:
model := googlegenai.GoogleAIModel(g, "gemini-2.0-flash")
Możesz też utworzyć ModelRef
, który łączy nazwę modelu z jego konfiguracją:
modelRef := googlegenai.GoogleAIModelRef("gemini-2.0-flash", &googlegenai.GeminiConfig{
Temperature: 0.5,
MaxOutputTokens: 500,
// Other configuration...
})
Obsługiwane są te modele: gemini-1.5-pro
, gemini-1.5-flash
, gemini-2.0-pro
, gemini-2.0-flash
i inne modele eksperymentalne.
Odwołania do modelu zawierają metodę Generate()
, która wywołuje interfejs 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())
Więcej informacji znajdziesz w artykule Generowanie treści za pomocą modeli AI.
Modele wektora dystrybucyjnego
Aby uzyskać odwołanie do obsługiwanego modelu umieszczania, określ jego identyfikator w funkcji googlegenai.GoogleAIEmbedder
lub googlgenai.VertexAIEmbedder
:
embeddingModel := googlegenai.GoogleAIEmbedder(g, "text-embedding-004")
Obsługiwane są te modele:
AI od Google
text-embedding-004
iembedding-001
Vertex AI
textembedding-gecko@003
,textembedding-gecko@002
,textembedding-gecko@001
,text-embedding-004
,textembedding-gecko-multilingual@001
,text-multilingual-embedding-002
imultimodalembedding
Odwołania do dostawcy mają metodę Embed()
, która wywołuje interfejs AI od Google:
resp, err := ai.Embed(ctx, embeddingModel, ai.WithDocs(userInput))
if err != nil {
return err
}
Możesz też przekazać obiekt Embedder do metody Index()
indeksatora i metody Retrieve()
retrievera:
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
}
Więcej informacji znajdziesz w artykule Generowanie rozszerzone przez wyszukiwanie w zapisanych informacjach (RAG).