Как отвечать на вопросы на основе бесед в Chat с помощью приложения Gemini AI Chat

В этом руководстве рассказывается, как создать приложение для Google Chat, которое отвечает на вопросы на основе бесед в чат-группах Chat с помощью генеративного ИИ на базе Vertex AI с Gemini. Приложение Chat использует API событий Google Workspace и Pub/Sub, чтобы распознавать вопросы, заданные в чат-группах Chat, и отвечать на них в реальном времени, даже если оно не упомянуто.

Приложение Chat использует все сообщения, отправленные в чат-группу, в качестве источника данных и базы знаний. Когда кто-то задает вопрос, приложение Chat проверяет, были ли ранее опубликованы ответы, и делится одним из них. Если ответ не найден, модель сообщает, что не может ответить на вопрос. ИИ Gemini в приложении Google Chat постоянно обучается на основе чатов в чат-группах, в которые он добавлен, и расширяет свою базу знаний.

Вот как приложение Chat работает в чат-группе для адаптации новых сотрудников и поддержки:

  • Если вы упомянете приложение-помощника на основе ИИ, оно будет добавлено в чат-группу.
    Рисунок 1. Чарли добавляет в чат-группу Chat приложение ИИ-помощника.
  • Дана задает вопрос.
    Рисунок 2. Дана спрашивает, предлагает ли компания тренинги по публичным выступлениям.
  • На вопрос отвечает приложение Chat с ИИ-помощником.
    Рисунок 3. Приложение Chat – ИИ-помощник по знаниям – отправляет запрос в Vertex AI с Gemini, чтобы ответить на вопрос Даны на основе истории чат-группы, а затем делится ответом.

Требования

Цели

  • Создайте приложение Chat, которое использует генеративный искусственный интеллект, чтобы отвечать на вопросы на основе знаний, которыми поделились в чат-группе.
  • С генеративным ИИ:
    • Распознавать вопросы сотрудников и отвечать на них.
    • Постоянно учиться на основе текущих разговоров в чат-группе Chat.
  • Слушать сообщения в чат-группе Chat и отвечать на них в реальном времени, даже если приложение Chat не было упомянуто напрямую.
  • Сохранять сообщения, записывая их в базу данных Firestore и считывая из нее.
  • Упростите совместную работу в чат-группе, упоминая администраторов чат-группы, если на вопрос не найден ответ.

Архитектура

На следующей диаграмме показана архитектура ресурсов Google Workspace и Google Cloud, используемых приложением Chat с ИИ-помощником.

Архитектурная схема приложения Chat с ИИ-помощником

Приложение "Чат с ИИ-помощником" работает следующим образом:

  • Пользователь добавляет приложение Chat "ИИ-помощник" в чат-группу Chat:

    1. Приложение Chat предложит пользователю, который добавил его в чат-группу Chat, настроить аутентификацию и авторизацию.

    2. Приложение Chat получает сообщения чат-группы, вызывая метод spaces.messages.list в Chat API, а затем сохраняет полученные сообщения в базе данных Firestore.

    3. Приложение Chat вызывает метод subscriptions.create в Google Workspace Events API, чтобы начать отслеживать события, например сообщения в чат-группе. Конечная точка уведомлений подписки – это тема Pub/Sub, которая использует Eventarc для пересылки события в приложение Chat.

    4. Приложение Chat публикует в чат-группе приветственное сообщение.

  • Пользователь в чат-группе Chat публикует сообщение:

    1. Приложение Chat получает сообщение в реальном времени из темы Pub/Sub.

    2. Приложение Chat добавляет сообщение в базу данных Firestore.

      Если пользователь позже изменит или удалит сообщение, приложение Chat получит обновленное или удаленное событие в реальном времени, а затем обновит или удалит сообщение в базе данных Firestore.

    3. Приложение Chat отправляет сообщение в Vertex AI с Gemini:

      1. Запрос указывает Vertex AI с Gemini, нужно ли проверить, есть ли в письме вопрос. Если это так, Gemini отвечает на вопрос на основе истории переписки чат-группы, хранящейся в Firestore, а затем приложение Google Chat отправляет сообщение в чат-группу. Если это не так, не отвечайте на него.

      2. Если на вопрос отвечает Vertex AI с Gemini, приложение Chat публикует ответ, вызывая метод spaces.messages.create в Chat API с аутентификацией приложения.

        Если Vertex AI с Gemini не может ответить на вопрос, приложение Chat публикует сообщение о том, что не может найти ответ в истории чата.

  • Приложение Chat получает от Google Workspace Events API уведомление о жизненном цикле, в котором сообщается, что срок действия подписки на чат-группу скоро истечет:

    1. Приложение Chat отправляет запрос на продление подписки, вызывая метод subscriptions.patch в Google Workspace Events API.
  • Приложение Chat удалено из чат-группы Chat:

    1. Приложение Chat удаляет подписку, вызывая метод subscriptions.delete в Google Workspace Events API.

    2. Приложение Chat удаляет данные чат-группы из Firestore.

