Plug-in Vertex AI

Le plug-in Vertex AI fournit des interfaces avec plusieurs modèles d'IA générative de Google via l'API Vertex AI.

Conditions requises

Si vous souhaitez exécuter localement des flux qui utilisent ce plug-in, vous devez installer l'outil Google Cloud CLI.

Configuration

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

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

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, vertexai.Init() récupère votre ID de projet Google Cloud à partir de la variable d'environnement GCLOUD_PROJECT.

    Vous pouvez également transmettre cette valeur directement:

    if err := vertexai.Init(ctx, &vertexai.Config{ProjectID: yourProjectID}); err != nil {
    	return err
    }
    
  • Par défaut, vertexai.Init() obtient l'emplacement de l'API Vertex AI à partir de la variable d'environnement GCLOUD_LOCATION.

    Vous pouvez également transmettre cette valeur directement :

    if err := vertexai.Init(ctx, &vertexai.Config{Location: "asia-south1"}); err != nil {
    	return err
    }
    
  • 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 :

langModel := vertexai.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 Vertex AI :

genRes, err := ai.GenerateText(ctx, langModel, 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 d'embedding compatible, spécifiez son identifiant :

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

Les modèles suivants sont acceptés: 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égrateur comportent une méthode Embed() qui appelle l'API Vertex 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).