Vertex AI 및 Svelte Kit가 포함된 Text Summarizer 앱

1. 소개

이 Codelab에는 Svelte Kit 프레임워크에서 텍스트 생성 ( text-bison) API를 위해 Vertex AI 대규모 언어 모델을 사용하여 텍스트 요약을 수행할 수 있는 웹 앱을 빌드하는 단계를 설명했습니다. 사용되는 서비스 및 기술 스택 목록은 다음과 같습니다.

  1. Svelte 키트: Svelte를 기반으로 하는 웹 애플리케이션 프레임워크입니다.
  2. Vertex AI PaLM 2 API: Google AI의 PaLM 2 모델에 대한 액세스를 제공하는 대규모 언어 모델 (LLM) API입니다.
  3. Cloud Functions: 서버를 관리할 필요 없이 함수를 실행할 수 있는 서버리스 플랫폼입니다.
  4. Cloud Run: 컨테이너화된 애플리케이션을 실행하기 위한 서버리스 플랫폼입니다.

빌드할 항목

생성할 항목:

  • makePalm API를 호출하는 데 사용되는 Python Cloud 함수
  • Cloud 함수를 통해 Vertex AI API와 상호작용하는 사용자 인터페이스용 Svelte 웹 애플리케이션
  • 위에서 만든 앱을 서버리스 방식으로 배포하는 Cloud Run 서비스

2. 요구사항

  • 브라우저(Chrome 또는 Firefox 등)
  • 결제가 사용 설정된 Google Cloud 프로젝트

3. 시작하기 전에

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
  2. Cloud 프로젝트에 결제가 사용 설정되어 있어야 하므로 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
  3. Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용하여 Google Cloud 서비스와 상호작용합니다. gcloud 명령어 및 사용법은 문서를 참조하세요. Cloud 콘솔에서 오른쪽 상단에 있는 Cloud Shell 활성화를 클릭합니다.

51622c00acec2fa.png

프로젝트가 설정되지 않은 경우 다음 명령어를 사용하여 설정합니다.

gcloud config set project <YOUR_PROJECT_ID>
  1. Cloud Shell 터미널에서 다음 명령어를 실행하여 필요한 모든 API가 사용 설정되었는지 확인합니다.
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
  1. 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 활성화 버튼을 클릭한 후 터미널이 로드되면 아래 이미지와 같이 빠르게 편집기 열기 버튼을 클릭하여 열 수 있습니다.

8e501bd2c41d11b8.png

편집기가 열리면 main.py 파일이 표시됩니다. 콘텐츠를 이 저장소 링크의 코드로 교체하세요. 코드에 대한 설명은 코드 주석으로 포함되어 있습니다. 요약하면 이 코드는 Vertex AI를 사용하여 텍스트 입력에 대한 짧은 요약을 생성하는 간결한 방법을 제공합니다.

requirements.txt 파일에는 패키지 종속 항목(functions-framework==3.*)이 있습니다. 함수가 함수 프레임워크의 최신 기능과 버그 수정을 사용하는지 확인합니다. 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 콘솔로 이동합니다.

43a6b247098a9edb.png

그러면 공개 URL로 방금 만든 Vertex-ai-function Cloud 함수가 함수 페이지에 나열됩니다. 이를 사용하여 프런트엔드와 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 Editor를 열고 Dockerfile 파일의 콘텐츠를 수정합니다. PUBLIC_FUNCTION_URL 변수를 Cloud 함수 URL로 바꿉니다.

2958bb12343368a9.png

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를 살펴보고 즐기세요.

cd94442961bb5308.gif

6. 삭제

이 게시물에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
  2. 프로젝트 목록에서 삭제하려는 프로젝트를 선택한 후 '삭제'를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 '종료'를 클릭하여 프로젝트를 삭제합니다.
  4. 프로젝트는 유지하고 Cloud Run 서비스만 삭제하려면 여기에 나와 있는 단계를 따르세요.
  5. Cloud 함수를 삭제하거나 액세스 권한을 취소하려면 여기에서 삭제하면 됩니다.

7. 축하합니다

축하합니다. Vertex AI PaLM2 API를 사용하여 프로그래매틱 방식으로 텍스트 요약을 수행하고, Svelte 웹 앱을 빌드하고, Cloud Functions에 배포했습니다. Vertex AI LLM 제품 문서에서 사용 가능한 모델에 대해 자세히 알아보세요.