Проверьте продукты, используемые приложением Chat с ИИ-помощником

Приложение Chat с ИИ-помощником использует следующие продукты Google Workspace и Google Cloud:

  • Vertex AI API с Gemini: платформа генеративного ИИ на основе Gemini. ИИ-помощник Приложение Chat использует Vertex AI API с Gemini, чтобы распознавать вопросы сотрудников, понимать их и отвечать на них.
  • Chat API – API для разработки приложений Google Chat, которые получают и обрабатывают события взаимодействия с Chat, например сообщения. Приложение Chat "ИИ-помощник" использует Chat API, чтобы:
    • Получать и обрабатывать события взаимодействия, отправленные Chat.
    • Список сообщений, отправленных в чат-группе.
    • Публиковать ответы на вопросы пользователей в чат-группе.
    • Настройте атрибуты, определяющие, как он будет выглядеть в Chat, например имя и изображение аватара.
  • Google Workspace Events API. Этот API позволяет подписываться на события и управлять уведомлениями об изменениях в приложениях Google Workspace. Приложение Chat с ИИ-помощником использует API событий Google Workspace, чтобы отслеживать сообщения, опубликованные в чат-группе, и отвечать на вопросы, даже если его не упомянули.
  • Firestore – бессерверная база данных документов. ИИ-помощник Приложение Chat использует Firestore для хранения данных о сообщениях, отправленных в чат-группе Chat.
  • Pub/Sub – это асинхронный масштабируемый сервис обмена сообщениями, который разделяет сервисы, создающие сообщения, и сервисы, обрабатывающие их. Приложение для Chat "ИИ-помощник" использует Pub/Sub для получения событий подписки из чат-групп Chat.
  • Eventarc. Этот сервис позволяет создавать архитектуры на основе событий без необходимости реализовывать, настраивать или поддерживать базовую инфраструктуру. Приложение для Chat "ИИ-помощник" использует Eventarc для маршрутизации событий из издатель-подписчик в чат-группу и функция Cloud Functions, которая получает и обрабатывает события подписки.
  • Cloud Functions. Легкий бессерверный вычислительный сервис, который позволяет создавать одноцелевые автономные функции, реагирующие на события взаимодействия и подписки Chat без необходимости управлять сервером или средой выполнения. Приложение Chat для ИИ-помощника использует две функции Cloud Functions:
    • app: разместите конечную точку HTTP, в которую Chat отправляет события взаимодействия, и вычислительную платформу для выполнения логики, которая обрабатывает эти события и отвечает на них.
    • eventsApp: получает и обрабатывает события чат-групп, например сообщения из подписки издатель-подписчик.
    Для создания и размещения вычислительных ресурсов Cloud Functions использует следующие продукты Google Cloud:
    • Cloud Build – это полностью управляемая платформа непрерывной интеграции, доставки и развертывания, которая выполняет автоматизированные сборки.
    • Cloud Run – полностью управляемая среда для запуска контейнерных приложений.

Подготовка среды

В этом разделе рассказывается, как создать и настроить проект Google Cloud для приложения Chat.

Как создать проект Google Cloud

Google API Console

  1. В Google API Console нажмите на значок меню > IAM & Admin (IAM и администрирование) > Create a Project (Создать проект).

    Создайте проект

  2. В поле Project Name (Имя проекта) введите информативное название проекта.

    Чтобы изменить идентификатор проекта, нажмите Изменить. Идентификатор проекта нельзя изменить после его создания, поэтому выберите подходящий вариант, так как он будет связан с проектом на протяжении всего периода его действия.

  3. В поле Местоположение нажмите Обзор, чтобы посмотреть возможные местоположения для проекта. Затем нажмите Выбрать.
  4. Нажмите Создать. Google API Console перейдет на страницу "Панель управления", и ваш проект будет создан в течение нескольких минут.

