Complemento de Vertex AI

El complemento de Vertex AI proporciona interfaces para varios modelos de IA generativa de Google a través de la API de Vertex AI.

Requisitos

Si quieres ejecutar localmente flujos que usan este complemento, necesitas la Tener instalada la herramienta Google Cloud CLI

Configuración

Para usar este complemento, importa el paquete vertexai y llama a vertexai.Init():

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

El complemento requiere que especifiques el ID del proyecto de Google Cloud, la región a la que deseas realizar solicitudes a la API de Vertex y tu proyecto de Google Cloud credenciales.

  • De forma predeterminada, vertexai.Init() obtiene tu ID del proyecto de Google Cloud de la Variable de entorno GCLOUD_PROJECT.

    También puedes pasar este valor directamente:

    if err := vertexai.Init(ctx, &vertexai.Config{ProjectID: yourProjectID}); err != nil {
      return err
    }
    
  • De forma predeterminada, vertexai.Init() obtiene la ubicación de la API de Vertex AI de la Variable de entorno GCLOUD_LOCATION.

    También puedes pasar este valor directamente:

    if err := vertexai.Init(ctx, &vertexai.Config{Location: "asia-south1"}); err != nil {
      return err
    }
    
  • Para proporcionar las credenciales de la API, debes configurar las aplicaciones Credenciales predeterminadas.

    1. Para especificar tus credenciales, haz lo siguiente:

      • Si ejecutas tu flujo desde un entorno de Google Cloud (Cloud Functions, Cloud Run, etc.), esto se configura automáticamente.

      • En tu entorno de desarrollo local, ejecuta el siguiente comando:

      gcloud auth application-default login
      
    2. Además, asegúrate de que la cuenta tenga el rol de IAM Usuario de Vertex AI (roles/aiplatform.user). Consulta el control de acceso de Vertex AI. documentos.

Uso

Modelos generativos

Para obtener una referencia a un modelo compatible, especifica su identificador:

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

Se admiten los siguientes modelos: gemini-1.0-pro, gemini-1.5-pro y gemini-1.5-flash.

Las referencias de modelos tienen un método Generate() que llama a la API de Vertex AI:

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

Consulta Generación de contenido para obtener más información.

Modelos de incorporación

Para obtener una referencia a un modelo de incorporación compatible, especifica su identificador:

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

Se admiten los siguientes modelos: textembedding-gecko@003, textembedding-gecko@002, textembedding-gecko@001 y text-embedding-004 textembedding-gecko-multilingual@001, text-multilingual-embedding-002 y multimodalembedding.

Las referencias de incorporaciones tienen un método Embed() que llama a la API de Vertex AI:

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

También puedes pasar un Embedder al método Index() de un indexador y al método Método 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
}

Consulta Generación aumentada de recuperación (RAG) para obtener más información.