Plug-in Vertex AI

Il plug-in Vertex AI fornisce interfacce a diversi modelli di IA generativa di Google tramite l'API Vertex AI.

Requisiti

Se vuoi eseguire localmente i flussi che utilizzano questo plug-in, devi installare lo strumento Google Cloud CLI.

Configurazione

Per utilizzare questo plug-in, importa il pacchetto vertexai e chiama vertexai.Init():

import "github.com/firebase/genkit/go/plugins/vertexai"
if err := vertexai.Init(ctx, nil); err != nil {
	return err
}

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, vertexai.Init() recupera l'ID progetto Google Cloud dalla variabile di ambiente GCLOUD_PROJECT.

    Puoi anche passare direttamente questo valore:

    if err := vertexai.Init(ctx, &vertexai.Config{ProjectID: yourProjectID}); err != nil {
    	return err
    }
    
  • Per impostazione predefinita, vertexai.Init() recupera la posizione dell'API Vertex AI dalla variabile di ambiente GCLOUD_LOCATION.

    Puoi anche passare questo valore direttamente:

    if err := vertexai.Init(ctx, &vertexai.Config{Location: "asia-south1"}); err != nil {
    	return err
    }
    
  • 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:

langModel := vertexai.Model("gemini-1.5-flash")

Sono supportati i seguenti modelli: gemini-1.0-pro, gemini-1.5-pro e gemini-1.5-flash.

I riferimenti ai modelli hanno un metodo Generate() che chiama l'API Vertex AI:

genRes, err := ai.GenerateText(ctx, langModel, ai.WithTextPrompt("Tell me a joke."))
if err != nil {
	return err
}

Per ulteriori informazioni, consulta la sezione Generare contenuti.

Modelli di embedding

Per ottenere un riferimento a un modello di embedding supportato, specifica il relativo identificatore:

embeddingModel := vertexai.Embedder("text-embedding-004")

Sono supportati i seguenti modelli: 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 Vertex AI:

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

Puoi anche passare un Embedder al metodo Index() di un indexer e al metodo Retrieve() di un retriever:

if err := ai.Index(ctx, myIndexer, ai.WithIndexerDocs(docsToIndex...)); err != nil {
	return err
}
retrieveRes, err := ai.Retrieve(ctx, myRetriever, ai.WithRetrieverText(userInput))
if err != nil {
	return err
}

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