gcloud CLI

В одной из следующих сред разработки получите доступ к Google Cloud CLI (gcloud):

  • Cloud Shell: Чтобы использовать онлайн-терминал с уже настроенным gcloud CLI, активируйте Cloud Shell.
    Активировать Cloud Shell
  • Локальная оболочка. Чтобы использовать локальную среду разработки, установите и инициализируйте gcloud CLI.
    Чтобы создать облачный проект, используйте команду gcloud projects create:
    gcloud projects create PROJECT_ID
    Замените PROJECT_ID, указав идентификатор проекта, который хотите создать.

Включите оплату для облачного проекта

Google API Console

  1. В Google API Console выберите Оплата. Нажмите Меню > Оплата > Мои проекты.

    Перейти к оплате проектов

  2. В разделе Выберите организацию выберите организацию, связанную с вашим облачным проектом Google Cloud.
  3. В строке проекта откройте меню Действия (), нажмите Изменить платежные данные и выберите платежный аккаунт Cloud.
  4. Нажмите Выбрать аккаунт.

gcloud CLI

  1. Чтобы получить список доступных платежных аккаунтов, выполните следующую команду:
    gcloud billing accounts list
  2. Чтобы связать платежный аккаунт с проектом Google Cloud:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    Замените следующее:

    • PROJECT_ID – это идентификатор проекта для облачного проекта, для которого вы хотите включить оплату.
    • BILLING_ACCOUNT_ID – это идентификатор платежного аккаунта, который нужно связать с проектом Google Cloud.

Включение API

Google API Console

  1. В Google API Console включите 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.

    Как включить API

  2. Убедитесь, что вы включаете API в нужном облачном проекте, и нажмите Далее.

  3. Убедитесь, что вы включаете нужные API, и нажмите Включить.

gcloud CLI

  1. При необходимости задайте текущий облачный проект, который вы создали:

    gcloud config set project PROJECT_ID

    Замените PROJECT_ID на идентификатор проекта облачного проекта, который вы создали.

  2. Включите 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 для внешних пользователей замените в экране согласия информацию-заполнитель на реальную.

  1. В консоли API Google выберите "Меню > Платформа аутентификации Google > Брендинг".

    Перейти к брендингу

  2. Если вы уже настроили платформу Google Auth, вы можете задать следующие настройки окна запроса доступа OAuth в разделах Брендинг, Аудитория и Доступ к данным. Если вы видите сообщение Google Auth platform not configured yet (Платформа аутентификации Google ещё не настроена), нажмите Get Started (Начать):

    1. В разделе Информация о приложении в поле Название приложения введите AI knowledge assistant.
    2. В поле Электронный адрес службы поддержки выберите свой адрес электронной почты или подходящую группу Google.
    3. Нажмите Далее.
    4. В разделе Аудитория выберите Внутренние. Если вы не можете выбрать Внутренний, выберите Внешний.
    5. Нажмите Далее.
    6. В разделе Контактная информация укажите адрес электронной почты, на который вы хотите получать уведомления об изменениях в проекте.
    7. Нажмите Далее.
    8. В разделе Завершение ознакомьтесь с правилами в отношении пользовательских данных сервисов API Google и, если вы согласны с ними, выберите Я принимаю правила в отношении пользовательских данных сервисов API Google.
    9. Нажмите Продолжить.
    10. Нажмите Создать.
    11. Если в качестве типа пользователя вы выбрали Внешний, добавьте тестовых пользователей:
      1. Нажмите Аудитория.
      2. В разделе Тестировщики нажмите Добавить пользователей.
      3. Введите свой адрес электронной почты и адреса других авторизованных тестировщиков, а затем нажмите Сохранить.
  3. Нажмите Доступ к данным > Добавить или удалить области действия. Появится панель со списком областей действия для каждого API, включенного в облачном проекте Google Cloud.

    1. В разделе Добавить области действия вручную вставьте следующую область действия:

      • https://www.googleapis.com/auth/chat.messages
    2. Нажмите Добавить в таблицу.

    3. Нажмите Обновить.

    4. Выбрав нужные области действия, на странице Доступ к данным нажмите Сохранить.

