이 튜토리얼에서는 Gemini가 포함된 Vertex AI 기반의 생성형 AI를 사용해 Chat 스페이스의 대화를 토대로 질문에 대답하는 Google Chat 앱을 만드는 방법을 알려 드립니다. Chat 앱은 Google Workspace Events API와 Pub/Sub를 사용하여 언급되지 않은 경우에도 Chat 스페이스에 게시된 질문을 실시간으로 인식하고 답변합니다.
Chat 앱은 스페이스에서 전송된 모든 메시지를 데이터 소스 및 기술 자료로 사용합니다. 사용자가 질문하면 Chat 앱은 이전에 공유된 답변을 확인한 후 공유합니다. 답변을 찾을 수 없는 경우 응답할 수 없다는 메시지가 표시됩니다. 사용자는 각 답변에서 액세서리 작업 버튼을 클릭하여 스페이스 관리자를 @멘션하고 답변을 요청할 수 있습니다. Google Chat 앱은 Gemini AI를 사용하여 추가된 공간의 대화를 지속적으로 학습하면서 기술 자료를 조정하고 확장합니다.
직원 온보딩 및 지원 스페이스에서 Chat 앱이 작동하는 방식은 다음과 같습니다.
-
그림 2. 다나가 회사에서 강연 교육을 제공하는지 묻습니다. -
그림 3. AI 지식 어시스턴트 Chat 앱이 Gemini가 포함된 Vertex AI에 Chat 스페이스의 대화 기록을 기반으로 다나의 질문에 답변하도록 요청한 후 답변을 공유합니다.
기본 요건
Google Chat에 액세스할 수 있는 비즈니스 또는 엔터프라이즈 Google Workspace 계정
Google Cloud 서비스에 액세스하여 다음 작업을 실행할 수 있습니다.
- Google Cloud 프로젝트를 만듭니다.
- Google Cloud 결제 계정을 Cloud 프로젝트에 연결합니다. 액세스 권한이 있는지 알아보려면 결제를 사용 설정하는 데 필요한 권한을 참고하세요.
- 인증되지 않은 Google Cloud 함수 호출을 사용합니다. Google Cloud 조직에서 도메인 제한 공유를 사용하는지 확인하여 이를 확인할 수 있습니다.
필요한 경우 Google Cloud 관리자에게 액세스 또는 권한을 요청하세요.
Google Cloud CLI를 사용하는 경우 gcloud CLI와 호환되도록 구성된 Node.js 개발 환경 Node.js 개발 환경 설정을 참고하세요.
목표
- 생성형 AI를 사용하여 Chat 스페이스 대화에서 공유된 지식을 바탕으로 질문에 답하는 Chat 앱을 빌드합니다.
- 생성형 AI를 사용하면 다음과 같은 이점이 있습니다.
- 직원 질문을 감지하고 답변합니다.
- Chat 스페이스에서 진행 중인 대화에서 지속적으로 학습합니다.
- 채팅 앱에 직접 메시지가 전송되지 않는 경우에도 Chat 스페이스에서 실시간으로 메시지를 듣고 응답하세요.
- Firestore 데이터베이스에 쓰고 읽어서 메시지를 유지합니다.
- 질문에 대한 답변을 찾을 수 없는 경우 스페이스 관리자를 언급하여 Chat 스페이스에서 공동작업을 용이하게 합니다.
아키텍처
다음 다이어그램은 AI 지식 어시스턴트 Chat 앱에서 사용하는 Google Workspace 및 Google Cloud 리소스의 아키텍처를 보여줍니다.
AI 지식 어시스턴트 Chat 앱은 다음과 같이 작동합니다.
사용자가 Chat 스페이스에 AI 지식 어시스턴트 채팅 앱을 추가합니다.
Chat 앱은 Chat 스페이스에 앱을 추가한 사용자에게 인증 및 승인을 구성하라는 메시지를 표시합니다.
채팅 앱은 Chat API에서
spaces.messages.list
메서드를 호출하여 스페이스의 메시지를 가져온 다음 가져온 메시지를 Firestore 데이터베이스에 저장합니다.Chat 앱은 Google Workspace Events API의
subscriptions.create
메서드를 호출하여 스페이스의 메시지와 같은 이벤트를 리슨하기 시작합니다. 구독의 알림 엔드포인트는 Eventarc를 사용하여 이벤트를 Chat 앱으로 전달하는 Pub/Sub 주제입니다.Chat 앱이 스페이스에 소개 메시지를 게시합니다.
Chat 스페이스의 사용자가 메시지를 게시합니다.
Chat 앱은 Pub/Sub 주제에서 메시지를 실시간으로 수신합니다.
Chat 앱이 Firestore 데이터베이스에 메시지를 추가합니다.
나중에 사용자가 메시지를 수정하거나 삭제하면 Chat 앱은 업데이트되거나 삭제된 이벤트를 실시간으로 수신한 후 Firestore 데이터베이스에서 메시지를 업데이트하거나 삭제합니다.
채팅 앱은 Gemini를 사용하여 Vertex AI에 메시지를 전송합니다
프롬프트는 Gemini를 통해 Vertex AI에 메시지에 질문이 포함되어 있는지 확인하도록 지시합니다. 일치하는 경우 Gemini는 Firestore에 저장된 Chat 스페이스의 메시지 기록을 기반으로 질문에 답변하고 Google Chat 앱은 메시지를 Chat 스페이스로 전송합니다. 그렇지 않은 경우 응답하지 마세요.
Gemini가 포함된 Vertex AI가 질문에 답변하면 Chat 앱은 앱 인증을 사용하여 Chat API에서
spaces.messages.create
메서드를 호출하여 답변을 게시합니다.Gemini가 포함된 Vertex AI가 질문에 답변할 수 없는 경우 Chat 앱은 Chat 스페이스의 기록에서 해당 질문에 대한 답변을 찾을 수 없다는 메시지를 게시합니다.
메시지에는 항상 사용자가 클릭할 수 있는 보조 작업 버튼이 포함되어 있습니다. 이 버튼을 클릭하면 Chat 앱에서 스페이스 관리자에게 답변을 요청하는 @멘션을 보냅니다.
채팅 앱이 Google Workspace Events API에서 Chat 스페이스 구독이 곧 만료된다는 수명 주기 알림을 수신합니다.
- Chat 앱은 Google Workspace Events API에서
subscriptions.patch
메서드를 호출하여 정기 결제 갱신 요청을 보냅니다.
- Chat 앱은 Google Workspace Events API에서
Chat 앱이 Chat 스페이스에서 삭제되는 경우:
Chat 앱은 Google Workspace Events API에서
subscriptions.delete
메서드를 호출하여 구독을 삭제합니다.Chat 앱이 Firestore에서 Chat 스페이스의 데이터를 삭제합니다.
AI 지식 어시스턴트 Chat 앱에서 사용하는 제품 검토
AI 지식 어시스턴트 Chat 앱은 다음 Google Workspace 및 Google Cloud 제품을 사용합니다.
- Gemini를 사용한 Vertex AI API: Gemini를 기반으로 하는 생성형 AI 플랫폼입니다. AI 지식 어시스턴트 Chat 앱은 Gemini가 포함된 Vertex AI API를 사용하여 직원의 질문을 인식, 이해, 답변합니다.
-
Chat API: 메시지와 같은 채팅 상호작용 이벤트를 수신하고 이에 응답하는 Google Chat 앱을 개발하기 위한 API입니다. AI 지식 어시스턴트 채팅 앱은 Chat API를 사용하여 다음을 수행합니다.
- Chat에서 전송한 상호작용 이벤트를 수신하고 응답합니다.
- 스페이스에서 전송된 메시지를 나열합니다.
- 스페이스에서 사용자 질문에 대한 답변을 게시합니다.
- 이름, 아바타 이미지 등 Chat에 표시되는 방식을 결정하는 속성을 구성합니다.
- Google Workspace Events API: 이 API를 사용하면 이벤트를 구독하고 Google Workspace 애플리케이션 전반의 변경 알림을 관리할 수 있습니다. AI 지식 어시스턴트 Chat 앱은 Google Workspace Events API를 사용하여 Chat 스페이스에 게시된 메시지를 리슨하므로 멘션되지 않더라도 질문을 감지하고 대답할 수 있습니다.
- Firestore: 서버리스 문서 데이터베이스입니다. AI 지식 어시스턴트 Chat 앱은 Firestore를 사용하여 Chat 스페이스에서 전송된 메시지에 관한 데이터를 저장합니다.
- Pub/Sub: 메시지를 생성하는 서비스를 해당 메시지를 처리하는 서비스에서 분리하는 확장 가능한 비동기 메시징 서비스입니다. AI 지식 어시스턴트 채팅 앱은 Pub/Sub를 사용하여 Chat 공간의 구독 이벤트를 수신합니다.
- Eventarc: Eventarc를 사용하면 기본 인프라를 구현, 맞춤설정, 유지보수하지 않고도 이벤트 기반 아키텍처를 구축할 수 있습니다. AI 지식 어시스턴트 Chat 앱은 Eventarc를 사용하여 Pub/Sub에서 Chat 스페이스 및 구독 이벤트를 수신하고 처리하는 Cloud 함수로 이벤트를 라우팅합니다.
-
Cloud Functions: 서버 또는 런타임 환경을 관리할 필요 없이 Chat 상호작용 및 구독 이벤트에 대응하는 단일 목적의 독립형 함수를 만들 수 있게 해주는 경량 서버리스 컴퓨팅 서비스입니다. AI 지식 어시스턴트 채팅 앱은 다음과 같은 두 가지 Cloud Functions를 사용합니다.
-
app
: Chat이 상호작용 이벤트를 컴퓨팅 플랫폼으로 전송하는 HTTP 엔드포인트를 호스팅하여 이러한 이벤트를 처리하고 응답하는 로직을 실행합니다. -
eventsApp
: Pub/Sub 구독의 메시지와 같은 채팅 스페이스 이벤트를 수신하고 처리합니다.
- Cloud Build: 자동화된 빌드를 실행하는 완전 관리형 지속적 통합, 전송, 배포 플랫폼입니다.
- Cloud Run: 컨테이너화된 앱을 실행하기 위한 완전 관리형 환경입니다.
-
환경 준비
이 섹션에서는 채팅 앱용 Google Cloud 프로젝트를 만들고 구성하는 방법을 보여줍니다.
Google Cloud 프로젝트 만들기
Google Cloud 콘솔
- Google Cloud 콘솔에서 메뉴 > IAM 및 관리자 > 프로젝트 만들기로 이동합니다.
-
Project Name(프로젝트 이름) 필드에 프로젝트의 설명이 포함된 이름을 입력합니다.
선택사항: 프로젝트 ID를 수정하려면 수정을 클릭합니다. 프로젝트를 만든 후에는 프로젝트 ID를 변경할 수 없으므로 프로젝트의 수명 동안 필요에 맞는 ID를 선택하세요.
- 위치 필드에서 찾아보기를 클릭하여 프로젝트의 가능한 위치를 표시합니다. 그런 다음 선택을 클릭합니다.
- 만들기를 클릭합니다. Google Cloud 콘솔이 대시보드 페이지로 이동하고 몇 분 이내에 프로젝트가 생성됩니다.
gcloud CLI
다음 개발 환경 중 하나에서 Google Cloud CLI(gcloud
)에 액세스합니다.
-
Cloud Shell: gcloud CLI가 이미 설정된 온라인 터미널을 사용하려면 Cloud Shell을 활성화하세요.
Cloud Shell 활성화 -
로컬 셸: 로컬 개발 환경을 사용하려면 gcloud CLI를 설치하고 초기화합니다.
Cloud 프로젝트를 만들려면gcloud projects create
명령어를 사용합니다. 만드려는 프로젝트의 ID를 설정하여 PROJECT_ID를 바꿉니다.gcloud projects create PROJECT_ID
Cloud 프로젝트에 결제 사용 설정
Google Cloud 콘솔
- Google Cloud 콘솔에서 결제로 이동합니다. 메뉴 > 결제 > 내 프로젝트를 클릭합니다.
- 조직 선택에서 Google Cloud 프로젝트와 연결된 조직을 선택합니다.
- 프로젝트 행에서 작업 메뉴( )를 열고 결제 변경을 클릭한 다음 Cloud Billing 계정을 선택합니다.
- 계정 설정을 클릭합니다.
gcloud CLI
- 사용 가능한 결제 계정을 나열하려면 다음을 실행합니다.
gcloud billing accounts list
- 결제 계정을 Google Cloud 프로젝트에 연결하는 방법은 다음과 같습니다.
gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID
다음을 바꿉니다.
PROJECT_ID
는 결제를 사용 설정하려는 Cloud 프로젝트의 프로젝트 ID입니다.BILLING_ACCOUNT_ID
는 Google Cloud 프로젝트에 연결할 결제 계정 ID입니다.
API 사용 설정
Google Cloud 콘솔
Google Cloud 콘솔에서 Google Chat API, Vertex AI API, Cloud Functions API, Firestore API, Cloud Build API, Pub/Sub API, Google Workspace Events API, Eventarc API, Cloud Run Admin API를 사용 설정합니다.
올바른 Cloud 프로젝트에서 API를 사용 설정하고 있는지 확인한 후 다음을 클릭합니다.
올바른 API를 사용 설정했는지 확인한 다음 사용 설정을 클릭합니다.
gcloud CLI
필요한 경우 현재 Cloud 프로젝트를 생성한 프로젝트로 설정합니다.
gcloud config set project PROJECT_ID
PROJECT_ID를 생성한 Cloud 프로젝트의 프로젝트 ID로 바꿉니다.
Google Chat API, Vertex AI API, Cloud Functions API, Firestore API, Cloud Build API, Pub/Sub API, Google Workspace Events API, Eventarc API, Cloud Run Admin API를 사용 설정합니다.
gcloud services enable chat.googleapis.com \ aiplatform.googleapis.com \ cloudfunctions.googleapis.com \ firestore.googleapis.com \ cloudbuild.googleapis.com \ pubsub.googleapis.com \ workspaceevents.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com
인증 및 승인 설정
인증 및 승인을 통해 Chat 앱이 Google Workspace 및 Google Cloud의 리소스에 액세스할 수 있습니다.
이 튜토리얼에서는 자리표시자 정보를 사용해도 되도록 Google Chat 앱을 내부적으로 게시합니다. Google Chat 앱을 외부에 게시하기 전에 자리표시자 정보를 동의 화면의 실제 정보로 대체합니다.
OAuth 동의 화면 구성, 범위 지정, 앱 등록
Google Cloud 콘솔에서 메뉴 > API 및 서비스 > OAuth 동의 화면으로 이동합니다.
사용자 유형에서 내부를 선택한 다음 만들기를 클릭합니다.
앱 이름에
AI knowledge assistant
를 입력합니다.사용자 지원 이메일에서 이메일 주소 또는 적절한 Google 그룹을 선택합니다.
개발자 연락처 정보에 이메일 주소를 입력합니다.
저장하고 계속하기를 클릭합니다.
범위 추가 또는 삭제를 클릭합니다. Cloud 프로젝트에서 사용 설정한 각 API의 범위 목록이 포함된 패널이 표시됩니다.
수동으로 범위 추가에서 다음 범위를 붙여넣습니다.
https://www.googleapis.com/auth/chat.messages
표에 추가를 클릭합니다.
업데이트를 클릭합니다.
저장하고 계속하기를 클릭합니다.
앱 등록 요약을 검토한 다음 대시보드로 돌아가기를 클릭합니다.
OAuth 클라이언트 ID 사용자 인증 정보 만들기
Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.
사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭합니다.
애플리케이션 유형 > 웹 애플리케이션을 클릭합니다.
이름 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud 콘솔에만 표시됩니다.
승인된 리디렉션 URI에서 URI 추가를 클릭합니다.
URI 1에 다음을 입력합니다.
https://REGION-PROJECT_ID.cloudfunctions.net/app/oauth2
다음을 바꿉니다.
- REGION:
us-central1
과 같은 Cloud 함수의 리전입니다. 나중에 두 개의 Cloud 함수를 만들 때 리전을 이 값으로 설정해야 합니다. - PROJECT_ID: 만든 Cloud 프로젝트의 프로젝트 ID입니다.
- REGION:
만들기를 클릭합니다.
OAuth 클라이언트가 생성됨 창에서 JSON 다운로드를 클릭합니다.
다운로드한 파일을
client_secrets.json
로 저장합니다. 나중에 두 개의 Cloud 함수를 만들 때 각 배포에client_secrets.json
파일을 포함합니다.확인을 클릭합니다.
Pub/Sub 주제 만들기
Pub/Sub 주제는 Google Workspace Events API와 함께 작동하여 메시지와 같은 Chat 공간의 이벤트를 구독하고 채팅 앱에 실시간으로 알립니다.
Pub/Sub 주제를 만드는 방법은 다음과 같습니다.
Google Cloud 콘솔
Google Cloud 콘솔에서 메뉴 > Pub/Sub으로 이동합니다.
주제 만들기를 클릭합니다.
주제 ID에
events-api
를 입력합니다.기본 구독 추가를 선택 해제합니다.
암호화에서 Google 관리 암호화 키를 선택합니다.
만들기를 클릭합니다. Pub/Sub 주제가 표시됩니다.
이 Pub/Sub 주제와 Google Workspace Events API가 함께 작동하도록 하려면 Chat IAM 사용자에게 Pub/Sub 주제에 게시할 권한을 부여합니다.
events-api 패널의 PERMISSIONS에서 Add Principal(주 구성원 추가)을 클릭합니다.
주 구성원 추가의 새 주 구성원에
chat-api-push@system.gserviceaccount.com
를 입력합니다.역할 할당의 역할 선택에서 Pub/Sub > Pub/Sub 게시자를 선택합니다.
저장을 클릭합니다.
gcloud CLI
주제 ID가
events-api
인 Pub/Sub 주제를 만듭니다.gcloud pubsub topics create events-api
Chat IAM 사용자에게 Pub/Sub 주제에 게시할 수 있는 권한을 부여합니다.
gcloud pubsub topics add-iam-policy-binding events-api \ --member='serviceAccount:chat-api-push@system.gserviceaccount.com' \ --role='roles/pubsub.publisher'
Firestore 데이터베이스 만들기
Firestore 데이터베이스는 메시지와 같은 Chat 스페이스의 데이터를 유지하고 검색합니다. 데이터 모델은 정의하지 않습니다. 샘플 코드에서 model/message.js
및 services/firestore-service.js
파일로 암시적으로 설정됩니다.
AI 지식 어시스턴트 채팅 앱 데이터베이스는 Firestore 데이터 모델을 참고하세요.
컬렉션으로 구성된 문서를 기반으로 하는 NoSQL 데이터 모델을 사용합니다. 자세한 내용은다음 다이어그램은 AI 지식 어시스턴트 채팅 앱의 데이터 모델을 개략적으로 보여줍니다.
루트에는 두 개의 컬렉션이 포함되어 있습니다.
spaces
: 각 문서는 Chat 앱이 추가된 Chat 스페이스를 나타냅니다. 각 메시지는messages
하위 컬렉션의 문서로 표현됩니다.users
- 각 문서는 Chat 스페이스에 Chat 앱을 추가한 사용자를 나타냅니다.
컬렉션, 문서, 필드 정의 보기
spaces
AI 지식 어시스턴트 Chat 앱이 포함된 Chat 스페이스입니다.
필드 | |
---|---|
Document ID | String 특정 스페이스의 고유 ID입니다. Chat API에서 스페이스 리소스 이름의 일부입니다. |
messages | Subcollection of Documents ( Chat 스페이스에서 전송된 메시지입니다. Firebase의 message 의 Document ID 에 해당합니다. |
spaceName | String Chat API의 스페이스 고유 이름입니다. Chat API의 스페이스 리소스 이름에 해당합니다. |
messages
Chat 스페이스에서 전송된 메시지
필드 | |
---|---|
Document ID | String 특정 메시지의 고유 ID입니다. |
name | String Chat API의 메시지 고유 이름입니다. Chat API의 메시지 리소스 이름에 해당합니다. |
text | String 메시지의 텍스트 본문입니다. |
time | String (Timestamp format) 메시지가 생성된 시간입니다. |
users
Chat 스페이스에 AI 지식 어시스턴트 Chat 앱을 추가한 사용자
필드 | |
---|---|
Document ID | String 특정 사용자의 고유 ID입니다. |
accessToken | String OAuth 2.0 사용자 승인 중에 부여되는 액세스 토큰으로, Google Workspace API를 호출하는 데 사용됩니다. |
refreshToken | String OAuth 2.0 사용자 승인 중에 부여된 갱신 토큰입니다. |
Firestore 데이터베이스를 만드는 방법은 다음과 같습니다.
Google Cloud 콘솔
Google Cloud 콘솔에서 메뉴 > Firestore로 이동합니다.
데이터베이스 만들기를 클릭합니다.
Firestore 모드 선택에서 기본 모드를 클릭합니다.
계속을 클릭합니다.
데이터베이스를 구성합니다.
데이터베이스 이름 지정에서 데이터베이스 ID를
(default)
로 둡니다.위치 유형에서 리전을 선택합니다.
리전에서 데이터베이스의 리전(예:
us-central1
)을 지정합니다. 최상의 성능을 위해 채팅 앱의 Cloud Functions와 동일하거나 가까운 위치를 선택하세요.
데이터베이스 만들기를 클릭합니다.
gcloud CLI
기본 모드로 Firestore 데이터베이스를 만듭니다.
gcloud firestore databases create \ --location=LOCATION \ --type=firestore-native
LOCATION을 Firestore 리전의 이름(예:
us-central1
)으로 바꿉니다. 최상의 성능을 위해 Chat 앱의 Cloud Functions와 동일하거나 가까운 위치를 선택합니다.
Chat 앱 만들기 및 배포
이제 Google Cloud 프로젝트가 생성되고 구성되었으므로 Chat 앱을 빌드하고 배포할 수 있습니다. 이 섹션에서는 다음을 실행합니다.
- Cloud 함수 2개를 만들고 배포합니다. 하나는 Chat 상호작용 이벤트에 응답하고 하나는 Pub/Sub 이벤트에 응답합니다.
- Google Chat API 구성 페이지에서 Chat 앱을 만들고 배포합니다.
Cloud Functions 만들기 및 배포
이 섹션에서는 다음과 같은 두 개의 Cloud 함수를 만들고 배포합니다.
app
: Chat에서 HTTP 요청으로 수신된 이벤트에 응답하는 Chat 앱의 코드를 호스팅하고 실행합니다.eventsApp
: Pub/Sub의 메시지와 같은 Chat 스페이스 이벤트를 수신하고 처리합니다.
이러한 Cloud Functions는 함께 AI 지식 어시스턴트 Chat 앱의 애플리케이션 로직을 구성합니다.
원하는 경우 Cloud Functions를 만들기 전에 GitHub에 호스팅된 샘플 코드를 검토하고 숙지하세요.
app
생성 및 배포
Google Cloud 콘솔
GitHub에서 코드를 zip 파일로 다운로드합니다.
다운로드한 zip 파일의 압축을 풉니다.
추출된 폴더에는 전체 Google Workspace 샘플 저장소가 포함됩니다.
추출된 폴더에서
google-chat-samples-main/node/ai-knowledge-assistant
디렉터리로 이동합니다.google-chat-samples/node/ai-knowledge-assistant
디렉터리에서 인증 및 승인을 위해 OAuth 클라이언트 ID 사용자 인증 정보를 만들 때 다운로드한client_secrets.json
파일을 추가합니다.ai-knowledge-assistant
폴더의 콘텐츠를 zip 파일로 압축합니다.ZIP 파일의 루트 디렉터리에는 다음 파일과 폴더가 포함되어야 합니다.
.gcloudignore
.gitignore
README.md
deploy.sh
env.js
events_index.js
http_index.js
index.js
client_secrets.json
package-lock.json
package.json
controllers/
model/
services/
test/
Google Cloud 콘솔에서 메뉴 > Cloud Functions로 이동합니다.
채팅 앱의 Google Cloud 프로젝트가 선택되어 있는지 확인합니다.
함수 만들기를 클릭합니다.
함수 만들기 페이지에서 함수를 설정합니다.
- 환경에서 Cloud Run 함수를 선택합니다.
- 함수 이름에
app
를 입력합니다. - 리전에서 리전(예:
us-central1
)을 선택합니다. 이 리전은 인증 및 승인을 위해 OAuth 클라이언트 ID 사용자 인증 정보를 만들 때 승인된 리디렉션 URI에 설정한 리전과 일치해야 합니다. - 트리거 유형에서 HTTPS를 선택합니다.
- 인증에서 인증되지 않은 호출 허용을 선택합니다.
- 다음을 클릭합니다.
런타임에서 Node.js 20을 선택합니다.
진입점에서 기본 텍스트를 삭제하고
app
를 입력합니다.소스 코드에서 Zip 업로드를 선택합니다.
대상 버킷에서 버킷을 만들거나 선택합니다.
- 탐색을 클릭합니다.
- 버킷을 선택합니다.
- 선택을 클릭합니다.
Google Cloud가 ZIP 파일을 이 버킷에 업로드하고 이 버킷의 구성요소 파일을 추출합니다. 그러면 Cloud Functions가 구성요소 파일을 Cloud 함수에 복사합니다.
Zip 파일에서 GitHub에서 다운로드하여 추출하고 다시 압축한 ZIP 파일을 업로드합니다.
- 탐색을 클릭합니다.
- ZIP 파일을 찾아 선택합니다.
- 열기를 클릭합니다.
배포를 클릭합니다.
Cloud Functions 세부정보 페이지가 열리고 함수가 빌드용 진행률 표시기 1개와 서비스용 진행률 표시기 1개와 함께 표시됩니다. 두 진행률 표시기가 모두 사라지고 체크표시로 바뀌면 함수가 배포되고 준비된 것입니다.
샘플 코드를 수정하여 상수를 설정합니다.
- Cloud 함수 세부정보 페이지에서 수정을 클릭합니다.
- 다음을 클릭합니다.
- 소스 코드에서 인라인 편집기를 선택합니다.
- 인라인 편집기에서
env.js
파일을 열고 수정합니다.- project 값을 Cloud 프로젝트 ID로 설정합니다.
- location 값을 Cloud Functions의 리전(예:
us-central1
)으로 설정합니다.
배포를 클릭합니다.
gcloud CLI
GitHub에서 코드를 클론합니다.
git clone https://github.com/googleworkspace/google-chat-samples.git
이 AI 지식 어시스턴트 Chat 앱의 코드가 있는 디렉터리로 전환합니다.
cd google-chat-samples/node/ai-knowledge-assistant
google-chat-samples/node/ai-knowledge-assistant
디렉터리에서 인증 및 승인을 위해 OAuth 클라이언트 ID 사용자 인증 정보를 만들 때 다운로드한client_secrets.json
파일을 추가합니다.env.js
파일을 수정하여 환경 변수를 설정합니다.- project 값을 Cloud 프로젝트 ID로 설정합니다.
- location 값을 Cloud Functions의 리전(예:
us-central1
)으로 설정합니다.
Cloud 함수를 Google Cloud에 배포합니다.
gcloud functions deploy app \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=app \ --trigger-http \ --allow-unauthenticated
REGION을
env.js
파일에 설정된 Cloud 함수(예:us-central1
)의 값과 일치하도록 Cloud 함수의 리전 값으로 바꿉니다.
eventsApp
생성 및 배포
Google Cloud 콘솔
Google Cloud 콘솔에서 메뉴 > Cloud Functions로 이동합니다.
Chat 앱의 Google Cloud 프로젝트가 선택되어 있는지 확인합니다.
함수 만들기를 클릭합니다.
함수 만들기 페이지에서 함수를 설정합니다.
- 환경에서 Cloud Run 함수를 선택합니다.
- 함수 이름에
eventsApp
를 입력합니다. - 리전에서 리전(예:
us-central1
)을 선택합니다. 이 리전은 인증 및 승인을 위해 OAuth 클라이언트 ID 사용자 인증 정보를 만들 때 승인된 리디렉션 URI에 설정한 리전과 일치해야 합니다. - 트리거 유형에서 Cloud Pub/Sub를 선택합니다.
- Cloud Pub/Sub 주제에서
projects/PROJECT/topics/events-api
형식으로 생성한 Pub/Sub 주제 이름을 선택합니다. 여기서 PROJECT는 Cloud 프로젝트 ID입니다. Service account(s) might not have enough permissions to deploy the function with the selected trigger.
로 시작하는 메시지가 표시되면 모두 부여를 클릭합니다.- 다음을 클릭합니다.
런타임에서 Node.js 20을 선택합니다.
진입점에서 기본 텍스트를 삭제하고
eventsApp
를 입력합니다.소스 코드에서 Cloud Storage의 ZIP을 선택합니다.
Cloud Storage 위치에서 찾아보기를 클릭합니다.
app
Cloud 함수를 만들 때 ZIP 파일을 업로드한 버킷을 선택합니다.업로드한 ZIP 파일을 클릭합니다.
선택을 클릭합니다.
배포를 클릭합니다.
Cloud Functions 세부정보 페이지가 열리고 함수가 빌드, 서비스, 트리거에 대해 각각 하나씩 3개의 진행률 표시기와 함께 표시됩니다. 세 가지 진행률 표시기가 모두 사라지고 체크표시로 대체되면 함수가 배포되고 준비된 것입니다.
샘플 코드를 수정하여 상수를 설정합니다.
- Cloud 함수 세부정보 페이지에서 수정을 클릭합니다.
- 다음을 클릭합니다.
- 소스 코드에서 인라인 편집기를 선택합니다.
- 인라인 편집기에서
env.js
파일을 열고 수정합니다.- project 값을 Cloud 프로젝트 ID로 설정합니다.
- location 값을 Cloud Functions의 리전(예:
us-central1
)으로 설정합니다.
배포를 클릭합니다.
gcloud CLI
gcloud CLI에서 아직 해당 디렉터리에 있지 않은 경우 이전에 GitHub에서 클론한 이 AI 지식 어시스턴트 Chat 앱의 코드가 있는 디렉터리로 전환합니다.
cd google-chat-samples/node/ai-knowledge-assistant
google-chat-samples/node/ai-knowledge-assistant
디렉터리에서 인증 및 승인을 위해 OAuth 클라이언트 ID 사용자 인증 정보를 만들 때 다운로드한client_secrets.json
파일을 추가합니다.env.js
파일을 수정하여 환경 변수를 설정합니다.- project 값을 Cloud 프로젝트 ID로 설정합니다.
- location 값을 Cloud 함수의 리전(예:
us-central1
)으로 설정합니다.
Cloud 함수를 Google Cloud에 배포합니다.
gcloud functions deploy eventsApp \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=eventsApp \ --trigger-topic=events-api
REGION를 Cloud 함수의 지역 값으로 바꿔
env.js
파일(예:us-central1
)에 설정된 값과 일치시킵니다.
app
Cloud 함수의 트리거 URL 복사
Google Cloud 콘솔에서 채팅 앱을 구성할 때 다음 섹션에서 app
Cloud 함수의 트리거 URL을 붙여넣습니다.
Google Cloud 콘솔
Google Cloud 콘솔에서 메뉴 > Cloud Functions로 이동합니다.
Cloud Functions 목록의 이름 열에서
app
를 클릭합니다.트리거를 클릭합니다.
URL을 복사합니다.
gcloud CLI
app
Cloud 함수를 설명합니다.gcloud functions describe app
url
속성을 복사합니다.
Google Cloud 콘솔에서 Chat 앱 구성
이 섹션에서는 Google Cloud 콘솔에서 Chat 앱의 이름, Chat 상호작용 이벤트를 전송하는 Chat 앱의 Cloud 함수 트리거 URL 등 Chat 앱에 관한 정보로 Chat API를 구성하는 방법을 보여줍니다.
Google Cloud 콘솔에서 메뉴 > 기타 제품 > Google Workspace > 제품 라이브러리 > Google Chat API > 관리 > 구성을 클릭합니다.
앱 이름에
AI knowledge assistant
를 입력합니다.아바타 URL에
https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svg
를 입력합니다.설명에
Answers questions with AI
를 입력합니다.대화형 기능 사용 설정 전환 버튼을 클릭하여 설정 위치로 전환합니다.
기능에서 스페이스 및 그룹 대화 참여를 선택합니다.
연결 설정에서 HTTP 엔드포인트 URL을 선택합니다.
HTTP 엔드포인트 URL에
https://
REGION-
PROJECT_ID.cloudfunctions.net/app
형식의app
Cloud 함수의 트리거 URL을 붙여넣습니다. 여기서 REGION은 Cloud 함수의 리전(예:us-central1
)이고 PROJECT_ID은 만든 Cloud 프로젝트의 프로젝트 ID입니다.공개 상태에서 Workspace 도메인의 특정 사용자 및 그룹에서 이 Chat 앱을 사용할 수 있도록 설정을 선택하고 이메일 주소를 입력합니다.
원하는 경우 로그에서 Logging에 오류 로깅을 선택합니다.
저장을 클릭합니다. 구성이 저장되었다는 메시지가 표시되면 채팅 앱을 테스트할 준비가 된 것입니다.
채팅 앱 테스트
AI 지식 어시스턴트 Chat 앱이 답변할 수 있는 질문을 하여 메시지가 있는 Chat 스페이스에서 AI 지식 어시스턴트 Chat 앱을 테스트합니다.
AI 지식 어시스턴트 채팅 앱을 테스트하는 몇 가지 방법은 다음과 같습니다.
- AI 지식 어시스턴트 채팅 앱을 기존 Chat 스페이스에 추가하고 해당 스페이스와 관련된 질문을 합니다.
- Chat 스페이스를 만들고 데이터 소스로 사용할 메시지를 몇 개 게시합니다.
Answer 20 common onboarding questions employees ask their teams.
와 같은 프롬프트를 사용하여 Gemini에서 메시지를 가져올 수 있습니다. 또는 Chat으로 개발 개요 가이드에서 몇 문단을 붙여넣은 후 이에 관해 질문할 수도 있습니다.
이 튜토리얼에서는 Chat 스페이스를 만들고 Chat을 사용한 개발 개요 가이드에서 몇 개의 단락을 붙여넣겠습니다.
Google Chat을 엽니다.
Chat 스페이스 만들기
> 스페이스 만들기를 클릭합니다.
새 채팅스페이스 이름에
Testing AI knowledge assistant app
을 입력합니다.이 스페이스의 용도는 무엇인가요?에서 공동작업을 선택합니다.
액세스 설정에서 스페이스에 액세스할 수 있는 사용자를 선택합니다.
만들기를 클릭합니다.
데이터 소스로 사용할 메시지를 추가합니다.
웹브라우저에서 Chat으로 개발 개요 가이드를 방문합니다.
가이드의 콘텐츠를 복사하여 생성된 Chat 스페이스에 붙여넣습니다.
AI 지식 어시스턴트 Chat 앱을 추가합니다.
메시지 작성 창에
@AI knowledge assistant
를 입력하고 표시되는 추천 메뉴에서 AI 지식 어시스턴트 채팅 앱을 선택하고enter
를 누릅니다.AI 지식 어시스턴트 채팅 앱을 스페이스에 추가할지 묻는 메시지가 표시됩니다. 스페이스에 추가를 클릭합니다.
채팅 앱을 스페이스에 처음 추가하는 경우 채팅 앱의 인증 및 승인을 구성해야 합니다.
- 구성을 클릭합니다.
- Google 계정을 선택하라는 메시지가 표시된 새 브라우저 창 또는 탭이 열립니다. 테스트할 계정을 선택합니다.
- AI 지식 어시스턴트 채팅 앱이 요청하는 권한을 검토합니다. 권한을 부여하려면 허용을 클릭합니다.
You may close this page now.
라는 메시지가 표시됩니다. 브라우저 창이나 탭을 닫고 Chat 스페이스로 돌아갑니다.
질문하기:
메시지 작성창에 다음과 같은 질문을 입력합니다.
What are Google Chat apps?
AI 지식 어시스턴트 채팅 앱이 대답합니다.
원하는 경우 답변이 정확하지 않거나 충분하지 않은 경우 AI의 대화 기록을 개선하는 데 도움이 되도록
도움말 확인을 클릭합니다. AI 지식 어시스턴트 채팅 앱이 스페이스 관리자를 언급하고 질문에 답변해 달라고 다음번에는 AI 지식 어시스턴트 Chat 앱이 답을 알고 있을 것입니다.
고려사항, 대체 아키텍처 선택, 다음 단계
이 섹션에서는 AI 지식 어시스턴트 채팅 앱을 빌드하는 다른 방법을 검토합니다.
Firestore, Cloud Storage 또는 Chat API에서 List Messages 호출
이 튜토리얼에서는 Chat 앱이 질문에 답할 때마다 Chat API를 사용하여 Message
리소스의 list
메서드를 호출하는 것보다 성능이 향상되므로 메시지와 같은 Chat 스페이스 데이터를 Firestore 데이터베이스에 저장하는 것이 좋습니다. 또한 list messages
를 반복적으로 호출하면 채팅 앱이 API 할당량 한도에 도달할 수 있습니다.
하지만 Chat 스페이스의 대화 기록이 너무 길어지면 Firestore를 사용하는 데 비용이 많이 들 수 있습니다.
Cloud Storage 는 Firestore의 대안입니다. AI 지식 어시스턴트 앱이 활성 상태인 스페이스마다 자체 객체를 가져오며, 각 객체는 스페이스의 모든 메시지가 포함된 텍스트 파일입니다. 이 접근 방식의 장점은 텍스트 파일의 전체 콘텐츠를 Gemini를 사용하여 Vertex AI에 한 번에 제공할 수 있다는 점입니다. 단점은 Cloud Storage의 객체에 추가할 수 없고 대체만 할 수 있으므로 대화 기록을 업데이트하는 데 더 많은 작업이 필요하다는 점입니다. 이 접근 방식은 메시지 기록을 정기적으로 업데이트하는 경우에는 적합하지 않지만, 메시지 기록을 주기적으로 일괄 업데이트하는 경우(예: 일주일에 한 번) 적합합니다.
문제 해결
Google Chat 앱 또는 카드가 오류를 반환하면 Chat 인터페이스에 '문제가 발생했습니다'라는 메시지가 표시됩니다. '요청을 처리할 수 없습니다' Chat UI에 오류 메시지가 표시되지 않지만 Chat 앱 또는 카드에서 예기치 않은 결과가 발생하는 경우가 있습니다. 예를 들어 카드 메시지가 표시되지 않을 수 있습니다.
Chat UI에 오류 메시지가 표시되지 않을 수 있지만 Chat 앱의 오류 로깅이 사용 설정된 경우 오류를 수정하는 데 도움이 되는 설명 오류 메시지와 로그 데이터를 사용할 수 있습니다. 오류를 보고, 디버그하고, 수정하는 방법에 관한 도움말은 Google Chat 오류 문제 해결하기를 참고하세요.
삭제
이 튜토리얼에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 Cloud 프로젝트를 삭제하는 것이 좋습니다.
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다. 메뉴 > IAM 및 관리자 > 리소스 관리를 클릭합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제 를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.