1. 소개
이 Codelab에서는 Svelte Kit 프레임워크에서 텍스트 생성을 위한 Vertex AI 대규모 언어 모델 ( text-bison) API를 사용하여 텍스트 요약을 실행할 수 있는 웹 앱을 빌드하는 단계를 나열했습니다. 사용된 서비스 및 기술 스택 목록은 다음과 같습니다.
- Svelte Kit: Svelte를 기반으로 빌드되는 웹 애플리케이션 프레임워크입니다.
- Vertex AI PaLM 2 API: Google AI의 PaLM 2 모델에 대한 액세스를 제공하는 대규모 언어 모델 (LLM) API입니다.
- Cloud Functions: 서버를 관리하지 않고도 함수를 실행할 수 있는 서버리스 플랫폼입니다.
- Cloud Run: 컨테이너화된 애플리케이션을 실행하는 서버리스 플랫폼입니다.
빌드할 항목
다음 항목을 만듭니다.
- Python Cloud 함수는 Palm API 호출을 만드는 데 사용됩니다.
- Cloud 함수를 통해 Vertex AI API와 상호작용하는 사용자 인터페이스를 위한 Svelte 웹 애플리케이션
- 위에서 만든 앱을 서버리스로 배포하는 Cloud Run 서비스
2. 요구사항
3. 시작하기 전에
- Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
- Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에서 결제가 사용 설정되어 있는지 확인하는 방법 알아보기
- Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용하여 Google Cloud 서비스와 상호작용합니다. gcloud 명령어 및 사용법은 문서를 참조하세요. Cloud 콘솔에서 오른쪽 상단에 있는 Cloud Shell 활성화를 클릭합니다.

프로젝트가 설정되지 않은 경우 다음 명령어를 사용하여 설정합니다.
gcloud config set project <YOUR_PROJECT_ID>
- Cloud Shell 터미널에서 다음 명령어를 실행하여 필요한 모든 API가 사용 설정되어 있는지 확인합니다.
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
- Cloud Shell 터미널에서 다음 명령어를 실행하여 REGION 및 PROJECT_ID의 환경 변수를 만듭니다.
export PROJECT_ID=<your project id>
export REGION=asia-south1
4. Vertex AI API를 호출하는 Cloud 함수
Python Cloud 함수를 만들고 이 함수에서 Vertex AI API를 호출합니다.
새 서비스 계정 만들기
Cloud Shell 터미널에서 다음 명령어를 실행하여 새 서비스 계정을 만듭니다.
gcloud iam service-accounts create vertex-service-acc
프로젝트 및 리소스에 대한 액세스 권한을 제공하려면 서비스 계정에 역할을 부여합니다.
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member="serviceAccount:vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com" --role=roles/ml.developer
Google 계정에 서비스 계정 역할을 사용하고 서비스 계정을 다른 리소스에 연결할 수 있게 해주는 역할을 부여합니다. USER_EMAIL을 Google 계정 이메일 ID로 바꿉니다.
gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Python 함수 만들기
텍스트용 PaLM 2는 이어지는 대화 요구 없이 하나의 API 응답으로 완료할 수 있는 태스크에 이상적입니다. 이제 Cloud 함수를 만들어 보겠습니다.
Cloud Shell을 사용하여 새 디렉터리를 만들고 해당 디렉터리로 이동합니다. (이전 섹션에서 열린 동일한 터미널 사용):
mkdir vertex-ai-functions
cd vertex-ai-functions
Python Cloud 함수를 작성할 main.py 파일과 종속 항목을 저장할 requirements.txt 파일을 만듭니다.
touch main.py requirements.txt
이 Python 파일은 Vertex AI 텍스트 생성 모델을 사용하여 텍스트 입력의 짧은 요약을 생성하는 간단한 HTTP Cloud 함수를 정의합니다. 이 함수는 텍스트 입력을 매개변수로 사용하고 입력의 짧은 요약을 반환합니다. 이 함수는 생성된 텍스트의 창의성, 다양성, 유창성과 같은 다양한 매개변수를 사용하여 생성 프로세스를 제어합니다. HTTP Cloud 함수는 요청 객체를 수락하고 모델의 요약을 응답으로 반환합니다.
Google Cloud 편집기를 엽니다. 새 Google Cloud 콘솔 탭을 열고 CLOUD SHELL 활성화 버튼을 클릭하여 이 편집기를 열 수 있습니다. 터미널이 로드되면 아래 이미지와 같이 편집기 열기 버튼을 빠르게 클릭합니다.