Как создать учетные данные идентификатора клиента OAuth

  1. В Google API Console перейдите в Меню > APIs & Services > Credentials.

    Перейти к учетным данным

  2. Нажмите Создать учетные данные > Идентификатор клиента OAuth.

  3. Нажмите Тип приложения > Веб-приложение.

  4. В поле Название введите название учетных данных. Это название будет показываться только в Google API Console.

  5. В разделе Разрешенные URI перенаправления нажмите Добавить URI.

  6. В поле URIs 1 (URI 1) введите следующее:

    https://REGION-PROJECT_ID.cloudfunctions.net/app/oauth2
    

    Замените следующее:

    • REGION – регион Cloud Functions, например us-central1. Позже, когда вы будете создавать две функции Cloud Functions, вам нужно будет задать для них этот регион.
    • PROJECT_ID – идентификатор проекта облачного проекта, созданного вами.
  7. Нажмите Создать.

  8. В окне OAuth client created (Клиент OAuth создан) нажмите Download JSON (Скачать JSON).

  9. Сохраните скачанный файл в формате credentials.json. Позже, когда вы будете создавать две функции Cloud Functions, добавьте файл credentials.json в каждое развертывание.

  10. Нажмите ОК.

Создайте тему Pub/Sub

Тема Pub/Sub работает с Google Workspace Events API, чтобы подписываться на события в чат-группе Chat, например на сообщения, и уведомлять приложение Chat в реальном времени.

Вот как создать тему Pub/Sub:

Google API Console

  1. В Google API Console выберите Меню > Pub/Sub.

    Перейти к Pub/Sub

  2. Нажмите Создать тему.

  3. В поле Идентификатор темы введите events-api.

  4. Снимите флажок Добавить подписку по умолчанию.

  5. В разделе Шифрование выберите Ключ шифрования, управляемый Google.

  6. Нажмите Создать. Появится тема издатель-подписчик.

  7. Чтобы тема издатель-подписчик и Google Workspace Events API работали вместе, предоставьте пользователю Chat IAM разрешение пользователя на публикацию в теме издатель-подписчик:

    1. На панели events-api в разделе РАЗРЕШЕНИЯ нажмите Добавить субъекта.

    2. В разделе Добавить субъектов в поле Новые субъекты введите chat-api-push@system.gserviceaccount.com.

    3. В разделе Назначить роли в поле Выберите роль выберите Pub/Sub > Издатель Pub/Sub.

    4. Нажмите Сохранить.

gcloud CLI

  1. Создайте тему издатель-подписчик с идентификатором events-api:

    gcloud pubsub topics create events-api
  2. Предоставьте пользователю IAM Chat разрешение на публикацию в теме 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.

В базе данных приложения "Чат" для помощника на основе ИИ используется модель данных NoSQL на основе документов, организованных в коллекции. Подробнее о модели данных Firestore…

На следующей схеме представлена модель данных приложения Chat для ИИ-помощника:

Модель данных базы данных Firestore.

Корневой каталог содержит две коллекции:

  1. spaces, где каждый документ представляет собой чат-группу, в которую добавлено приложение Chat. Каждое сообщение представлено в виде документа в подколлекции messages.

  2. users, где каждый документ представляет пользователя, который добавил приложение Chat в чат-группу.

Как посмотреть определения коллекций, документов и полей

spaces

Чат-группа Chat, в которую добавлено приложение ИИ-помощника Chat.

Поля
Document IDString
Уникальный идентификатор определенной чат-группы. Часть названия ресурса чат-группы в Chat API.
messagesSubcollection of Documents (messages)
Сообщения, отправленные в чат-группе Chat. Соответствует Document ID объекта message в Firebase.
spaceNameString
Уникальное название чат-группы в Chat API. Соответствует названию ресурса чат-группы в Chat API.

messages

Сообщения, отправленные в чат-группе Chat.

Поля
Document IDString
Уникальный идентификатор определенного сообщения.
nameString
Уникальное название сообщения в Chat API. Соответствует названию ресурса сообщения в Chat API.
textString
Текст сообщения.
timeString (Timestamp format)
Время создания сообщения.

users

Пользователи, которые добавили приложение Chat "ИИ-помощник" в чат-группу Chat.

Поля
Document IDString
Уникальный идентификатор определенного пользователя.
accessTokenString
Токен доступа, предоставленный во время авторизации пользователя OAuth 2.0, используется для вызова API Google Workspace.
refreshTokenString
Токен обновления, предоставленный во время авторизации пользователя OAuth 2.0.

Вот как создать базу данных Firestore:

Google API Console

  1. В Google API Console нажмите Меню > Firestore.

    Перейти в Firestore

  2. Нажмите Создать базу данных.

  3. В разделе Выберите режим Firestore нажмите Нативный режим.

  4. Нажмите Продолжить.

  5. Настройте базу данных:

    1. В разделе Название базы данных оставьте идентификатор базы данных (default).

    2. В разделе Тип местоположения выберите Регион.

    3. В поле Регион укажите регион для базы данных, например us-central1. Чтобы обеспечить наилучшее качество связи, выберите тот же регион, что и для Cloud Functions приложения Chat, или регион, расположенный рядом с ним.

  6. Нажмите Создать базу данных.

gcloud CLI

  • Чтобы создать базу данных Firestore в собственном режиме:

    gcloud firestore databases create \
    --location=LOCATION \
    --type=firestore-native

    Замените LOCATION названием региона Firestore, например us-central1. Чтобы обеспечить наилучшее качество связи, выберите тот же регион, что и для Cloud Functions приложения Chat, или ближайший к нему.

Как создать и развернуть приложение Chat

Теперь, когда ваш облачный проект Google Cloud создан и настроен, вы можете создать и развернуть приложение Chat. В этом разделе вы выполните следующие действия:

  1. Создайте и разверните две функции Cloud Functions. Один для обработки событий взаимодействия Chat, а другой – для обработки событий издатель-подписчик.
  2. Создайте и разверните приложение Chat на странице конфигурации Google Chat API.

Как создать и развернуть функции Cloud Functions

В этом разделе вы создадите и развернете две функции Cloud Functions:

  • app: размещает и запускает код приложения Chat, который отвечает на события, полученные от Chat в виде HTTP-запросов.
  • eventsApp: получает и обрабатывает события чат-групп Chat, например сообщения от Pub/Sub.

Вместе эти функции Cloud Functions составляют логику приложения чат-бота на основе ИИ.

Перед созданием функций Cloud Functions можно ознакомиться с образцом кода, размещенным на GitHub.

Посмотреть на GitHub

Создание и развертывание app

Google API Console

  1. Скачайте код с GitHub в виде ZIP-файла.

    Как скачать ZIP-файл

  2. Распакуйте скачанный ZIP-файл.

    Извлеченная папка содержит весь репозиторий примеров Google Workspace.

  3. В извлеченной папке перейдите в каталог add-ons-samples-main/node/chat/ai-knowledge-assistant.

  4. В каталоге add-ons-samples/node/chat/ai-knowledge-assistant добавьте файл credentials.json, который вы скачали при создании учетных данных идентификатора клиента OAuth для аутентификации и авторизации.

  5. Сжать содержимое папки ai-knowledge-assistant в ZIP-архив.

    ZIP-файл должен содержать следующие файлы и папки:

    • .gcloudignore
    • .gitignore
    • README.md
    • deploy.sh
    • env.js
    • events_index.js
    • http_index.js
    • index.js
    • credentials.json
    • package-lock.json
    • package.json
    • controllers/
    • model/
    • services/
    • test/
  6. В Google API Console нажмите на значок меню > Cloud Functions.

    Перейти к Cloud Functions

    Убедитесь, что выбран проект Google Cloud для приложения Chat.

  7. Нажмите Создать функцию.

  8. На странице Создать функцию настройте функцию:

    1. В разделе Среда выберите Функция Cloud Run.
    2. В поле Название функции введите app.
    3. В разделе Регион выберите регион, например us-central1. Этот регион должен совпадать с регионом, который вы указали в авторизованном URI перенаправления при создании учетных данных идентификатора клиента OAuth для аутентификации и авторизации.
    4. В разделе Тип триггера выберите HTTPS.
    5. В разделе Аутентификация выберите Разрешить вызовы без аутентификации.
    6. Нажмите Далее.
  9. В разделе Среда выполнения выберите Node.js 20.

  10. В поле Точка входа удалите текст по умолчанию и введите app.

  11. В разделе Исходный код выберите Загрузка ZIP-архива.

  12. В разделе Целевой сегмент создайте или выберите сегмент:

    1. Нажмите Поиск.
    2. Выберите сегмент.
    3. Нажмите Выбрать.

    Google Cloud загрузит ZIP-файл в этот сегмент и извлечет из него файлы компонентов. Затем Cloud Functions копирует файлы компонентов в функцию Cloud Functions.

  13. В разделе Zip file (ZIP-файл) загрузите ZIP-файл, который вы скачали с GitHub, извлекли из него файлы и снова сжали:

    1. Нажмите Поиск.
    2. Найдите и выберите ZIP-файл.
    3. Нажмите Открыть.
  14. Нажмите Развернуть.

    Откроется страница Сведения о функции Cloud Functions, на которой будет показана ваша функция с двумя индикаторами выполнения: один для сборки, а другой – для сервиса. Когда оба индикатора исчезнут и будут заменены галочкой, функция будет развернута и готова к работе.

  15. Измените образец кода, чтобы задать константы:

    1. На странице Сведения о функции Cloud Functions нажмите Изменить.
    2. Нажмите Далее.
    3. В разделе Исходный код выберите Встроенный редактор.
    4. В редакторе оперативного редактирования откройте и измените файл env.js:
      1. Установите для параметра project идентификатор проекта Cloud.
      2. Установите для параметра location значение региона функции Cloud Functions, например us-central1.
  16. Нажмите Развернуть.

