Plug-in di IA generativa di Google

Il plug-in di IA generativa di Google fornisce interfacce per i modelli Gemini di Google tramite l'API Gemini o Gemini API in Vertex AI.

Configurazione

La configurazione dipende dal provider scelto:

Google AI

Per utilizzare questo plug-in, importa il pacchetto googlegenai e passa googlegenai.GoogleAI a WithPlugins() nell'inizializzatore Genkit:

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

Il plug-in richiede una chiave API per l'API Gemini, che puoi ottenere da Google AI Studio.

Configura il plug-in in modo che utilizzi la tua chiave API effettuando una delle seguenti operazioni:

  • Imposta la variabile di ambiente GEMINI_API_KEY sulla tua chiave API.

  • Specifica la chiave API quando inizilizza il plug-in:

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

    Tuttavia, non incorporare la chiave API direttamente nel codice. Utilizza questa funzionalità solo in combinazione con un servizio come Cloud Secret Manager o uno simile.

Vertex AI

Per utilizzare questo plug-in, importa il pacchetto googlegenai e passa googlegenai.VertexAI a WithPlugins() nell'inizializzatore Genkit:

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

Il plug-in richiede di specificare l'ID progetto Google Cloud, la regione a cui vuoi inviare richieste all'API Vertex e le credenziali del progetto Google Cloud.

  • Per impostazione predefinita, googlegenai.VertexAI recupera l'ID progetto Google Cloud dalla variabile di ambiente GOOGLE_CLOUD_PROJECT.

    Puoi anche passare questo valore direttamente:

    genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
    
  • Per impostazione predefinita, googlegenai.VertexAI recupera la posizione dell'API Vertex AI dalla variabile di ambiente GOOGLE_CLOUD_LOCATION.

    Puoi anche passare questo valore direttamente:

    genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
    
  • Per fornire le credenziali API, devi configurare le credenziali predefinite dell'applicazione Google Cloud.

    1. Per specificare le credenziali:

      • Se esegui il flusso da un ambiente Google Cloud (Cloud Functions, Cloud Run e così via), questo valore viene impostato automaticamente.

      • Nel tuo ambiente di sviluppo locale, esegui:

      gcloud auth application-default login
    2. Inoltre, assicurati che all'account sia stato concesso il ruolo IAM Utente Vertex AI (roles/aiplatform.user). Consulta la documentazione sul controllo dell'accesso di Vertex AI.

Utilizzo

Modelli generativi

Per ottenere un riferimento a un modello supportato, specifica il relativo identificatore come googlegenai.GoogleAIModel o googlgenai.VertexAIModel:

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

In alternativa, puoi creare un ModelRef che abbina il nome del modello alla relativa configurazione:

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

Sono supportati i seguenti modelli: gemini-1.5-pro, gemini-1.5-flash, gemini-2.0-pro, gemini-2.0-flash e altri modelli sperimentali.

I riferimenti ai modelli hanno un metodo Generate() che chiama l'API 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())

Per saperne di più, consulta Generare contenuti con i modelli di IA.

Modelli di embedding

Per ottenere un riferimento a un modello di embedding supportato, specifica il relativo identificatore come googlegenai.GoogleAIEmbedder o googlgenai.VertexAIEmbedder:

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

Sono supportati i seguenti modelli:

  • IA di Google

    text-embedding-004 e embedding-001

  • Vertex AI

    textembedding-gecko@003, textembedding-gecko@002, textembedding-gecko@001, text-embedding-004,textembedding-gecko-multilingual@001, text-multilingual-embedding-002 e multimodalembedding

I riferimenti dell'inserzionista hanno un metodo Embed() che chiama l'API Google AI:

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

Puoi anche passare un'entità Embedder al metodo Index() di un indicizzatore e al metodo Retrieve() di un'entità di recupero:

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
}

Per saperne di più, consulta la sezione RAG (Retrieval-Augmented Generation).