API 호출을 통한 문서 및 작업에 관한 Q&A를 위한 Slack의 GenAI 상담사

1. 개요

이 실습에서는 생성형 AI 에이전트를 만들고, Cloud Run 애플리케이션에 연결하고, Slack 작업공간에 에이전트를 통합합니다.

3301e2bb69be325.png

학습할 내용

실습에는 다음과 같은 여러 주요 부분이 있습니다.

  • Gemini API와 통합하기 위해 Cloud Run 애플리케이션 배포
  • AI 애플리케이션에서 대화형 에이전트 만들기 및 배포
  • Slack에 에이전트 통합
  • PDF 문서에 대한 Q&A를 위한 데이터 스토어 구성

기본 요건

  • 이 실습에서는 Cloud 콘솔 및 Cloud Shell 환경에 익숙하다고 가정합니다.

2. 설정 및 요구사항

Cloud 프로젝트 설정

  1. Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
  • 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔은 고유한 문자열을 자동으로 생성합니다. 일반적으로는 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로 PROJECT_ID로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 다른 임의 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다.
  • 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
  1. 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 프로젝트를 삭제하면 됩니다. Google Cloud 신규 사용자는 300달러(USD) 상당의 무료 체험판 프로그램에 참여할 수 있습니다.

환경 설정

Gemini 채팅을 엽니다.

e1e9ad314691368a.png

Gemini for Google Cloud API를 사용 설정합니다.

933612a23648361c.png

b366894eb450f862.png

'Start chatting'을 클릭하고 샘플 질문 중 하나를 따르거나 직접 프롬프트를 입력하여 사용해 보세요.

ed120d672468b412.png

프롬프트 예시:

  • Cloud Run을 5가지 핵심 사항으로 설명해 줘.
  • Google Cloud Run 제품 관리자로서 학생에게 5가지 핵심 사항으로 Cloud Run을 설명해 줘.
  • Google Cloud Run 제품 관리자로서 공인 Kubernetes 개발자에게 Cloud Run을 5가지 핵심 사항으로 간략하게 설명해 줘.
  • Google Cloud Run 제품 관리자입니다. 수석 개발자에게 Cloud Run과 GKE를 언제 사용하는지 5가지 핵심 사항으로 간략하게 설명해 주세요.

프롬프트 가이드에서 더 나은 프롬프트를 작성하는 방법을 자세히 알아보세요.

Google Cloud를 위한 Gemini에서 사용자 데이터를 사용하는 방법

Google 개인 정보 보호 약정

Google은 업계 최초로 AI/ML 개인 정보 보호 약정을 발표했습니다. 여기에는 클라우드에 저장된 고객 데이터에 대해 고객이 최고 수준의 보안 및 제어 권한을 가져야 한다는 Google의 신념이 표명되어 있습니다.

제출 및 수신하는 데이터

분석하거나 완료하기 위해 Gemini에 제출하는 모든 입력 정보나 코드를 포함하여 Gemini에 묻는 질문을 프롬프트라고 합니다. Gemini로부터 받는 답변이나 코드 완성을 '대답'이라고 합니다. Gemini는 프롬프트나 프롬프트에 대한 대답을 모델 학습 데이터로 사용하지 않습니다.

프롬프트 암호화

Gemini에 프롬프트를 제출하면 Gemini의 기본 모델에 입력으로 전송 중인 데이터가 암호화됩니다.

Gemini에서 생성된 프로그램 데이터

Gemini는 퍼스트 파티 Google Cloud 코드와 선택된 서드 파티 코드로 학습됩니다. Gemini가 제공하는 코드 완성, 생성, 분석을 포함해 코드의 보안, 테스트, 효과에 대한 책임은 사용자에게 있습니다.

Google에서 프롬프트를 처리하는 방법을 자세히 알아보세요.

3. 프롬프트를 테스트하는 옵션

프롬프트를 테스트하는 방법에는 여러 가지가 있습니다.

Vertex AI Studio는 생성형 AI 모델의 개발 및 사용을 간소화하고 가속화하도록 특별히 설계된 Google Cloud의 Vertex AI 플랫폼의 일부입니다.

Google AI Studio는 프롬프트 엔지니어링 및 Gemini API의 프로토타입을 제작하고 실험할 수 있는 웹 기반 도구입니다.

Google Gemini 웹 앱 (gemini.google.com)은 Google의 Gemini AI 모델의 기능을 살펴보고 활용할 수 있도록 설계된 웹 기반 도구입니다.