gcloud CLI

  1. Клонируйте код с сайта GitHub:

    git clone https://github.com/googleworkspace/add-ons-samples.git
  2. Перейдите в каталог, в котором хранится код приложения Chat для ИИ-помощника:

    cd add-ons-samples/node/chat/ai-knowledge-assistant
  3. В каталоге add-ons-samples/node/chat/ai-knowledge-assistant добавьте файл credentials.json, который вы скачали при создании учетных данных идентификатора клиента OAuth для аутентификации и авторизации.

  4. Измените файл env.js, чтобы задать переменные среды:

    1. Установите для параметра project идентификатор вашего облачного проекта.
    2. Установите для параметра location значение региона функции Cloud Functions, например us-central1.
  5. Разверните функцию Cloud Functions в Google Cloud:

    gcloud functions deploy app \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=app \
    --trigger-http \
    --allow-unauthenticated

    Замените REGION значением регион функции Cloud Functions, чтобы оно совпадало со значением, заданным в файле env.js, например us-central1.

Создание и развертывание eventsApp

Google API Console

  1. В Google API Console нажмите на значок меню > Cloud Functions.

    Перейти к Cloud Functions

    Убедитесь, что выбран проект Google Cloud для приложения Chat.

  2. Нажмите Создать функцию.

  3. На странице Создать функцию настройте функцию:

    1. В разделе Среда выберите Функция Cloud Run.
    2. В поле Название функции введите eventsApp.
    3. В разделе Регион выберите регион, например us-central1. Этот регион должен совпадать с регионом, который вы указали в авторизованном URI перенаправления при создании учетных данных идентификатора клиента OAuth для аутентификации и авторизации.
    4. В разделе Тип триггера выберите Cloud Pub/Sub.
    5. В разделе Тема Cloud Pub/Sub выберите название созданной вами темы Pub/Sub в формате projects/PROJECT/topics/events-api, где PROJECT – идентификатор вашего облачного проекта.
    6. Если вы видите сообщение, начинающееся с Service account(s) might not have enough permissions to deploy the function with the selected trigger., нажмите Предоставить все.
    7. Нажмите Далее.
  4. В разделе Среда выполнения выберите Node.js 20.

  5. В поле Точка входа удалите текст по умолчанию и введите eventsApp.

  6. В разделе Исходный код выберите Zip из Cloud Storage.

  7. В разделе Облачное хранилище нажмите Обзор.

  8. Выберите сегмент, в который вы загрузили ZIP-файл при создании функции Cloud Functions app.

  9. Нажмите на загруженный ZIP-файл.

  10. Нажмите Выбрать.

  11. Нажмите Развернуть.

    Откроется страница Сведения о функции Cloud Functions, на которой будет показана ваша функция и три индикатора выполнения: для сборки, сервиса и триггера. Когда все три индикатора прогресса исчезнут и будут заменены галочкой, функция будет развернута и готова к работе.

  12. Измените образец кода, чтобы задать константы:

    1. На странице Сведения о функции Cloud Functions нажмите Изменить.
    2. Нажмите Далее.
    3. В разделе Исходный код выберите Встроенный редактор.
    4. В редакторе оперативного редактирования откройте и измените файл env.js:
      1. Установите для параметра project идентификатор проекта Cloud.
      2. Установите для параметра location значение региона функции Cloud Functions, например us-central1.
  13. Нажмите Развернуть.

