Comienza a usar Genkit con Go (alfa)

Ya está disponible la versión preliminar de las bibliotecas de Firebase Genkit para Go. Como las bibliotecas de Go están en versión alfa, es posible que veas cambios en la API y en las funciones a medida que progresa el desarrollo. Te recomendamos usarlo solo para fines de prototipado y exploración.

Si detectas problemas con las bibliotecas o con esta documentación, infórmalos en nuestro repositorio de GitHub.

Para comenzar a usar Genkit, instala la CLI y ejecuta genkit init en un proyecto de Go. En esta página, se muestra cómo hacerlo.

Requisitos

  • Go 1.22 o una versión superior. Consulta Download and install en la documentación oficial de Go.

  • Node.js 20 o una versión posterior (para la IU y la CLI de Genkit). Consulta la siguiente sección para ver una breve guía sobre la instalación de Node.

Instala Genkit

  1. Si no tienes Node 20 o una versión más reciente en tu sistema, instálalo ahora.

    Recomendación: Las herramientas nvm y nvm-windows son una forma práctica de instalar versiones específicas de Node si aún no lo hiciste en tu sistema. Estas herramientas instalan Node por usuario, por lo que no es necesario realizar cambios en todo el sistema.

    Para instalar nvm:

    Linux, macOS, etcétera

    Ejecuta el siguiente comando:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

    Windows

    Descarga y ejecuta el instalador como se describe en la documentación de nvm-windows.

    Luego, para instalar Node y npm, abre una shell nueva y ejecuta el siguiente comando:

    nvm install 20
  2. Para instalar la CLI de Genkit, ejecuta el siguiente comando:

    npm i -g genkit

    Este comando instala la CLI de Genkit en el directorio de instalación de Node para que pueda usarse fuera de un proyecto de Node.

Crea y explora un proyecto de muestra

  1. Crea un directorio de proyecto nuevo:

    mkdir genkit-intro && cd genkit-intro
  2. Inicializa un proyecto de Genkit:

    genkit init
    1. Selecciona Go como el entorno de ejecución.

    2. Selecciona tu modelo:

      Gemini (IA de Google)

      La forma más sencilla de comenzar es con la API de Gemini de Google AI. Asegúrate de que está disponible en tu región.

      Genera una clave de API para la API de Gemini con Google AI Studio. Luego, configura la variable de entorno GOOGLE_GENAI_API_KEY en tu clave:

      export GOOGLE_GENAI_API_KEY=<your API key>

      Gemini (Vertex AI)

      Si la API de Gemini de Google AI no está disponible en tu región, considera usar la API de Vertex AI, que también ofrece Gemini y otros modelos. Deberás tener un proyecto de Google Cloud con facturación habilitada, habilitar la API de AI Platform y establecer algunas variables de entorno adicionales:

      gcloud services enable aiplatform.googleapis.com
      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1

      Consulta los precios de Vertex AI.

    3. Dale un nombre al módulo. Por ejemplo: example/genkit-intro.

    4. Elige respuestas predeterminadas para el resto de las preguntas, lo que inicializará la carpeta de tu proyecto con algún código de muestra.

    El comando genkit init crea un módulo de Go de muestra y, luego, instala las dependencias requeridas. El archivo main.go contiene un solo flujo, menuSuggestionFlow, que solicita a un LLM que sugiera un elemento para un restaurante con un tema determinado.

    Este archivo se verá de la siguiente manera (los pasos de configuración del complemento podría verse diferente si seleccionaste Vertex AI):

    package main
    
    import (
    	"context"
    	"errors"
    	"fmt"
    	"log"
    
    	// Import Genkit and the Google AI plugin
    	"github.com/firebase/genkit/go/ai"
    	"github.com/firebase/genkit/go/genkit"
    	"github.com/firebase/genkit/go/plugins/googleai"
    )
    
    func main() {
    	ctx := context.Background()
    
    	// Initialize the Google AI plugin. When you pass nil for the
    	// Config parameter, the Google AI plugin will get the API key from the
    	// GOOGLE_GENAI_API_KEY environment variable, which is the recommended
    	// practice.
    	if err := googleai.Init(ctx, nil); err != nil {
    		log.Fatal(err)
    	}
    
    	// Define a simple flow that prompts an LLM to generate menu suggestions.
    	genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) {
    		// The Google AI API provides access to several generative models. Here,
    		// we specify gemini-1.5-flash.
    		m := googleai.Model("gemini-1.5-flash")
    		if m == nil {
    			return "", errors.New("menuSuggestionFlow: failed to find model")
    		}
    
    		// Construct a request and send it to the model API (Google AI).
    		resp, err := ai.Generate(ctx, m,
    			ai.WithConfig(&ai.GenerationCommonConfig{Temperature: 1}),
    			ai.WithTextPrompt(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input)))
    		if err != nil {
    			return "", err
    		}
    
    		// Handle the response from the model API. In this sample, we just
    		// convert it to a string. but more complicated flows might coerce the
    		// response into structured output or chain the response into another
    		// LLM call.
    		text := resp.Text()
    		return text, nil
    	})
    
    	// Initialize Genkit and start a flow server. This call must come last,
    	// after all of your plug-in configuration and flow definitions. When you
    	// pass a nil configuration to Init, Genkit starts a local flow server,
    	// which you can interact with using the developer UI.
    	if err := genkit.Init(ctx, nil); err != nil {
    		log.Fatal(err)
    	}
    }
    
    

    A medida que desarrolles las funciones basadas en IA de tu app con Genkit, es probable crees flujos con varios pasos, como el procesamiento previo de entradas, la construcción de instrucciones más sofisticadas, la integración de fuentes de información externas para generación mejorada de recuperación (RAG) y mucho más.

  3. Ahora puedes ejecutar y explorar de forma local las funciones de Genkit y el proyecto de muestra en tu máquina. Descarga y, luego, inicia la IU para desarrolladores de Genkit:

    genkit start

    Te damos la bienvenida a IU para desarrolladores de Genkit

    La IU para desarrolladores de Genkit ya se está ejecutando en tu máquina. Cuando ejecutas modelos o flujos en el próximo paso, la máquina realizará las tareas de organización necesarias para hacer que los pasos de tu flujo funcionen juntos; las llamadas a servicios externos, como la API de Gemini, se seguirán creando con servidores en vivo.

    Además, debido a que estás en un entorno de desarrollo, Genkit almacenará el estado de los flujos y seguimientos en los archivos locales.

  4. La IU para desarrolladores de Genkit se descarga y abre automáticamente cuando ejecutas el comando genkit start.

    La IU para desarrolladores te permite ver los flujos que definiste y los modelos que configuraste, ejecutarlos y examinar los seguimientos de ejecuciones anteriores. Prueba algunas de estas características:

    • En la pestaña Ejecutar, verás una lista de todos los flujos que has definido y los modelos que hayan configurado los complementos.

      Haz clic en menuSuggestionFlow e intenta ejecutarlo con texto de entrada (por ejemplo, "cat"). Si todo sale bien, recibirás como recompensa una sugerencia de menú para un restaurante con temática de gatos.

    • En la pestaña Inspeccionar, verás un historial de ejecuciones de flujo. Para cada de flujo, puedes ver los parámetros que se pasaron al flujo y un seguimiento de cada paso a medida que se ejecutaban.