Plug-in Google IA générative

Le plug-in Google Generative AI fournit des interfaces avec les modèles Gemini de Google via l'API Gemini.

Configuration

Pour utiliser ce plug-in, importez le package googleai et appelez googleai.Init() :

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

Le plug-in nécessite une clé API pour l'API Gemini, que vous pouvez obtenir auprès de Google AI Studio.

Configurez le plug-in pour qu'il utilise votre clé API en procédant comme suit :

  • Définissez la variable d'environnement GOOGLE_GENAI_API_KEY sur votre clé API.

  • Spécifiez la clé API lorsque vous initialisez le plug-in :

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

    Toutefois, n'intégrez pas votre clé API directement dans le code. N'utilisez cette fonctionnalité qu'avec un service tel que Cloud Secret Manager ou un service similaire.

Utilisation

Modèles génératifs

Pour obtenir une référence à un modèle compatible, spécifiez son identifiant :

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

Les modèles suivants sont acceptés : gemini-1.0-pro, gemini-1.5-pro et gemini-1.5-flash.

Les références de modèle comportent une méthode Generate() qui appelle l'API Google AI :

text, err := ai.GenerateText(ctx, model, ai.WithTextPrompt("Tell me a joke."))
if err != nil {
	return err
}

Pour en savoir plus, consultez Générer du contenu.

Modèles d'embeddings

Pour obtenir une référence à un modèle de représentation vectorielle continue compatible, spécifiez son identifiant:

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

Les modèles suivants sont compatibles: text-embedding-004 et embedding-001.

Les références d'intégration comportent une méthode Embed() qui appelle l'API Google AI :

embedRes, err := ai.Embed(ctx, embeddingModel, ai.WithEmbedText(userInput))
if err != nil {
	return err
}

Vous pouvez également transmettre un Embedder à la méthode Index() d'un indexeur et à la méthode Retrieve() d'un récupérateur :

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
}

Pour en savoir plus, consultez la section Génération augmentée de récupération (RAG).