gcloud CLI

  1. Если вы ещё не перешли в каталог, содержащий код приложения Chat – помощника на основе ИИ, который вы ранее клонировали из GitHub, сделайте это в интерфейсе командной строки gcloud:

    cd add-ons-samples/node/chat/ai-knowledge-assistant
  2. В каталоге add-ons-samples/node/chat/ai-knowledge-assistant добавьте файл credentials.json, который вы скачали при создании учетных данных идентификатора клиента OAuth для аутентификации и авторизации.

  3. Измените файл env.js, чтобы задать переменные среды:

    1. Установите для параметра project идентификатор вашего облачного проекта.
    2. Установите для параметра location значение региона функции Cloud Functions, например us-central1.
  4. Разверните функцию Cloud Functions в Google Cloud:

    gcloud functions deploy eventsApp \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=eventsApp \
    --trigger-topic=events-api

    Замените REGION значением регион функции Cloud Functions, чтобы оно совпадало со значением, заданным в файле env.js, например us-central1.

Скопируйте URL триггера функции Cloud Functions app

Вы вставите URL триггера appфункции Cloud Functions в следующем разделе, когда будете настраивать приложение Chat в Google API Console.

Google API Console

  1. В Google API Console нажмите на значок меню > Cloud Functions.

    Перейти к Cloud Functions

  2. В столбце Название списка функций Cloud Functions нажмите на значок app.

  3. Нажмите Триггер.

  4. Скопируйте URL.

gcloud CLI

  1. Опишите appфункцию Cloud Functions:

    gcloud functions describe app
  2. Скопируйте свойство url.

Как настроить приложение Chat в Google API Console

В этом разделе рассказывается, как настроить Chat API в Google API Console, указав информацию о приложении Chat, в том числе его название и URL триггера облачной функции, которой оно отправляет события взаимодействия с Chat.

  1. В Google API Console нажмите Меню > API и сервисы > Включенные API и сервисы > Google Chat API > Конфигурация.

    Перейти к настройке Chat API

  2. В поле Название приложения введите AI knowledge assistant.

  3. В поле URL аватара введите https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svg.

  4. В поле Описание введите Answers questions with AI.

  5. Переведите переключатель Включить интерактивные функции в положение "Включено".

  6. В разделе Функциональность выберите Присоединяться к чат-группам и групповым чатам.

  7. В разделе Настройки подключения выберите URL конечной точки HTTP.

  8. Скопируйте адрес электронной почты сервисного аккаунта. Этот адрес электронной почты понадобится вам, когда вы будете предоставлять приложению Google Chat разрешение вызывать вашу функцию.

  9. В разделе Триггеры выберите Использовать общий URL конечной точки HTTP для всех триггеров.

  10. В поле URL конечной точки HTTP вставьте URL триггера функции Cloud Functions app в формате https://REGION-PROJECT_ID.cloudfunctions.net/app, где REGION – регион функции Cloud Functions, например us-central1, а PROJECT_ID – идентификатор проекта созданного вами облачного проекта.

  11. В разделе Видимость выберите Сделать это приложение Google Chat доступным для определенных пользователей и групп в вашем домене и введите свой адрес электронной почты.

  12. При необходимости в разделе Журналы выберите Регистрировать ошибки в Cloud Logging.

  13. Нажмите Сохранить. Появится сообщение о том, что конфигурация сохранена.

Приложение Chat готово получать сообщения и отвечать на них.

Как протестировать приложение Chat

Протестируйте приложение Chat "ИИ-помощник" в чат-группе с сообщениями, задавая вопросы, на которые оно может ответить.

Вот несколько способов протестировать приложение "Чат" с ИИ-помощником:

  • Добавьте приложение Chat с ИИ-помощником в существующую чат-группу и задавайте вопросы, относящиеся к этой чат-группе.
  • Создайте чат-группу и опубликуйте в ней несколько сообщений, которые будут использоваться в качестве источника данных. Сообщения могут быть сгенерированы Gemini по запросу, например Answer 20 common onboarding questions employees ask their teams.. Также можно вставить несколько абзацев из руководства по разработке с помощью Chat и задать вопросы по этому тексту.

