Iniziare a utilizzare Genkit con Go (alpha)

Le librerie Firebase Genkit per Go sono ora disponibili per l'anteprima. Poiché le librerie Go sono attualmente in versione alpha, potresti notare modifiche alle API e alle funzionalità man mano che lo sviluppo procede. Ti consigliamo di utilizzarla solo per la prototipazione e l'esplorazione.

Se riscontri problemi con le librerie o con questa documentazione, segnalali nel nostro repository GitHub.

Per iniziare a utilizzare Genkit, installa il client Genkit e eseguigenkit init in un progetto Go. Il resto di questa pagina ti mostra come.

Requisiti

  • Go 1.22 o versioni successive. Consulta la sezione Download e installazione della documentazione ufficiale di Go.

  • Node.js 20 o versioni successive (per interfaccia a riga di comando e UI Genkit). Consulta la sezione successiva per una breve guida all'installazione di Node.

Installa Genkit

  1. Se nel tuo sistema non è già presente un nodo 20 o successivo, installalo ora.

    Suggerimento: gli strumenti nvm e nvm-windows rappresentano un modo pratico per installare versioni specifiche di Node, se non sono già installate nel sistema. Questi strumenti installano Node su base utente, quindi non è necessario apportare modifiche a livello di sistema.

    Per installare nvm:

    Linux, macOS e così via

    Esegui questo comando:

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

    Windows

    Scarica ed esegui il programma di installazione come descritto nella documentazione di nvm-windows.

    Quindi, per installare Node e npm, apri una nuova shell ed esegui il seguente comando:

    nvm install 20
  2. Installa l'interfaccia a riga di comando Genkit eseguendo questo comando:

    npm i -g genkit

    Questo comando installa Genkit CLI nella directory di installazione di Node in modo che possa essere utilizzato al di fuori di un progetto Node.

Crea ed esplora un progetto di esempio

  1. Crea una nuova directory del progetto:

    mkdir genkit-intro && cd genkit-intro
  2. Inizializza un progetto Genkit:

    genkit init
    1. Seleziona Go come ambiente di runtime.

    2. Seleziona il tuo modello:

      Gemini (IA di Google)

      Il modo più semplice per iniziare è utilizzare l'API Gemini di Google AI. Assicurati che sia disponibile nella tua regione.

      Genera una chiave API per l'API Gemini utilizzando Google AI Studio. Quindi, imposta la variabile di ambiente GOOGLE_GENAI_API_KEY sulla tua chiave:

      export GOOGLE_GENAI_API_KEY=<your API key>

      Gemini (Vertex AI)

      Se l'API Gemini di Google AI non è disponibile nella tua regione, valuta di utilizzare l'API Vertex AI, che offre anche Gemini e altri modelli. Dovrai avere un progetto Google Cloud abilitato per la fatturazione, abilitare l'API AI Platform e impostare alcune variabili di ambiente aggiuntive:

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

      Vedi i prezzi di Vertex AI.

    3. Specifica qualsiasi cosa per il nome del modulo. Ad esempio: example/genkit-intro

    4. Scegli le risposte predefinite per il resto delle domande, che inizieranno la cartella del progetto con del codice di esempio.

    Il comando genkit init crea un modulo Go di esempio e installa le dipendenze richieste. Il file main.go contiene un singolo flusso, menuSuggestionFlow, che chiede a un LLM di suggerire un articolo per un ristorante con un determinato tema.

    Il file è simile al seguente (i passaggi per la configurazione del plug-in potrebbero essere diversi se hai selezionato 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)
    	}
    }
    
    

    Man mano che sviluppi le funzionalità di IA della tua app con Genkit, probabilmente creerai flussi con più passaggi come la pre-elaborazione degli input, la creazione di prompt più sofisticati, l'integrazione di origini di informazioni esterne per la RAG (Retrieval-Augmented Generation) e altro ancora.

  3. Ora puoi eseguire ed esplorare le funzionalità di Genkit e il progetto di esempio in locale sul tuo computer. Scarica e avvia l'interfaccia utente per sviluppatori di Genkit:

    genkit start

    Ti diamo il benvenuto nell&#39;UI per sviluppatori di Genkit

    L'interfaccia utente di Genkit Developer è ora in esecuzione sulla tua macchina. Quando esegui modelli o flussi nel passaggio successivo, la macchina eseguirà le attività di orchestrazione necessarie per far funzionare insieme i passaggi del flusso. Le chiamate a servizi esterni come l'API Gemini continueranno a essere effettuate su server attivi.

    Inoltre, poiché ti trovi in un ambiente di sviluppo, Genkit memorizza le tracce e lo stato del flusso in file locali.

  4. L'interfaccia utente di Genkit Developer si scarica e si apre automaticamente quando esegui il comando genkit start.

    L'interfaccia utente per gli sviluppatori ti consente di vedere i flussi che hai definito e i modelli che hai configurato, di eseguirli ed esaminare le tracce delle esecuzioni precedenti. Prova alcune di queste funzionalità:

    • Nella scheda Esegui, viene visualizzato un elenco di tutti i flussi che hai definito e di tutti i modelli configurati dai plug-in.

      Fai clic su menuSuggestionFlow e prova a eseguirlo con del testo di input (ad esempio "cat"). Se tutto va bene, riceverai un suggerimento per il menu di un ristorante a tema gatto.

    • Nella scheda Esamina viene visualizzata una cronologia delle esecuzioni del flusso. Per ogni flusso, puoi vedere i parametri passati al flusso e una traccia di ogni passaggio durante l'esecuzione.