4. 저장소 클론하기

Google Cloud 콘솔로 돌아가 검색창 오른쪽에 있는 아이콘을 클릭하여 Cloud Shell을 활성화합니다.

3e0c761ca41f315e.png

승인하라는 메시지가 표시되면 '승인'을 클릭하여 계속합니다.

6356559df3eccdda.png

열린 터미널에서 다음 명령어를 실행합니다.

git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git

cd genai-for-developers

git checkout slack-agent-jira-lab

'편집기 열기'를 클릭합니다.

63e838aebfdd2423.png

'File / Open Folder' 메뉴 항목을 사용하여 'genai-for-developers'을 엽니다.

e3b9bd9682acf539.png

새 터미널 열기

4d9c41ab01ff4e97.png

5. 서비스 계정 만들기

새 서비스 계정 만들기 이 서비스 계정을 사용하여 Cloud Run 애플리케이션에서 Vertex AI Gemini API를 호출합니다.

Qwiklabs 프로젝트 세부정보를 사용하여 프로젝트 세부정보를 구성합니다.

예: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

서비스 계정을 만듭니다.

export LOCATION=us-central1
export PROJECT_ID=$(gcloud config get-value project)
export SERVICE_ACCOUNT_NAME='vertex-client'
export DISPLAY_NAME='Vertex Client'

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID --display-name "$DISPLAY_NAME"

역할을 부여합니다.

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.user"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/storage.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/run.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor"

Vertex AI API 및 Gemini 채팅을 사용하려면 필수 서비스를 사용 설정하세요.

gcloud services enable \
    generativelanguage.googleapis.com \
    aiplatform.googleapis.com \
    cloudaicompanion.googleapis.com \
    dialogflow.googleapis.com \
    run.googleapis.com \
    cloudresourcemanager.googleapis.com \
    discoveryengine.googleapis.com

Vertex AI API 및 Gemini 채팅을 사용하려면 필수 서비스를 사용 설정하세요.

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    runapps.googleapis.com \
    workstations.googleapis.com \
    servicemanagement.googleapis.com \
    secretmanager.googleapis.com \
    containerscanning.googleapis.com

Gemini Code Assist를 사용하여 코드 설명

'devai-api/app/routes.py' 파일을 열고 파일의 아무 곳이나 마우스 오른쪽 버튼으로 클릭한 다음 컨텍스트 메뉴에서 'Gemini Code Assist > Explain this"'을 선택합니다.

427ed40dd44cab8a.png

선택한 파일에 대한 Gemini의 설명을 검토합니다.

a286d1e85bc42960.png

6. Devai-API를 Cloud Run에 배포

올바른 폴더에 있는지 확인합니다.

cd ~/genai-for-developers/devai-api

이 실습에서는 권장사항에 따라 Secret Manager를 사용하여 Cloud Run에 액세스 토큰과 LangChain API 키 값을 저장하고 참조합니다.

환경 변수를 설정합니다. 이 명령어를 변경하지 않고 그대로 실행합니다.

export JIRA_API_TOKEN=your-jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true

export GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
export GITLAB_REPOSITORY="GITLAB-USERID/GITLAB-REPO"

export LANGCHAIN_API_KEY=your-langchain-key
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"

Secret Manager에서 여러 보안 비밀을 만들고 저장합니다.

echo -n $JIRA_API_TOKEN | \
 gcloud secrets create JIRA_API_TOKEN \
 --data-file=-

echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
 gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
 --data-file=-

echo -n $LANGCHAIN_API_KEY | \
 gcloud secrets create LANGCHAIN_API_KEY \
 --data-file=-

Cloud Run에 애플리케이션을 배포합니다.

gcloud run deploy devai-api \
  --source=. \
  --region="$LOCATION" \
  --allow-unauthenticated \
  --service-account vertex-client \
  --set-env-vars PROJECT_ID="$PROJECT_ID" \
  --set-env-vars LOCATION="$LOCATION" \
  --set-env-vars GITLAB_URL="$GITLAB_URL" \
  --set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
  --set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
  --set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
  --set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
  --set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
  --set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
  --set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
  --set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
  --update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
  --update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
  --update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
  --min-instances=1 \
  --max-instances=3

Y를 입력하여 Artifact Registry Docker 저장소를 만듭니다.

Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in 
region [us-central1] will be created.

Do you want to continue (Y/n)?  y

Gemini에게 명령어를 설명해 달라고 요청합니다.

