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).