Wtyczka Google Generative AI

Wtyczka Google Generative AI udostępnia interfejsy modeli Gemini od Google za pomocą Gemini API.

Konfiguracja

Aby użyć tej wtyczki, zaimportuj pakiet googleai i wywołaj googleai.Init():

import "github.com/firebase/genkit/go/plugins/googleai"
if err := googleai.Init(ctx, nil); err != nil {
    return err
}

Wtyczka wymaga klucza API dla Gemini API, który można uzyskać z Google AI Studio

Skonfiguruj wtyczkę do korzystania z klucza interfejsu API, wykonując jedną z tych czynności:

  • Ustaw zmienną środowiskową GOOGLE_GENAI_API_KEY na swój klucz interfejsu API.

  • Podaj klucz interfejsu API podczas inicjowania wtyczki:

    if err := googleai.Init(ctx, &googleai.Config{APIKey: yourKey}); err != nil {
      return err
    }
    

    Nie umieszczaj jednak klucza interfejsu API bezpośrednio w kodzie. Używaj tylko tej funkcji w połączeniu z usługą taką jak Cloud Secret Manager lub podobną.

Wykorzystanie

Modele generatywne

Aby uzyskać odniesienie do obsługiwanego modelu, podaj jego identyfikator:

langModel := googleai.Model("gemini-1.5-pro")

Obsługiwane są te modele: gemini-1.0-pro, gemini-1.5-pro i gemini-1.5-flash

Odwołania do modelu zawierają metodę Generate(), która wywołuje interfejs API AI od Google:

genRes, err := langModel.Generate(ctx, ai.NewGenerateRequest(
    nil, ai.NewUserTextMessage("Tell me a joke.")), nil)
if err != nil {
    return err
}

Więcej informacji znajdziesz w artykule Generowanie treści.

Umieszczanie modeli

Aby uzyskać odwołanie do obsługiwanego modelu wektora dystrybucyjnego, podaj jego identyfikator:

embeddingModel := googleai.Embedder("text-embedding-004")

Obsługiwane są te modele: text-embedding-004 i embedding-001.

Odwołania do umieszczania na stronie zawierają metodę Embed(), która wywołuje interfejs API AI od Google:

embedRes, err := embeddingModel.Embed(ctx, &ai.EmbedRequest{
    Documents: []*ai.Document{ai.DocumentFromText(userInput, nil)},
})
if err != nil {
    return err
}

Element Embedder można również przekazać do metody Index() indeksującego i metody retrievera Metoda Retrieve():

if err := myIndexer.Index(ctx, &ai.IndexerRequest{Documents: docsToIndex}); err != nil {
    return err
}
retrieveRes, err := myRetriever.Retrieve(ctx, &ai.RetrieverRequest{
    Document: ai.DocumentFromText(userInput, nil),
})
if err != nil {
    return err
}

Więcej informacji znajdziesz w artykule Generowanie rozszerzone przez wyszukiwanie w zapisanych informacjach (RAG).