편집기가 열리면 main.py 파일을 볼 수 있습니다. 콘텐츠를 이 저장소 링크의 코드로 바꿉니다. 코드 설명은 코드 주석으로 포함되어 있습니다. 요약하자면 이 코드는 Vertex AI를 사용하여 텍스트 입력의 짧은 요약을 생성하는 간결한 방법을 제공합니다.
requirements.txt 파일에는 패키지 종속 항목이 있습니다. functions-framework==3.*: 함수가 Functions 프레임워크의 최신 기능과 버그 수정을 사용하도록 합니다. google-cloud-aiplatform: Vertex AI 텍스트 생성 모델을 사용하는 데 필요합니다.
requirements.txt 파일에 다음을 추가합니다.
functions-framework==3.*
google-cloud-aiplatform
Cloud Functions에 배포
이제 이 소스를 Cloud Functions에 배포해 보겠습니다. Cloud Shell 터미널에서 다음 명령어를 실행합니다.
gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30
검색창을 사용하여 Cloud Functions 콘솔로 이동합니다.

그러면 방금 만든 vertex-ai-function Cloud 함수가 나열되고 함수 페이지에 공개 URL이 제공됩니다. 프런트엔드와 Vertex AI API를 연결하는 데 사용합니다. 이 URL을 저장합니다. 인증되지 않은 액세스를 위해 기본 Cloud Run 서비스를 허용해야 할 수도 있습니다. 보안을 위해 인증된 서비스를 사용하는 것이 좋습니다.
5. 프런트엔드 빌드 및 배포
이 앱에는 Google Cloud Functions를 통해 Vertex AI API와 상호작용하는 프런트엔드 인터페이스가 함께 제공됩니다. 이제 만들어 보겠습니다.
저장소 복제 및 Dockerfile 설정
루트 디렉터리로 이동하여 Git 저장소를 복제합니다.
cd ~/
git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git
cd vertex-summarizer-svelte
이 애플리케이션을 실행하려면 Dockerfile에 PUBLIC_FUNCTION_URL 환경 변수를 추가해야 합니다. 이 URL은 이전 섹션에서 만들고 저장한 Cloud 함수 URL입니다.
Cloud 편집기를 열고 Dockerfile 파일의 콘텐츠를 수정합니다. PUBLIC_FUNCTION_URL 변수를 Cloud 함수 URL로 바꿉니다.

Cloud Run에 프런트엔드 배포
Google Artifact Registry를 사용하여 Docker 이미지를 빌드하고 저장합니다. Cloud Run은 서버리스 아키텍처에서 컨테이너를 배포하는 데 사용됩니다.
Cloud Shell 터미널에서 아래 명령어를 실행하여 Artifact Registry 저장소를 만듭니다.
gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}
Artifact Registry 저장소 URL의 환경 변수를 만듭니다.
export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image
Docker 컨테이너를 빌드하고 Artifact Registry 저장소 위치로 태그를 지정합니다. Docker 이미지에 저장소 이름으로 태그를 지정하면 docker push 명령어가 이미지를 특정 위치로 푸시하도록 구성됩니다.
docker build . -t ${DOCKER_URL}
이미지를 Artifact Registry로 푸시합니다.
docker push ${DOCKER_URL}
Cloud Run에 Docker 컨테이너를 배포합니다.
gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}
Vertex Summarizer가 실행 중입니다. URL은 Cloud Shell에 표시되므로 Vertex AI🤖를 살펴보고 즐기세요.

6. 삭제
이 게시물에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행하세요.
7. 축하합니다
축하합니다. Vertex AI PaLM2 API를 사용하여 프로그래매틱 방식으로 텍스트 요약을 실행하고, Svelte 웹 앱을 빌드하고, Cloud Functions에 배포했습니다. 사용 가능한 모델에 대한 자세한 내용은 Vertex AI LLM 제품 문서를 참조하세요.