What does this command do?

gcloud run deploy devai-api \
  --source=. \
  --region="$LOCATION" \
  --allow-unauthenticated \
  --service-account vertex-client \
  --set-env-vars PROJECT_ID="$PROJECT_ID" \
  --set-env-vars LOCATION="$LOCATION" \
  --set-env-vars GITLAB_URL="$GITLAB_URL" \
  --set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
  --set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
  --set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
  --set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
  --set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
  --set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
  --set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
  --set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
  --update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
  --update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
  --update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
  --min-instances=1 \
  --max-instances=3

34ed504e0bcf697b.png

아래 gcloud run deploy SERVICE_NAME --source=. 흐름을 검토하세요. 자세히 알아보기

5c122a89dd11822e.png

백그라운드에서 이 명령어는 Google Cloud의 buildpacksCloud Build를 사용하여 머신에 Docker를 설치하거나 빌드팩 또는 Cloud Build를 설정할 필요 없이 소스 코드에서 자동으로 컨테이너 이미지를 빌드합니다. 즉, 위에서 설명한 단일 명령어에서는 gcloud builds submit 명령어와 gcloud run deploy 명령어가 필요한 작업을 수행합니다.

Dockerfile을 제공한 경우(이 저장소에서 제공함) Cloud Build는 빌드팩을 사용하여 컨테이너 이미지를 자동으로 감지하고 빌드하는 대신 이를 사용하여 컨테이너 이미지를 빌드합니다. 빌드팩에 관해 자세히 알아보려면 문서를 참고하세요.

콘솔에서 Cloud Build 로그를 검토합니다.

Artifact Registry에서 생성된 Docker 이미지를 검토합니다.

Cloud 콘솔에서 Cloud Run 인스턴스 세부정보를 검토합니다.

curl 명령어를 실행하여 엔드포인트를 테스트합니다.

curl -X POST \
   -H "Content-Type: application/json" \
   -d '{"prompt": "PROJECT-100"}' \
   $(gcloud  run services list --filter="(devai-api)" --format="value(URL)")/generate

대답은 마크다운 형식입니다. 가독성을 높이기 위해 미리보기 모드로 표시됩니다.

bda86deaa1c449a8.png

7. AI Applications

Google Cloud 콘솔 검색창에 'AI Applications'를 입력하고 엽니다.

3f8540f5c946e199.png

Conversational Agent 앱을 만듭니다.

6f372cbe4935c507.png

'Build your own'을 선택합니다.

5305cb9a8320f468.png

표시 이름에 'Agent'을 입력하고 '만들기'를 클릭합니다.

e0056adc2f8af87.png

플레이북 이름 설정:

Agent

목표 설정:

Help users with questions about JIRA project

요청 사항 설정:

- Greet the users, then ask how you can help them today.
- Summarize the user's request and ask them to confirm that you understood correctly.
  - If necessary, seek clarifying details.
- Thank the user for their business and say goodbye.

'Save'을 클릭합니다.

bb2569de77cd1f06.png

오른쪽의 시뮬레이터 채팅을 사용하여 에이전트를 테스트합니다.

593dd4b8fc4c20d9.png

아래와 같이 유사한 대화를 따릅니다.

66a7569835ebc7e7.png

에이전트의 도구 구성

왼쪽의 렌치 아이콘 위로 마우스를 가져갑니다. 도구 메뉴를 열고 새 도구를 만듭니다.

ff635e2d135ea6d8.png

'유형' 드롭다운에서 OpenAPI을 선택합니다.

도구 이름 설정:

jira-project-status

세트 설명:

Provides JIRA project status

탭을 전환하고 Cloud Run 서비스 URL의 콘솔 출력을 확인합니다. 서비스 URL 값을 복사합니다.

스키마 설정 (YAML) - YOUR CLOUD RUN URL을 바꿉니다.

openapi: 3.0.0
info:
 title: CR API
 version: 1.0.0
 description: >-
   This is the OpenAPI specification of a service.
servers:
 - url: 'https://YOUR CLOUD RUN URL'
paths:

 /generate:
   post:
     summary: Request impl
     operationId: generate
     requestBody:
       description: Request impl
       required: true
       content:
         application/json:
           schema:
             $ref: '#/components/schemas/Prompt'
     responses:
       '200':
         description: Generated
         content:
           application/json:
             schema:
               $ref: '#/components/schemas/ProjectStatus'
                  
