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.

Configurazione

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

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

Il plug-in richiede una chiave API per l'API Gemini, che puoi recuperare 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 GOOGLE_GENAI_API_KEY sulla tua chiave API.

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

    if err := googleai.Init(ctx, &googleai.Config{APIKey: yourKey}); err != nil {
    	return err
    }
    

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

Utilizzo

Modelli generativi

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

model := googleai.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 del modello hanno un metodo Generate() che chiama l'API di Google AI:

text, err := ai.GenerateText(ctx, model, 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 := googleai.Embedder("text-embedding-004")

Sono supportati i seguenti modelli: text-embedding-004 e embedding-001.

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

embedRes, err := ai.Embed(ctx, embeddingModel, ai.WithEmbedText(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.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).