Cloud Run을 사용하여 Genkit 흐름을 웹 서비스로 배포할 수 있습니다. 예를 들어 이 페이지에서는 기본 샘플 흐름을 배포하는 프로세스를 안내합니다.
아직 설치하지 않았다면 Google Cloud CLI를 설치합니다.
Cloud 콘솔을 사용하여 새 Google Cloud 프로젝트를 만들거나 기존 프로젝트를 선택합니다. 프로젝트를 결제 계정에 연결해야 합니다.
프로젝트를 만들거나 선택한 후 이를 사용하도록 Google Cloud CLI를 구성합니다.
gcloud auth login
gcloud init
Genkit 샘플 프로젝트용 디렉터리를 만듭니다.
mkdir -p ~/tmp/genkit-cloud-project
cd ~/tmp/genkit-cloud-project
IDE를 사용할 경우 이 디렉터리로 열어 둡니다.
프로젝트 디렉터리에서 Go 모듈을 초기화합니다.
go mod init example/cloudrun
go mod get github.com/firebase/genkit/go
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)) }
배포된 함수에 API 사용자 인증 정보를 제공합니다. 위 샘플에서 선택한 항목에 따라 필요한 사용자 인증 정보를 선택합니다.
Gemini(Google AI)
Google AI를 해당 리전에서 사용할 수 있는지 확인합니다.
Google AI Studio를 사용하는 Gemini API의 API 키를 생성합니다.
Cloud Run 환경에서 API 키를 사용할 수 있도록 설정합니다.
- Cloud 콘솔에서 Secret Manager API를 사용 설정합니다.
- Secret Manager 페이지에서 API 키가 포함된 새 보안 비밀을 만듭니다.
- 보안 비밀을 만든 후 같은 페이지에서 Secret Manager 보안 비밀 접근자 역할을 통해 기본 컴퓨팅 서비스 계정에 보안 비밀에 대한 액세스 권한을 부여합니다. (IAM 페이지에서 기본 컴퓨팅 서비스 계정의 이름을 찾을 수 있습니다.)
이후 단계에서 서비스를 배포할 때 이 보안 비밀의 이름을 참조해야 합니다.
Gemini(Vertex AI)
Cloud 콘솔에서 프로젝트에 대해 Vertex AI API를 사용 설정합니다.
IAM 페이지에서 기본 컴퓨팅 서비스 계정에 Vertex AI 사용자 역할이 부여되었는지 확인합니다.
이 튜토리얼에서 설정해야 하는 유일한 보안 비밀은 모델 제공업체이지만, 일반적으로 흐름에서 사용하는 각 서비스에 대해 유사한 작업을 수행해야 합니다.
선택사항: 개발자 UI에서 흐름을 사용해 봅니다.
선택한 모델 제공업체의 로컬 환경을 설정합니다.
Gemini(Google AI)
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
UI를 시작합니다.
genkit start -- go run .
개발자 UI(http://localhost:4000/)에서 흐름을 실행합니다.
jokesFlow를 클릭합니다.
JSON 입력 탭에서 모델의 주체를 입력합니다.
"bananas"
실행을 클릭합니다.
지금까지 모든 것이 예상한 대로 작동한다면 흐름을 빌드하고 배포할 수 있습니다.
Gemini(Google AI)
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
은 사용하려는 Vertex API 리전을 구성합니다.)인증되지 않은 호출을 허용할지 묻는 메시지가 표시되면
N
을 선택합니다.N
으로 응답하면 IAM 사용자 인증 정보를 요구하도록 서비스가 구성됩니다. 사용자 인증 정보를 제공하는 방법에 대한 자세한 내용은 Cloud Run 문서의 인증을 참조하세요.
배포가 완료되면 도구에서 서비스 URL을 출력합니다. curl
로 테스트할 수 있습니다.
curl -X POST https://<service-url>/menuSuggestionFlow \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" -d '"bananas"'