components:
 schemas:
   Prompt:
     type: object
     required:
       - prompt
     properties:
       prompt:
         type: string
   ProjectStatus:
     type: object
     required:
       - message
     properties:
       message:
         type: string

도구 구성을 저장합니다.

ae78c21f48754d7a.png

왼쪽 메뉴에서 '플레이북'을 선택하여 에이전트 구성으로 돌아가 도구를 사용하도록 안내를 업데이트합니다.

새 도구를 사용하도록 안내를 추가하고 'Save'을 클릭합니다.

- Use ${TOOL: jira-project-status} to help the user with JIRA project status.

16755dd3aaf3888.png

'Examples' 탭으로 전환하고 새 예시를 추가합니다.

a74004679865ab6e.png

표시 이름 설정:

jira-project-flow

하단의 메뉴를 사용하여 사용자와 상담사 간의 대화를 모델링합니다.

예시 흐름:

상담사 응답: 프로젝트 ID가 무엇인가요?

사용자 입력: TEST-PROJECT-100

도구 사용: jira-project-status

에이전트 응답: 프로젝트 상태 세부정보

6d54f90f1dc630fc.png

아래 참조를 사용하여 예시를 만듭니다.

c80eef4210256e5a.png

5affaee4cd54616e.png

Save을 클릭합니다. 에이전트 시뮬레이터로 돌아가 기존 대화를 재설정합니다. 흐름을 테스트합니다.

ac9db60831b0f684.png

a9fbafd45139d434.png

축하합니다. Cloud Run에 배포된 애플리케이션(API)에 연결된 도구를 통합하여 에이전트가 작업을 실행하고 에이전트의 기능을 확장할 수 있도록 했습니다.

e8b113e0cc1b8ad6.png

대화형 에이전트 권장사항 검토

사용 가능한 에이전트 설정 검토

  • 로깅 설정 - Cloud Logging 사용 설정
  • Git 통합 - Git 통합을 사용하면 Git 저장소에서 에이전트를 푸시하고 풀할 수 있습니다.
  • 생성 모델 선택
  • 토큰 한도(입력 및 출력)

f914db1d8a5d5447.png

에이전트 시뮬레이터 컨트롤을 검토합니다.

d1c4712603d4a8a2.png

8. Slack 통합

통합 메뉴를 열고 Slack 타일에서 'Connect'을 클릭합니다.

6fc0ad95c28cb6c8.png

e7ee0826668bfa2b.png

b29574fd2a0f9725.png

링크를 열고 https://api.slack.com/apps에서 새 Slack 앱을 만듭니다.

cbf13edc1b284899.png

'매니페스트'에서 다음을 선택합니다.

7721feb295693ea2.png

앱을 개발할 작업공간 선택

99a3d5b37cdf8f76.png

YAML로 전환하고 이 매니페스트를 붙여넣습니다.

display_information:
  name: Agent
  description: Agent
  background_color: "#1148b8"
features:
  app_home:
    home_tab_enabled: false
    messages_tab_enabled: true
    messages_tab_read_only_enabled: false
  bot_user:
    display_name: Agent
    always_online: true
oauth_config:
  scopes:
    bot:
      - app_mentions:read
      - chat:write
      - im:history
      - im:read
      - im:write
      - incoming-webhook
settings:
  event_subscriptions:
    request_url: https://dialogflow-slack-4vnhuutqka-uc.a.run.app
    bot_events:
      - app_mention
      - message.im
  org_deploy_enabled: false
  socket_mode_enabled: false
  token_rotation_enabled: false

'만들기'를 클릭합니다.

5f0b3d2c44022eb9.png

Workspace에 설치:

aa1c2ea1b700c838.png

'#general' 채널을 선택하고 '허용'을 클릭합니다.

18eba659946fc65f.png

'기본 정보 / 앱 사용자 인증 정보'에서 '서명 보안 비밀'을 복사하고 상담사의 Slack 통합에서 '서명 토큰' 필드의 값으로 설정합니다.

31d62babb57e523d.png

bd9f7e3be3b9ea4e.png

'OAuth 및 권한'을 열고 '봇 사용자 OAuth 토큰'을 복사한 후 상담사의 Slack 통합에서 '액세스 토큰' 필드의 값으로 설정합니다.

e74c7e003c31258.png

필수 입력란을 설정하고 '시작'을 클릭합니다.

상담사의 '액세스 토큰' 값은 Slack의 '봇 사용자 OAuth 토큰'입니다.

에이전트의 '서명 토큰' 값은 Slack의 '서명 보안 비밀'입니다.

