É possível implantar fluxos do Genkit como serviços da Web usando o Cloud Run. Esta página, como exemplo, orienta você no processo de implantação do fluxo de amostra padrão.
Instale a CLI do Google Cloud, caso ainda não tenha feito isso.
Crie um novo projeto do Google Cloud usando o console do Cloud ou escolha um atual. O projeto precisa estar vinculado a uma conta de faturamento.
Depois de criar ou escolher um projeto, configure a CLI do Google Cloud para usar ele:
gcloud auth login
gcloud init
Crie um diretório para o projeto de amostra do Genkit:
mkdir -p ~/tmp/genkit-cloud-project
cd ~/tmp/genkit-cloud-project
Se você for usar um ambiente de desenvolvimento integrado, abra-o nesse diretório.
Inicialize um módulo Go no diretório do seu projeto:
go mod init example/cloudrun
go mod get github.com/firebase/genkit/go
Crie um app de exemplo usando o Genkit:
package main import ( "context" "fmt" "log" "net/http" "os" "github.com/firebase/genkit/go/ai" "github.com/firebase/genkit/go/genkit" "github.com/firebase/genkit/go/plugins/googlegenai" "github.com/firebase/genkit/go/plugins/server" ) func main() { ctx := context.Background() // Initialize Genkit with the Google AI plugin and Gemini 2.0 Flash. // Alternatively, use &googlegenai.VertexAI{} and "vertexai/gemini-2.0-flash" // to use Vertex AI as the provider instead. g, err := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}), genkit.WithDefaultModel("googleai/gemini-2.0-flash"), ) if err != nil { log.Fatalf("failed to initialize Genkit: %w", err) } flow := genkit.DefineFlow(g, "jokesFlow", func(ctx context.Context, topic string) (string, error) { resp, err := genkit.Generate(ctx, g, ai.WithPrompt(`Tell a short joke about %s. Be creative!`, topic), ) if err != nil { return "", fmt.Errorf("failed to generate joke: %w", err) } return resp.Text(), nil }) mux := http.NewServeMux() mux.HandleFunc("POST /jokesFlow", genkit.Handler(flow)) log.Fatal(server.Start(ctx, "127.0.0.1:"+os.Getenv("PORT"), mux)) }
Disponibilize as credenciais da API para a função implantada. Escolha as credenciais necessárias com base na sua escolha no exemplo acima:
Gemini (IA do Google)
Garanta que a IA do Google disponíveis na sua região.
Gere uma chave de API para à API Gemini usando o Google AI Studio.
Disponibilize a chave de API no ambiente do Cloud Run:
- No console do Cloud, ative a API Secret Manager.
- Na página Secret Manager, crie um novo secret com sua chave de API.
- Depois de criar o secret, na mesma página, conceda acesso da conta de serviço ao secret com o papel de Acessador de secrets do Secret Manager. Você pode procurar o nome da conta de serviço padrão do Compute na página do IAM.
Em uma etapa posterior, quando implantar o serviço, será preciso fazer referência ao nome do secret.
Gemini (Vertex AI)
No console do Cloud, Ative a API Vertex AI para seu projeto.
Na página IAM, verifique se a Conta de serviço padrão do Compute tem o papel de Usuário da Vertex AI.
O único secret que você precisa configurar para este tutorial é para o provedor de modelo, mas em geral, você precisa fazer algo semelhante para cada serviço que seu fluxo usa.
Opcional: teste o fluxo na interface do desenvolvedor:
Configure seu ambiente local para o provedor de modelo escolhido:
Gemini (IA do Google)
export GEMINI_API_KEY=<your API key>
Gemini (Vertex AI)
export GOOGLE_CLOUD_PROJECT=<your project ID>
export GOOGLE_CLOUD_LOCATION=us-central1
gcloud auth application-default login
Inicie a interface:
genkit start -- go run .
Na interface do desenvolvedor (http://localhost:4000/), execute o fluxo:
Clique em jokesFlow.
Na guia Inserir JSON, forneça um assunto para o modelo:
"bananas"
Clique em Executar.
Se tudo estiver funcionando como esperado até agora, você poderá criar e implantar o fluxo:
Gemini (IA do Google)
gcloud run deploy --port 3400 \ --update-secrets=GEMINI_API_KEY=<your-secret-name>:latest
Gemini (Vertex AI)
gcloud run deploy --port 3400 \ --set-env-vars GOOGLE_CLOUD_PROJECT=<your-gcloud-project> \ --set-env-vars GOOGLE_CLOUD_LOCATION=us-central1
(O
GOOGLE_CLOUD_LOCATION
configura a região da API Vertex que você quer usar.)Escolha
N
quando for perguntado se você quer permitir invocações não autenticadas. Se você responderN
, o serviço será configurado para exigir credenciais do IAM. Consulte Autenticação nos documentos do Cloud Run para saber como fornecer essas credenciais.
Depois que a implantação terminar, a ferramenta imprimirá o URL de serviço. É possível testar isso
com curl
:
curl -X POST https://<service-url>/menuSuggestionFlow \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" -d '"bananas"'