Plug-in Google IA générative

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

Configuration

La configuration dépend du fournisseur que vous choisissez:

IA de Google

Pour utiliser ce plug-in, importez le package googlegenai et transmettez googlegenai.GoogleAI à WithPlugins() dans l'initialiseur Genkit:

import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), ai.WithPlugins(&googlegenai.GoogleAI{}))

Le plug-in nécessite une clé API pour l'API Gemini, que vous pouvez obtenir dans 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 GEMINI_API_KEY sur votre clé API.

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

    ai.WithPlugins(&googlegenai.GoogleAI{APIKey: "YOUR_API_KEY"})
    

    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.

Vertex AI

Pour utiliser ce plug-in, importez le package googlegenai et transmettez googlegenai.VertexAI à WithPlugins() dans l'initialiseur Genkit:

import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), genkit.WithPlugins(&googlegenai.VertexAI{}))

Le plug-in vous demande de spécifier l'ID de votre projet Google Cloud, la région à laquelle vous souhaitez envoyer des requêtes d'API Vertex et les identifiants de votre projet Google Cloud.

  • Par défaut, googlegenai.VertexAI récupère votre ID de projet Google Cloud à partir de la variable d'environnement GOOGLE_CLOUD_PROJECT.

    Vous pouvez également transmettre cette valeur directement:

    genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
    
  • Par défaut, googlegenai.VertexAI obtient l'emplacement de l'API Vertex AI à partir de la variable d'environnement GOOGLE_CLOUD_LOCATION.

    Vous pouvez également transmettre cette valeur directement:

    genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
    
  • Pour fournir des identifiants d'API, vous devez configurer les identifiants par défaut de l'application Google Cloud.

    1. Pour spécifier vos identifiants:

      • Si vous exécutez votre flux à partir d'un environnement Google Cloud (Cloud Functions, Cloud Run, etc.), cette valeur est définie automatiquement.

      • Dans votre environnement de développement local, exécutez la commande suivante:

      gcloud auth application-default login
    2. En outre, assurez-vous que le compte dispose du rôle IAM Utilisateur Vertex AI (roles/aiplatform.user). Consultez la documentation sur le contrôle des accès dans Vertex AI.

Utilisation

Modèles génératifs

Pour obtenir une référence à un modèle compatible, spécifiez son identifiant sur googlegenai.GoogleAIModel ou googlgenai.VertexAIModel:

model := googlegenai.GoogleAIModel(g, "gemini-2.0-flash")

Vous pouvez également créer un ModelRef qui associe le nom du modèle à sa configuration:

modelRef := googlegenai.GoogleAIModelRef("gemini-2.0-flash", &googlegenai.GeminiConfig{
    Temperature: 0.5,
    MaxOutputTokens: 500,
    // Other configuration...
})

Les modèles suivants sont acceptés: gemini-1.5-pro, gemini-1.5-flash, gemini-2.0-pro, gemini-2.0-flash et d'autres modèles expérimentaux.

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

resp, err := genkit.Generate(ctx, g, ai.WithModel(modelRef), ai.WithPrompt("Tell me a joke."))
if err != nil {
      return err
}

log.Println(resp.Text())

Pour en savoir plus, consultez Générer du contenu avec des modèles d'IA.

Modèles d'embeddings

Pour obtenir une référence à un modèle d'embedding compatible, spécifiez son identifiant sur googlegenai.GoogleAIEmbedder ou googlgenai.VertexAIEmbedder:

embeddingModel := googlegenai.GoogleAIEmbedder(g, "text-embedding-004")

Les modèles suivants sont compatibles :

  • IA de Google

    text-embedding-004 et embedding-001

  • Vertex AI

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

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

resp, err := ai.Embed(ctx, embeddingModel, ai.WithDocs(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.WithDocs(docsToIndex...)); err != nil {
      return err
}
resp, err := ai.Retrieve(ctx, myRetriever, ai.WithDocs(userInput))
if err != nil {
      return err
}

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