8ea9f6856efa62cf.png

7e71e37750fd063a.png

'웹훅 URL'을 복사하고 Slack 앱 구성으로 돌아갑니다.

'이벤트 구독' 섹션을 열고 URL을 붙여넣습니다.

a1e7271934c714d9.png

변경사항을 저장합니다.

e6d9b43b3787b6e7.png

'Slack'을 열고 '@Agent'를 입력하여 상담사를 추가합니다.

예를 들어 이름이 '@CX'인 앱을 추가합니다.

72313066707f947b.png

63becbd80824f8d8.png

c98e193062b096f0.png

에이전트에게 JIRA 프로젝트 요약을 요청합니다.

6edfdb74760548ad.png

축하합니다. 에이전트가 Slack 작업공간에 통합되었습니다.

703a3bf5754680fa.png

9. PDF 문서에 대한 Q&A

이 섹션에서는 PDF 문서를 사용하여 데이터 스토어를 설정하고 에이전트에 연결하여 문서의 콘텐츠를 기반으로 Q&A 기능을 사용 설정하는 방법을 설명합니다.

Cloud Storage 버킷 만들기

Cloud Shell 열기: https://shell.cloud.google.com/

GCP 프로젝트의 마지막 5자리 숫자를 사용하여 버킷 이름을 설정합니다. 예: pdf-docs-3dw21

BUCKET_NAME=pdf-docs-LAST-5-DIGITS-OF-YOUR-PROJECT

버킷을 만들고 PDF 문서를 업로드합니다.

gcloud storage buckets create gs://$BUCKET_NAME \
    --location=us \
    --default-storage-class=STANDARD \
    --no-public-access-prevention \
    --uniform-bucket-level-access

wget https://services.google.com/fh/files/misc/exec_guide_gen_ai.pdf 

gsutil cp exec_guide_gen_ai.pdf gs://$BUCKET_NAME

데이터 스토어 구성

에이전트 콘솔로 돌아가서 'Agent'을 열고 아래로 스크롤하여 '+ Data store'을 클릭합니다.

9a5e4d6d1e040b86.png

다음 값을 사용합니다.

도구 이름: pdf-docs

유형: Data store

설명: pdf-docs

'Save'을 클릭합니다.

60096b1c597347fa.png

페이지 하단의 'Add data stores'을 클릭합니다. 그런 다음 'Create new data store'을 클릭합니다.

abb9e513ac905e75.png

데이터 소스로 'Cloud Storage'을 선택합니다.

Unstructured documents 선택

GCS 버킷/폴더를 선택합니다.

42dec238c1d0ac2f.png

데이터 스토어 위치로 'us'를 선택합니다.

데이터 스토어 이름에 'pdf-docs'를 입력합니다.

드롭다운에서 'Digital parser'을 선택합니다.

고급 청크 처리를 사용 설정합니다.

청크에서 상위 제목을 사용 설정합니다.

'Create'을(를) 클릭합니다.

1a5222b86ee6c58e.png

3119b5fec43c9294.png

데이터 스토어를 클릭하고 문서, 활동, 처리 구성을 검토합니다.

872d9142615e90c9.png

가져오기를 완료하는 데 약 5~10분 정도 걸립니다.

d9739a4af2244e03.png

파싱 및 청크 처리 옵션

다음과 같은 방법으로 콘텐츠 파싱을 제어할 수 있습니다.

  • 디지털 파서. 다른 파서 유형이 지정되지 않는 한 디지털 파서는 모든 파일 형식에 기본적으로 사용 설정되어 있습니다. 디지털 파서는 데이터 스토어에 다른 기본 파서가 지정되지 않았거나 지정된 파서가 수집된 문서의 파일 형식을 지원하지 않는 경우 수집된 문서를 처리합니다.
  • PDF용 OCR 파싱. 공개 미리보기 스캔한 PDF 또는 이미지 내에 텍스트가 포함된 PDF를 업로드할 계획이라면 OCR 파서를 사용 설정하여 PDF 색인을 개선할 수 있습니다. PDF용 OCR 파싱 정보를 참고하세요.
  • 레이아웃 파서. RAG에 Vertex AI Search를 사용하려면 HTML, PDF 또는 DOCX 파일의 레이아웃 파서를 사용 설정합니다. 이 파서와 사용 설정 방법에 관한 자세한 내용은 RAG용 청크 문서를 참고하세요.

문서 파싱 및 청크 처리 자세히 알아보기

