Complemento de IA generativa de Google

El complemento de IA generativa de Google proporciona interfaces para los modelos de Gemini de Google a través de la API de Gemini o Gemini API in Vertex AI.

Configuración

La configuración depende del proveedor que elijas:

IA de Google

Para usar este complemento, importa el paquete googlegenai y pasa googlegenai.GoogleAI a WithPlugins() en el inicializador de Genkit:

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

El complemento requiere una clave de API para la API de Gemini, que puedes obtener en Google AI Studio

Configura el complemento para usar tu clave de API mediante una de las siguientes acciones:

  • Establece la variable de entorno GEMINI_API_KEY en tu clave de API.

  • Especifica la clave de API cuando inicialices el complemento:

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

    Sin embargo, no incorpores tu clave de API directamente en el código. Usa solo esta característica junto con un servicio como Cloud Secret Manager o uno similar.

Vertex AI

Para usar este complemento, importa el paquete googlegenai y pasa googlegenai.VertexAI a WithPlugins() en el inicializador de Genkit:

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

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 las credenciales de tu proyecto de Google Cloud.

  • De forma predeterminada, googlegenai.VertexAI obtiene tu ID del proyecto de Google Cloud de la variable de entorno de entorno GOOGLE_CLOUD_PROJECT.

    También puedes pasar este valor directamente:

    genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
    
  • De forma predeterminada, googlegenai.VertexAI obtiene la ubicación de la API de Vertex AI de la variable de entorno GOOGLE_CLOUD_LOCATION.

    También puedes pasar este valor directamente:

    genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
    
  • Para proporcionar las credenciales de la API, debes configurar las credenciales predeterminadas de la aplicación de Google Cloud.

    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 los documentos de control de acceso de Vertex AI.

Uso

Modelos generativos

Para obtener una referencia a un modelo compatible, especifica su identificador en googlegenai.GoogleAIModel o googlgenai.VertexAIModel:

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

Como alternativa, puedes crear un ModelRef que vincule el nombre del modelo con su configuración:

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

Se admiten los siguientes modelos: gemini-1.5-pro, gemini-1.5-flash, gemini-2.0-pro, gemini-2.0-flash y otros modelos experimentales.

Las referencias de modelo tienen un método Generate() que llama a la API de 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())

Consulta Cómo generar contenido con modelos de IA para obtener más información.

Modelos de incorporación

Para obtener una referencia a un modelo de incorporación compatible, especifica su identificador en googlegenai.GoogleAIEmbedder o googlgenai.VertexAIEmbedder:

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

Se admiten los siguientes modelos:

  • IA de Google

    text-embedding-004 y embedding-001

  • Vertex AI

    textembedding-gecko@003, textembedding-gecko@002, textembedding-gecko@001, 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 IA de Google:

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

También puedes pasar un incorporador al método Index() de un indexador y al método Retrieve() de un recuperador:

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
}

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