Wtyczka Google Generative AI

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 środowiskowej GOOGLE_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 środowiskowej GOOGLE_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.

    1. 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
    2. 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 i embedding-001

  • Vertex AI

    textembedding-gecko@003, textembedding-gecko@002, textembedding-gecko@001, text-embedding-004, textembedding-gecko-multilingual@001, text-multilingual-embedding-002 i multimodalembedding

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).