도구 구성

에이전트 도구 구성 화면으로 돌아가 사용 가능한 데이터 스토어를 새로고침합니다.

방금 만든 데이터 스토어를 선택하고 'Confirm'를 클릭합니다.

2922f7d9bdb7b2bc.png

그라운딩을 구성합니다.

회사 이름에 'Google Cloud'을 입력합니다.

페이로드 설정 - 'Include snippets in Conversational Messenger response payload". 값을 5로 설정'을 확인합니다.

'저장'을 클릭합니다.

484e99caa7d1bc07.png

에이전트의 요청 사항 구성

에이전트 구성으로 돌아갑니다.

새 안내 추가:

- Provide detailed answer to users questions about the exec guide to gen ai using information in the ${TOOL:pdf-docs}

f6d27e58b68f9f7.png

구성을 저장합니다.

PDF-Docs 도구의 예 만들기

예 탭으로 전환합니다. 새 예시 만들기: Guide to generative AI

'+' 작업을 사용하는 경우:

ee4f85ba3f47fda0.png

'사용자 입력' 추가:

What are the main capabilities for generative AI?

'도구 사용'을 추가합니다.

  • 도구 및 작업: 'pdf-docs'

입력 (requestBody)

{
  "query": "Main capabilities for generative AI",
  "filter": "",
  "userMetadata": {},
  "fallback": ""
}

도구 출력:

{
  "answer": "Detailed answer about main capabilities for generative AI",
  "snippets": [
    {
      "uri": "https://storage.cloud.google.com/pdf-docs-49ca4/exec_guide_gen_ai.pdf",
      "text": "Detailed answer about main capabilities",
      "title": "exec_guide_gen_ai"
    }
  ]
}

'상담사 응답' 추가

Detailed answer about main capabilities. 

https://storage.cloud.google.com/pdf-docs-49ca4/exec_guide_gen_ai.pdf

구성된 예:

d1da4c1d18709ea6.png

도구 호출 구성:

a0d47a9dc04bb2f1.png

시뮬레이터로 전환하여 구성을 테스트합니다.

질문:

What are the 10 steps in the exec guide?

e682480a959125bc.png

호출 드롭다운에서 'Agent'을 선택하고 'Save as example'을 클릭합니다.

582759df60b9a342.png

'user-question-flow'이라는 이름을 입력합니다.

요약: 'Agent helped user answer question based on the pdf document'을 설정하고 저장을 클릭합니다.

에이전트 응답을 포맷하고 도구 출력 섹션에서 PDF 문서 링크를 포함합니다.

6ba5011ed26793f3.png

예를 저장합니다.

시뮬레이터로 돌아가 'Replay conversation'을 클릭합니다. 업데이트된 응답 형식을 확인합니다. 예를 저장한 후 오류가 표시되면 브라우저 창을 새로고침하고 프롬프트를 다시 전송하여 대화를 다시 시작해야 할 수 있습니다.

What are the 10 steps in the exec guide?

51698c5f1fbd2770.png

다른 질문하기:

What are the main capabilities in the exec guide?

7b636f489c05a13.png

소스 PDF 문서입니다.

5b3e6d2ceda99247.png

질문:

What should I consider when evaluating projects?

1155edfbffcd14b2.png

소스 PDF 문서입니다.

57a0d331aa91f04b.png

질문:

What are the priority use cases in Retail and CPG in the exec guide?

92264121fc8f06e.png

소스 PDF 문서입니다.

b4d07e6e7d9adc00.png

축하합니다. 이제 에이전트가 PDF 문서를 기반으로 그라운딩된 답변을 제공할 수 있습니다.

e11d020a9cfa36d1.png

10. 사전 제작된 에이전트

이제 왼쪽 메뉴에서 사전 제작된 에이전트를 살펴봅니다.

de49672bbb8112fd.png

에이전트 중 하나를 선택하고 배포합니다. 에이전트의 설정, 안내, 도구를 살펴봅니다.

1e00ed8ef4887efb.png

11. 축하합니다.

축하합니다. 실습을 완료했습니다.

학습한 내용

  • 대화형 에이전트를 만들고 배포하는 방법
  • Cloud Run 애플리케이션으로 지원되는 에이전트용 도구를 추가하는 방법
  • Slack 작업공간에 에이전트를 통합하는 방법
  • PDF 문서에 대한 Q&A를 위한 데이터 스토어를 구성하는 방법

다음 단계:

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.

©2024 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.