Puedes implementar flujos de Genkit como servicios web con Cloud Run. Esta página, como ejemplo, te guía a través del proceso de implementación del flujo de la muestra predeterminado.
Instala Google Cloud CLI si aún no lo hiciste.
Crea un proyecto de Google Cloud nuevo usando la consola de Cloud o elige uno existente. El proyecto debe estar vinculado a una cuenta de facturación.
Luego de crear o elegir un proyecto, configura Google Cloud CLI para usarlo:
gcloud auth login
gcloud init
Crea un directorio para el proyecto de muestra de Genkit:
mkdir -p ~/tmp/genkit-cloud-project
cd ~/tmp/genkit-cloud-project
Si vas a usar un IDE, ábrelo en este directorio.
Inicializa un módulo de Go en el directorio de tu proyecto:
go mod init example/cloudrun
go mod get github.com/firebase/genkit/go
Crea una app de ejemplo con 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)) }
Haz que las credenciales de la API estén disponibles para la función implementada. Elige las credenciales que necesitas según tu elección en el ejemplo anterior:
Gemini (IA de Google)
Asegúrate de que la IA de Google esté disponibles en tu región.
Genera una clave de API para la API de Gemini con Google AI Studio.
Haz que la clave de API esté disponible en el entorno de Cloud Run:
- En la consola de Cloud, habilita la API de Secret Manager.
- En Secret Manager crea un secreto nuevo con tu clave de API.
- Después de crear el secreto, en la misma página, otorga a tu acceso de cuenta de servicio predeterminado al Secret con el rol Usuario con acceso a secretos de Secret Manager. (Puedes buscar el nombre de la cuenta de servicio de procesamiento predeterminada en la página de IAM).
En un paso posterior, cuando implementes el servicio, deberás hacer referencia al nombre de este secreto.
Gemini (Vertex AI)
En la consola de Cloud, Habilita la API de Vertex AI para tu proyecto.
En la página IAM asegúrate de que la cuenta de servicio de procesamiento predeterminada tiene otorgado el rol de usuario de Vertex AI.
El único secreto que debes configurar para este instructivo es para el proveedor del modelo, pero, en general, debes hacer algo similar para cada servicio que tu flujo use.
Opcional: Prueba tu flujo en la IU para desarrolladores:
Configura tu entorno local para el proveedor de modelos que elegiste:
Gemini (IA de 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
Inicia la IU:
genkit start -- go run .
En la IU del desarrollador (http://localhost:4000/), ejecuta el flujo:
Haz clic en jokesFlow.
En la pestaña Input JSON, proporciona un asunto para el modelo:
"bananas"
Haz clic en Ejecutar.
Si todo funciona como se esperaba hasta ahora, puedes compilar e implementar el flujo:
Gemini (IA de 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
(
GOOGLE_CLOUD_LOCATION
configura la región de la API de Vertex que quieres usar).Elige
N
cuando se te pregunte si quieres permitir invocaciones no autenticadas. Si respondesN
, se configurará tu servicio para que requiera credenciales de IAM. Consulta Autenticación en los documentos de Cloud Run para obtener información sobre cómo proporcionar estas credenciales.
Una vez finalizada la implementación, la herramienta imprimirá la URL de servicio. Puedes probar con curl
:
curl -X POST https://<service-url>/menuSuggestionFlow \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" -d '"bananas"'