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:

model := googleai.Model("gemini-1.5-flash")

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:

text, err := ai.GenerateText(ctx, model, ai.WithTextPrompt("Tell me a joke."))
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 := ai.Embed(ctx, embeddingModel, ai.WithEmbedText(userInput))
if err != nil {
	return err
}

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

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

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