В этом руководстве мы создадим чат-группу Chat и вставим в нее несколько абзацев из обзора разработки для Chat.

  1. Откройте Google Chat.

    Перейти в Google Chat

  2. Чтобы создать чат-группу:

    1. Нажмите на значок Создать чат > Создать чат-группу.

    2. В поле Название чат-группы введите Testing AI knowledge assistant app.

    3. В разделе Для чего предназначена чат-группа? выберите Совместная работа.

    4. В разделе Настройки доступа выберите, кто может получить доступ к чат-группе.

    5. Нажмите Создать.

  3. Добавьте сообщения, которые будут использоваться в качестве источника данных:

    1. В браузере откройте руководство по разработке для Chat.

    2. Скопируйте и вставьте содержимое руководства в созданную чат-группу.

  4. Добавьте приложение Chat "ИИ-помощник":

    1. В поле чата введите @AI knowledge assistant и в появившемся меню выберите приложение Chat с ИИ-помощником, а затем нажмите enter.

    2. Появится сообщение с вопросом, хотите ли вы добавить приложение "ИИ в чате" в чат-группу. Нажмите Добавить в чат-группу.

    3. Если вы впервые добавляете приложение Chat в чат-группу, вам необходимо настроить аутентификацию и авторизацию для приложения Chat:

      1. Нажмите Настроить.
      2. Откроется новое окно или вкладка браузера, в котором вам будет предложено выбрать аккаунт Google. Выберите аккаунт, который вы тестируете.
      3. Проверьте разрешения, которые запрашивает приложение "ИИ-помощник по знаниям". Чтобы предоставить разрешения, нажмите Разрешить.
      4. Появится сообщение You may close this page now.. Закройте окно или вкладку браузера и вернитесь в чат-группу.
  5. Задать вопрос:

    1. В поле чата введите вопрос, например:What are Google Chat apps?

    2. Ответы на вопросы дает приложение Chat с ИИ-помощником.

Рекомендации, альтернативные варианты архитектуры и дальнейшие действия

В этом разделе рассматриваются другие способы создания приложения "Чат" на основе ИИ.

Firestore, Cloud Storage или вызов List Messages в Chat API

В этом руководстве рекомендуется хранить данные чат-групп, например сообщения, в базе данных Firestore, поскольку это повышает производительность по сравнению с вызовом метода list для ресурса Message с помощью Chat API каждый раз, когда приложение Chat отвечает на вопрос. Кроме того, многократный вызов list messages может привести к тому, что приложение Chat достигнет лимита квоты API.

Однако если история чата в чат-группе Chat станет слишком длинной, использование Firestore может оказаться дорогостоящим.

Cloud Storage – альтернатива Firestore. Для каждой чат-группы, в которой активен ИИ-помощник Chat, создается отдельный объект. Каждый объект представляет собой текстовый файл, содержащий все сообщения из чат-группы. Преимущество этого подхода в том, что весь контент текстового файла можно сразу передать в Vertex AI с Gemini, но недостаток в том, что для обновления истории чата требуется больше усилий, поскольку в Cloud Storage можно только заменить объект, а не добавить к нему данные. Этот подход не имеет смысла, если вы регулярно обновляете историю переписки, но будет хорошим выбором, если вы периодически, например раз в неделю, обновляете историю переписки пакетами.

Устранение неполадок

Если приложение Google Chat или карточка возвращает ошибку, в интерфейсе Chat появляется сообщение "Что-то пошло не так". или "Не удалось обработать запрос". Иногда в интерфейсе Chat не показывается сообщение об ошибке, но приложение Chat или карточка выдает неожиданный результат, например не появляется сообщение на карточке.

Хотя в интерфейсе Chat может не показываться сообщение об ошибке, при включенном ведении журнала ошибок для приложений Chat вам будут доступны подробные сообщения об ошибках и данные журнала, которые помогут устранить неполадки. Чтобы узнать, как просматривать, отлаживать и исправлять ошибки, ознакомьтесь с разделом Устранение неполадок в Google Chat.

Организовать

Чтобы избежать списания средств с аккаунта Google Cloud за ресурсы, использованные в этом руководстве, рекомендуем удалить облачный проект.

  1. В Google API Console перейдите на страницу Управление ресурсами. Нажмите Меню > IAM и администрирование > Управление ресурсами.

    Перейти в Менеджер ресурсов

  2. В списке проектов выберите проект, который хотите удалить, и нажмите Удалить .
  3. В диалоговом окне введите идентификатор проекта и нажмите Закрыть, чтобы удалить проект.