O plug-in da IA generativa do Google fornece interfaces para os modelos do Gemini do Google pela API Gemini ou pelo Gemini API in Vertex AI.
Configuração
A configuração depende do provedor escolhido:
IA do Google
Para usar esse plug-in, importe o pacote googlegenai
e transmita googlegenai.GoogleAI
para WithPlugins()
no inicializador do Genkit:
import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), ai.WithPlugins(&googlegenai.GoogleAI{}))
O plug-in exige uma chave de API para a API Gemini, que você pode acessar no Google AI Studio.
Siga um destes procedimentos para configurar o plug-in para usar sua chave de API:
Defina a variável de ambiente
GEMINI_API_KEY
como sua chave de API.Especifique a chave de API ao inicializar o plug-in:
ai.WithPlugins(&googlegenai.GoogleAI{APIKey: "YOUR_API_KEY"})
No entanto, não incorpore a chave de API diretamente no código. Use este recurso apenas em conjunto com um serviço como Cloud Secret Manager ou similar.
Vertex AI
Para usar esse plug-in, importe o pacote googlegenai
e transmita
googlegenai.VertexAI
para WithPlugins()
no inicializador do Genkit:
import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), genkit.WithPlugins(&googlegenai.VertexAI{}))
O plug-in exige que você especifique o ID do projeto do Google Cloud, a região para a qual você quer fazer solicitações da API Vertex, e as credenciais do seu projeto do Google Cloud.
Por padrão,
googlegenai.VertexAI
busca o ID do projeto do Google Cloud da variável de ambienteGOOGLE_CLOUD_PROJECT
.Você também pode passar esse valor diretamente:
genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
Por padrão,
googlegenai.VertexAI
recebe o local da API Vertex AI da variável de ambienteGOOGLE_CLOUD_LOCATION
.Você também pode passar esse valor diretamente:
genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
Para fornecer credenciais de API, você precisa configurar o Application Default Credentials do Google Cloud.
Para especificar suas credenciais:
Se você estiver executando seu fluxo em um ambiente do Google Cloud (Cloud Functions, Cloud Run e outros), isso é definido automaticamente.
No ambiente de desenvolvimento local, faça isso executando o seguinte:
gcloud auth application-default login
- Para outros ambientes, consulte a documentação do Application Default Credentials.
Além disso, confirme se a conta recebeu o papel do IAM de usuário da Vertex AI (
roles/aiplatform.user
). Consulte a documentação do controle de acesso da Vertex AI.
Uso
Modelos geradores
Para acessar uma referência a um modelo compatível, especifique o identificador dele como
googlegenai.GoogleAIModel
ou googlgenai.VertexAIModel
:
model := googlegenai.GoogleAIModel(g, "gemini-2.0-flash")
Como alternativa, crie um ModelRef
que associe o nome do modelo à configuração:
modelRef := googlegenai.GoogleAIModelRef("gemini-2.0-flash", &googlegenai.GeminiConfig{
Temperature: 0.5,
MaxOutputTokens: 500,
// Other configuration...
})
Os seguintes modelos são compatíveis: gemini-1.5-pro
, gemini-1.5-flash
,
gemini-2.0-pro
, gemini-2.0-flash
e outros modelos experimentais.
As referências de modelo têm um método Generate()
que chama a 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())
Consulte Como gerar conteúdo com modelos de IA para mais informações.
Como incorporar modelos
Para acessar uma referência a um modelo de embedding aceito, especifique o identificador dele como
googlegenai.GoogleAIEmbedder
ou googlgenai.VertexAIEmbedder
:
embeddingModel := googlegenai.GoogleAIEmbedder(g, "text-embedding-004")
Os seguintes modelos são compatíveis:
IA do Google
text-embedding-004
eembedding-001
Vertex AI
textembedding-gecko@003
,textembedding-gecko@002
,textembedding-gecko@001
,text-embedding-004
,textembedding-gecko-multilingual@001
,text-multilingual-embedding-002
emultimodalembedding
As referências do incorporador têm um método Embed()
que chama a API Google AI:
resp, err := ai.Embed(ctx, embeddingModel, ai.WithDocs(userInput))
if err != nil {
return err
}
Você também pode transmitir um incorporador ao método Index()
de um indexador e ao método
Retrieve()
de um recuperador:
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
}
Consulte Geração aumentada de recuperação (RAG) para mais informações.