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 utilizzarlo solo per la prototipazione e la sperimentazione.

Se rilevi problemi con le librerie o con questa documentazione, segnalalo nel nostro repository GitHub.

Per iniziare a utilizzare Genkit, installa l'interfaccia a riga di comando Genkit ed esegui genkit init in un progetto Go. Il resto di questa pagina ti mostra come.

Requisiti

  • Go 1.22 o versioni successive. Vedi Scaricare e installare nella la 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.

    Consiglio: le nvm e Gli strumenti di nvm-windows sono un un modo pratico per installare versioni specifiche di Node, se non sono installati sul 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 quanto segue :

    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. Poi, 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, prendi in considerazione utilizzando l'API Vertex AI, che offre anche Gemini e altri modelli. Tu avrà un progetto Google Cloud abilitato per la fatturazione, l'API Platform e imposta 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 unico flusso, menuSuggestionFlow, che richiede a un LLM di suggerire un elemento per una su un determinato tema.

    Questo file ha un aspetto simile al seguente (la procedura di configurazione del plug-in potrebbe essere diverso 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 dell'input, i flussi la creazione di prompt, l'integrazione di fonti di informazione esterne 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 archivierà le tracce lo stato del flusso nei file locali.

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

    La UI per sviluppatori ti consente di vedere quali flussi hai definito e di modellarti configurato, eseguirle ed esaminare le tracce delle esecuzioni precedenti. Prova alcuni 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, verrete ricompensati con un menu suggerimento per un ristorante a tema gatti.

    • Nella scheda Esamina viene visualizzata una cronologia delle esecuzioni del flusso. Per ogni puoi vedere i parametri passati al flusso e una traccia per ogni passaggio durante la corsa.