Responde preguntas basadas en conversaciones de chat con la app de chat de IA de Gemini

En este instructivo, se muestra cómo crear una app de Google Chat que responda preguntas basadas en conversaciones en espacios de Chat con IA generativa potenciada por Vertex AI con Gemini. La app de Chat usa la API de Google Workspace Events y Pub/Sub para reconocer y responder preguntas publicadas en espacios de Chat en tiempo real, incluso cuando no se mencionan.

La app de Chat usa todos los mensajes enviados en el espacio como fuente de datos y base de conocimiento: cuando alguien hace una pregunta, la app de Chat busca respuestas compartidas antes y, luego, comparte una. Si no se encuentra una respuesta, dice que no se puede responder. En cada respuesta, los usuarios pueden hacer clic en el botón de acción de un accesorio para @mencionar a un administrador del espacio y pedir una respuesta. Con Gemini AI, la app de Google Chat adapta y aumenta su base de conocimiento a medida que se entrena continuamente en las conversaciones en los espacios a los que se agrega.

A continuación, se muestra cómo funciona la app de Chat en un espacio de integración y asistencia para empleados:

  • Mencionar que la app de asistente de conocimiento de IA la agrega a un espacio
    Figura 1: Carlos agrega la app de Chat del asistente de conocimiento de IA a un espacio de Chat.
  • Dana hace una pregunta.
    Figura 2: Dana pregunta si la empresa ofrece capacitación para hablar en público.
  • La app de Chat del asistente de conocimiento de IA responde la pregunta.
    Figura 3: La app de Chat del asistente de conocimiento de IA le indica a Vertex AI con Gemini que responda la pregunta de Dana en función del historial de conversaciones del espacio de Chat y, luego, comparte la respuesta.

Requisitos previos

Objetivos

  • Compila una app de Chat que use IA generativa para responder preguntas basadas en el conocimiento compartido en las conversaciones del espacio de Chat.
  • Con la IA generativa:
    • Detecta y responde preguntas de los empleados.
    • Aprende continuamente de conversaciones en curso en un espacio de Chat.
  • Detecta y responde mensajes en un espacio de Chat en tiempo real, incluso cuando la app de Chat no se envía directamente.
  • Conserva los mensajes escribiendo en una base de datos de Firestore y leyendo desde ella.
  • Menciona a los administradores del espacio cuando no se encuentre una respuesta a una pregunta para facilitar la colaboración en un espacio de Chat.

Arquitectura

En el siguiente diagrama, se muestra la arquitectura de los recursos de Google Workspace y Google Cloud que usa la app de Chat del asistente de conocimiento de IA.

Diagrama de arquitectura de la app de Chat del asistente de conocimiento de IA

La app de Chat del asistente de conocimiento de IA funciona de la siguiente manera:

  • Un usuario agrega la app de Chat del asistente de conocimiento de IA a un espacio de Chat:

    1. La app de Chat le solicita al usuario que la agregó al espacio de Chat que configure la autenticación y la autorización.

    2. La app de Chat recupera los mensajes del espacio llamando al método spaces.messages.list en la API de Chat y, luego, almacena los mensajes recuperados en una base de datos de Firestore.

    3. La app de Chat llama al método subscriptions.create en la API de Google Workspace Events para comenzar a escuchar eventos, como mensajes, en el espacio. El extremo de notificación de la suscripción es un tema de Pub/Sub que usa Eventarc para reenviar el evento a la app de Chat.

    4. La app de Chat publica un mensaje de introducción en el espacio.

  • Un usuario en el espacio de Chat publica un mensaje:

    1. La app de Chat recibe el mensaje en tiempo real desde el tema de Pub/Sub.

    2. La app de Chat agrega el mensaje a la base de datos de Firestore.

      Si, luego, un usuario edita o borra el mensaje, la app de Chat recibe el evento actualizado o borrado en tiempo real y, luego, actualiza o borra el mensaje en la base de datos de Firestore.

    3. La app de Chat envía el mensaje a Vertex AI con Gemini:

      1. La instrucción le indica a Vertex AI con Gemini que verifique si el mensaje incluye una pregunta. Si es así, Gemini responde la pregunta según el historial de mensajes del espacio de Chat guardado en Firestore, y la app de Google Chat envía el mensaje al espacio de Chat. Si no es así, no respondas.

      2. Si Vertex AI con Gemini responde la pregunta, la app de Chat publica la respuesta llamando al método spaces.messages.create en la API de Chat con la autenticación de la app.

        Si Vertex AI con Gemini no puede responder la pregunta, la app de Chat publica un mensaje en el que se indica que no puede encontrar una respuesta a esa pregunta en el historial del espacio de Chat.

        Los mensajes siempre incluyen un botón de acción de accesorios en el que los usuarios pueden hacer clic, lo que hace que la app de Chat @mencione a un administrador del espacio para pedirle que responda.

  • La app de Chat recibe una notificación de ciclo de vida de la API de Google Workspace Events que indica que la suscripción al espacio de Chat está a punto de vencer:

    1. La app de Chat envía una solicitud para renovar la suscripción llamando al método subscriptions.patch en la API de Google Workspace Events.
  • La app de Chat se quita de un espacio de Chat:

    1. Para borrar la suscripción, la app de Chat llama al método subscriptions.delete en la API de Google Workspace Events.

    2. La app de Chat borra los datos del espacio de Chat de Firestore.

Revisa los productos que usa la app de Chat del asistente de conocimiento de IA

La app de Chat del asistente de conocimiento de IA usa los siguientes productos de Google Workspace y Google Cloud:

  • API de Vertex AI con Gemini: Una plataforma de IA generativa con la tecnología de Gemini. La app de Chat del asistente de conocimiento de IA usa la API de Vertex AI con Gemini para reconocer, comprender y responder las preguntas de los empleados.
  • API de Chat: Es una API para desarrollar apps de Google Chat que reciben y responden eventos de interacción de Chat, como mensajes. La app de Chat del asistente de conocimiento de IA usa la API de Chat para hacer lo siguiente:
    • Recibe y responde eventos de interacción enviados por Chat.
    • Enumera los mensajes que se enviaron en un espacio.
    • Publica respuestas a las preguntas de los usuarios en un espacio.
    • Configura atributos que determinen cómo aparece en Chat, como el nombre y la imagen de avatar.
  • API de Google Workspace Events: Esta API te permite suscribirte a eventos y administrar notificaciones de cambios en las aplicaciones de Google Workspace. La app de Chat del asistente de conocimiento de IA usa la API de Google Workspace Events para escuchar los mensajes publicados en un espacio de Chat, de modo que puede detectar y responder preguntas incluso cuando no se mencionan.
  • Firestore: Es una base de datos de documentos sin servidores. La app de Chat del asistente de conocimiento de IA usa Firestore para almacenar datos sobre los mensajes enviados en un espacio de Chat.
  • Pub/Sub: Pub/Sub es un servicio de mensajería escalable y asíncrono que separa los servicios que producen mensajes de los que los procesan. La app de Chat del asistente de conocimiento de IA usa Pub/Sub para recibir eventos de suscripción desde espacios de Chat.
  • Eventarc: Eventarc te permite compilar arquitecturas basadas en eventos sin tener que implementar, personalizar o mantener la infraestructura subyacente. La app de Chat del asistente de conocimiento de IA usa Eventarc para enrutar eventos de Pub/Sub a un espacio de Chat y a la Cloud Function que recibe y procesa los eventos de suscripción.
  • Cloud Functions: Un servicio de procesamiento ligero y sin servidores que te permite crear funciones independientes y de un solo propósito que pueden responder a eventos de interacción y suscripción de Chat sin tener que administrar un servidor o un entorno de ejecución. La app de Chat del asistente de conocimiento de IA usa dos Cloud Functions con los siguientes nombres:
    • app: Aloja el extremo HTTP al que Chat envía eventos de interacción y como una plataforma de procesamiento para ejecutar lógica que procese y responda a estos eventos.
    • eventsApp: Recibe y procesa eventos del espacio de Chat, como mensajes de una suscripción a Pub/Sub.
    Cloud Functions usa los siguientes productos de Google Cloud para compilar y alojar recursos de procesamiento:
    • Cloud Build: Una plataforma completamente administrada de integración, implementación y entrega continuas que ejecuta compilaciones automatizadas.
    • Cloud Run: Un entorno completamente administrado para ejecutar apps alojadas en contenedores.

Prepare el entorno

En esta sección, se muestra cómo crear y configurar un proyecto de Google Cloud para la app de Chat.

Crea un proyecto de Google Cloud

Consola de Google Cloud

  1. En la consola de Google Cloud, ve a Menú > IAM y administración > Crear un proyecto.

    Ir a Crear un proyecto

  2. En el campo Nombre del proyecto, ingresa un nombre descriptivo para tu proyecto.

    Opcional: Para editar el ID del proyecto, haz clic en Editar. El ID del proyecto no se puede cambiar después de que se crea el proyecto; por lo tanto, elige uno que cumpla con tus necesidades durante todo el ciclo de vida del proyecto.

  3. En el campo Ubicación, haz clic en Explorar para mostrar las posibles ubicaciones de tu proyecto. Luego, haga clic en Seleccionar.
  4. Haz clic en Crear. La consola de Google Cloud navega a la página Panel y tu proyecto se crea en unos minutos.

gcloud CLI

En uno de los siguientes entornos de desarrollo, accede a Google Cloud CLI (`gcloud`):

  • Cloud Shell: Para usar una terminal en línea con gcloud CLI ya configurada, activa Cloud Shell.
    Activar Cloud Shell
  • Shell local: Para usar un entorno de desarrollo local, instala e initialize la CLI de gcloud.
    Para crear un proyecto de Cloud, usa el comando “gcloud projects create”:
    gcloud projects create PROJECT_ID
    Reemplaza PROJECT_ID configurando el ID del proyecto que deseas crear.

Habilita la facturación para el proyecto de Cloud

Consola de Google Cloud

  1. En la consola de Google Cloud, ve a Facturación. Haz clic en Menú > Facturación > Mis proyectos.

    Ir a Facturación para Mis proyectos

  2. En Selecciona una organización, elige la organización asociada con tu proyecto de Google Cloud.
  3. En la fila del proyecto, abre el menú Acciones (), haz clic en Cambiar la facturación y elige la cuenta de Facturación de Cloud.
  4. Haz clic en Establecer cuenta.

gcloud CLI

  1. Para ver una lista de las cuentas de facturación disponibles, ejecuta lo siguiente:
    gcloud billing accounts list
  2. Vincula una cuenta de facturación con un proyecto de Google Cloud:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto de Cloud para el que deseas habilitar la facturación.
    • BILLING_ACCOUNT_ID es el ID de la cuenta de facturación que se vinculará al proyecto de Google Cloud.

Habilita las APIs

Consola de Google Cloud

  1. En la consola de Google Cloud, habilita la API de Google Chat, la API de Vertex AI, la API de Cloud Functions, la API de Firestore, la API de Cloud Build, la API de Pub/Sub, la API de Eventos de Google Workspace, la API de Eventarc y la API de Cloud Run Admin.

    Habilita las APIs

  2. Confirma que estás habilitando las APIs en el proyecto de Cloud correcto y, luego, haz clic en Siguiente.

  3. Confirma que estás habilitando las APIs correctas y, luego, haz clic en Habilitar.

gcloud CLI

  1. Si es necesario, configura el proyecto de Cloud actual con el que creaste:

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto de Cloud que creaste.

  2. Habilita la API de Google Chat, la API de Vertex AI, la API de Cloud Functions, la API de Firestore, la API de Cloud Build, la API de Pub/Sub, la API de Eventos de Google Workspace, la API de Eventarc y la API de Cloud Run Admin:

    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
    

Configura la autenticación y la autorización

La autenticación y la autorización permiten que la app de Chat acceda a los recursos en Google Workspace y Google Cloud.

En este instructivo, publicarás la app de Google Chat internamente, por lo que está bien usar información del marcador de posición. Antes de publicar la app de Google Chat de forma externa, reemplaza la información del marcador de posición por información real para la pantalla de consentimiento.

  1. En la consola de Google Cloud, ve al menú > APIs y servicios > Pantalla de consentimiento de OAuth.

    Ir a la pantalla de consentimiento de OAuth

  2. En Tipo de usuario, selecciona Interno y, luego, haz clic en Crear.

  3. En Nombre de la app, escribe AI knowledge assistant.

  4. En Correo electrónico de asistencia del usuario, selecciona tu dirección de correo electrónico o un Grupo de Google adecuado.

  5. En Información de contacto del desarrollador, ingresa tu dirección de correo electrónico.

  6. Haz clic en Save and Continue.

  7. Haz clic en Add or Remove Scopes. Aparecerá un panel con una lista de permisos para cada API que hayas habilitado en el proyecto de Cloud.

  8. En Agregar permisos de forma manual, pega el siguiente alcance:

    • https://www.googleapis.com/auth/chat.messages
  9. Haz clic en Add to Table.

  10. Haga clic en Update.

  11. Haz clic en Save and Continue.

  12. Revisa el resumen del registro de apps y, luego, haz clic en Volver al panel.

Crea credenciales de ID de cliente de OAuth

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.

  3. Haz clic en Tipo de aplicación > Aplicación web.

  4. En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.

  5. En URI de redireccionamiento autorizados, haz clic en Agregar URI.

  6. En URIs 1, escribe lo siguiente:

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

    Reemplaza lo siguiente:

    • REGION: Es la región de la Cloud Function, como us-central1. Más adelante, cuando crees las dos funciones de Cloud Functions, deberás establecer su región en este valor.
    • PROJECT_ID: Es el ID del proyecto de Cloud que creaste.
  7. Haz clic en Crear.

  8. En la ventana Se creó el cliente de OAuth, haz clic en Descargar JSON.

  9. Guarda el archivo descargado como client_secrets.json. Más adelante, cuando crees las dos funciones de Cloud Functions, deberás incluir el archivo client_secrets.json en cada implementación.

  10. Haz clic en OK.

Cree el tema de Pub/Sub

El tema de Pub/Sub funciona con la API de Google Workspace Events para suscribirse a eventos en un espacio de Chat, como mensajes, y notificar a la app de Chat en tiempo real.

A continuación, te mostramos cómo crear el tema de Pub/Sub:

Consola de Google Cloud

  1. En la consola de Google Cloud, ve al Menú > Pub/Sub.

    Ir a Pub/Sub

  2. Haz clic en Crear tema.

  3. En ID del tema, escribe events-api.

  4. Anula la selección de Agregar una suscripción predeterminada.

  5. En Encriptación, selecciona Clave de encriptación administrada por Google.

  6. Haz clic en Crear. Aparecerá el tema de Pub/Sub.

  7. Para que este tema de Pub/Sub y la API de eventos de Google Workspace funcionen en conjunto, otorga al usuario IAM de Chat el permiso para publicar en el tema de Pub/Sub:

    1. En el panel events-api, en PERMISOS, haz clic en Agregar principal.

    2. En Agregar principales, en Principales nuevas, escribe chat-api-push@system.gserviceaccount.com.

    3. En Asignar roles, en Selecciona un rol, selecciona Pub/Sub > Publicador de Pub/Sub.

    4. Haz clic en Guardar.

gcloud CLI

  1. Crea un tema de Pub/Sub con el ID del tema events-api:

    gcloud pubsub topics create events-api
    
  2. Otorga permiso al usuario de IAM de Chat para publicar en el tema de Pub/Sub:

    gcloud pubsub topics add-iam-policy-binding events-api \
    --member='serviceAccount:chat-api-push@system.gserviceaccount.com' \
    --role='roles/pubsub.publisher'
    

Crea la base de datos de Firestore

La base de datos de Firestore conserva y recupera datos de los espacios de Chat, como los mensajes. No debes definir el modelo de datos, que se establece de forma implícita en el código de muestra con los archivos model/message.js y services/firestore-service.js.

La base de datos de la app de Chat del asistente de conocimiento de IA usa un modelo de datos NoSQL basado en documentos de organizados en colecciones . Para obtener más información, consulta Modelo de datos de Firestore.

El siguiente diagrama es una descripción general del modelo de datos de la app de Chat del asistente de conocimiento de IA:

Modelo de datos de la base de datos de Firestore.

La raíz contiene dos colecciones:

  1. spaces, en el que cada documento representa un espacio de Chat al que se agrega la app de Chat. Cada mensaje se representa con un documento de la subcolección messages.

  2. users, en el que cada documento representa a un usuario que agregó la app de Chat a un espacio de Chat.

Visualiza definiciones de colecciones, documentos y campos

spaces

Un espacio de Chat que incluya la app de Chat del asistente de conocimiento de IA.

Campos
Document IDString
ID único de un espacio específico. Una parte del nombre del recurso del espacio en la API de Chat
messagesSubcollection of Documents (messages)
Mensajes enviados en el espacio de Chat Corresponde al Document ID de un message en Firebase.
spaceNameString
El nombre único del espacio en la API de Chat. Corresponde al nombre del recurso del espacio en la API de Chat.

messages

Mensajes enviados en el espacio de Chat

Campos
Document IDString
El ID único de un mensaje específico.
nameString
Es el nombre único de un mensaje en la API de Chat. Corresponde al nombre del recurso del mensaje en la API de Chat.
textString
El cuerpo del texto del mensaje.
timeString (Timestamp format)
La hora a la que se creó el mensaje.

users

Usuarios que agregaron la app de Chat del asistente de conocimiento de IA a un espacio de Chat.

Campos
Document IDString
Es el ID único de un usuario específico.
accessTokenString
El token de acceso otorgado durante la autorización del usuario de OAuth 2.0 que se usa para llamar a las APIs de Google Workspace.
refreshTokenString
El token de actualización otorgado durante la autorización del usuario de OAuth 2.0.

Aquí te mostramos cómo crear la base de datos de Firestore:

Consola de Google Cloud

  1. En la consola de Google Cloud, ve al Menú > Firestore.

    Ir a Firestore

  2. Haz clic en Crear base de datos.

  3. En Selecciona tu modo de Firestore, haz clic en Modo nativo.

  4. Haz clic en Continuar.

  5. Configura la base de datos:

    1. En Asigna un nombre a tu base de datos, deja el ID de base de datos como (default).

    2. En Tipo de ubicación, selecciona Región.

    3. En Región, especifica una región para la base de datos, como us-central1. Para obtener el mejor rendimiento, selecciona la misma ubicación o una cercana que la de las funciones de Cloud Functions de la app de Chat.

  6. Haz clic en Crear base de datos.

gcloud CLI

  • Crea una base de datos de Firestore en modo nativo:

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

    Reemplaza LOCATION por el nombre de una región de Firestore, como us-central1. Para obtener el mejor rendimiento, selecciona la misma ubicación o una cercana que la de las funciones de Cloud Functions de la app de Chat.

Crea e implementa la app de Chat

Ahora que creaste y configuraste tu proyecto de Google Cloud, está todo listo para compilar y, luego, implementar la app de Chat. En esta sección, harás lo siguiente:

  1. Crear e implementar dos Cloud Functions Uno para responder a eventos de interacción de Chat y otro para responder a eventos de Pub/Sub.
  2. Crea e implementa una app de Chat en la página de configuración de la API de Google Chat.

Crea e implementa las funciones de Cloud Functions

En esta sección, crearás y, luego, implementarás dos Cloud Functions llamadas:

  • app: Aloja y ejecuta el código de la app de Chat que responde a los eventos recibidos de Chat como solicitudes HTTP.
  • eventsApp: Recibe y procesa eventos del espacio de Chat, como mensajes de Pub/Sub.

En conjunto, estas funciones de Cloud Functions conforman la lógica de la aplicación de Chat del asistente de conocimiento de IA.

De manera opcional, antes de crear las Cloud Functions, tómate un momento para revisar y familiarizarte con el código de muestra alojado en GitHub.

Ver en GitHub

Crea e implementa app

Consola de Google Cloud

  1. Descarga el código de GitHub como un archivo ZIP.

    Descarga el archivo ZIP

  2. Extraiga el archivo ZIP que se descargó.

    La carpeta extraída contiene todo el repositorio de muestras de Google Workspace.

  3. En la carpeta extraída, navega hasta el directorio google-chat-samples-main/node/ai-knowledge-assistant.

  4. En el directorio google-chat-samples/node/ai-knowledge-assistant, agrega el archivo client_secrets.json que descargaste cuando creaste credenciales de ID de cliente de OAuth para autenticación y autorización.

  5. Comprime el contenido de la carpeta ai-knowledge-assistant en un archivo ZIP.

    El directorio raíz del archivo ZIP debe contener los siguientes archivos y carpetas:

    • .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/
  6. En la consola de Google Cloud, ve al menú > Cloud Functions.

    Ir a Cloud Functions

    Asegúrate de que el proyecto de Google Cloud para la app de Chat esté seleccionado.

  7. Haz clic en Crear función.

  8. En la página Crear función, configura tu función:

    1. En Entorno, selecciona 2nd gen.
    2. En Nombre de la función, escribe app.
    3. En Región, selecciona una región, como us-central1. Esta región debe coincidir con la región que estableciste en el URI de redireccionamiento autorizado cuando creaste credenciales de ID de cliente de OAuth para autenticación y autorización.
    4. En Tipo de activador, selecciona HTTPS.
    5. En Autenticación, selecciona Permitir invocaciones no autenticadas.
    6. Haz clic en Siguiente.
  9. En Entorno de ejecución, selecciona Node.js 20.

  10. En Punto de entrada, borra el texto predeterminado y, luego, ingresa app.

  11. En Código fuente, selecciona Carga ZIP.

  12. En Bucket de destino, crea o selecciona un bucket:

    1. Haz clic en Explorar.
    2. Elige un bucket.
    3. Haz clic en Seleccionar.

    Google Cloud sube el archivo ZIP a este bucket y extrae los archivos componentes. Luego, Cloud Functions copia los archivos componentes en Cloud Function.

  13. En Archivo ZIP, sube el archivo ZIP que descargaste de GitHub, que extrajiste y volviste a comprimir:

    1. Haz clic en Explorar.
    2. Navega hasta el archivo ZIP y selecciónalo.
    3. Haz clic en Abrir.
  14. Haz clic en Implementar.

    Se abrirá la página Detalle de Cloud Functions, y se mostrarán dos indicadores de progreso: uno para la compilación y otro para el servicio. Cuando ambos indicadores de progreso desaparecen y se reemplazan por una marca de verificación, tu función se implementa y está lista.

  15. Edita el código de muestra para establecer constantes:

    1. En la página de detalles de la Cloud Function, haz clic en Editar.
    2. Haz clic en Siguiente.
    3. En Código fuente, selecciona Editor intercalado.
    4. En el editor directo, abre y edita el archivo env.js:
      1. Configura el valor de project con el ID del proyecto de Cloud.
      2. Establece el valor de location en la región de Cloud Function, como us-central1.
  16. Haz clic en Implementar.

gcloud CLI

  1. Clona el código desde GitHub:

    git clone https://github.com/googleworkspace/google-chat-samples.git
    
  2. Cambia al directorio que contiene el código de esta app de Chat del asistente de conocimiento de IA:

    cd google-chat-samples/node/ai-knowledge-assistant
    
  3. En el directorio google-chat-samples/node/ai-knowledge-assistant, agrega el archivo client_secrets.json que descargaste cuando creaste credenciales de ID de cliente de OAuth para autenticación y autorización.

  4. Edita el archivo env.js para establecer variables de entorno:

    1. Configura el valor de project con el ID de tu proyecto de Cloud.
    2. Establece el valor de location en la región de Cloud Function, como us-central1.
  5. Implementa la Cloud Function en Google Cloud:

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

    Reemplaza REGION por el valor de la región de Cloud Functions para que coincida con el conjunto en el archivo env.js, como us-central1.

Crea e implementa eventsApp

Consola de Google Cloud

  1. En la consola de Google Cloud, ve al menú > Cloud Functions.

    Ir a Cloud Functions

    Asegúrate de que el proyecto de Google Cloud para la app de Chat esté seleccionado.

  2. Haz clic en Crear función.

  3. En la página Crear función, configura tu función:

    1. En Entorno, selecciona 2nd gen.
    2. En Nombre de la función, escribe eventsApp.
    3. En Región, selecciona una región, como us-central1. Esta región debe coincidir con la región que estableciste en el URI de redireccionamiento autorizado cuando creaste credenciales de ID de cliente de OAuth para autenticación y autorización.
    4. En Tipo de activador, selecciona Cloud Pub/Sub.
    5. En Tema de Cloud Pub/Sub, selecciona el nombre del tema de Pub/Sub que creaste, que tiene el formato projects/PROJECT/topics/events-api, en el que PROJECT es el ID del proyecto de Cloud.
    6. Si ves un mensaje que comienza a Service account(s) might not have enough permissions to deploy the function with the selected trigger., haz clic en Otorgar todo.
    7. Haz clic en Siguiente.
  4. En Entorno de ejecución, selecciona Node.js 20.

  5. En Punto de entrada, borra el texto predeterminado y, luego, ingresa eventsApp.

  6. En Código fuente, selecciona Zip from Cloud Storage.

  7. En la ubicación de Cloud Storage, haz clic en Explorar.

  8. Selecciona el bucket al que subiste el archivo ZIP cuando creaste la función app de Cloud Functions.

  9. Haz clic en el archivo ZIP que subiste.

  10. Haz clic en Seleccionar.

  11. Haz clic en Implementar.

    Se abrirá la página Detalle de Cloud Functions, y aparecerá tu función con tres indicadores de progreso: uno para la compilación, otro para el servicio y otro para el activador. Cuando los tres indicadores de progreso desaparecen y se reemplazan por una marca de verificación, tu función está implementada y lista.

  12. Edita el código de muestra para establecer constantes:

    1. En la página de detalles de la Cloud Function, haz clic en Editar.
    2. Haz clic en Siguiente.
    3. En Código fuente, selecciona Editor intercalado.
    4. En el editor directo, abre y edita el archivo env.js:
      1. Configura el valor de project con el ID del proyecto de Cloud.
      2. Establece el valor de location en la región de Cloud Function, como us-central1.
  13. Haz clic en Implementar.

gcloud CLI

  1. En la CLI de gcloud, si aún no estás allí, cambia al directorio que contiene el código de esta app de Chat del asistente de conocimiento de IA que clonaste anteriormente desde GitHub:

    cd google-chat-samples/node/ai-knowledge-assistant
    
  2. En el directorio google-chat-samples/node/ai-knowledge-assistant, agrega el archivo client_secrets.json que descargaste cuando creaste credenciales de ID de cliente de OAuth para autenticación y autorización.

  3. Edita el archivo env.js para establecer variables de entorno:

    1. Configura el valor de project con el ID de tu proyecto de Cloud.
    2. Establece el valor de location en la región de Cloud Function, como us-central1.
  4. Implementa la Cloud Function en Google Cloud:

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

    Reemplaza REGION por el valor de la región de Cloud Functions para que coincida con el conjunto en el archivo env.js, como us-central1.

Copiar la URL del activador de Cloud Functions app

Pega la URL del activador de Cloud Functions app en la siguiente sección cuando configures la app de Chat en la consola de Google Cloud.

Consola de Google Cloud

  1. En la consola de Google Cloud, ve al menú > Cloud Functions.

    Ir a Cloud Functions

  2. En la columna Nombre de la lista de Cloud Functions, haz clic en app.

  3. Haz clic en Activar.

  4. Copia la URL.

gcloud CLI

  1. Describe la Cloud Function app:

    gcloud functions describe app
    
  2. Copia la propiedad url.

Configura la app de Chat en la consola de Google Cloud

En esta sección, se muestra cómo configurar la API de Chat en la consola de Google Cloud con información sobre tu app de Chat, incluido el nombre de la app de Chat y la URL activadora de la Cloud Function de la app de Chat a la que envía eventos de interacción de Chat.

  1. En la consola de Google Cloud, haz clic en Menú > Más productos > Google Workspace > Biblioteca de productos > API de Google Chat > Administrar > Configuración.

    Ir a la configuración de la API de Chat

  2. En Nombre de la app, escribe AI knowledge assistant.

  3. En URL del avatar, escribe https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svg.

  4. En Description, escribe Answers questions with AI.

  5. Haz clic en el botón de activación Enable Interactive features.

  6. En Funcionalidad, selecciona Unirse a espacios y conversaciones grupales.

  7. En Configuración de la conexión, selecciona URL de la aplicación.

  8. En URL de la app, pega la URL del activador de la Cloud Function app con el formato https://REGION-PROJECT_ID.cloudfunctions.net/app, en el que REGION es la región de la función de Cloud Functions, como us-central1 y PROJECT_ID es el ID del proyecto de Cloud que creaste.

  9. En Visibilidad, selecciona Hacer que esta app de Chat esté disponible para personas y grupos específicos de tu dominio de Workspace y, luego, ingresa tu dirección de correo electrónico.

  10. De manera opcional, en Registros, selecciona Registrar errores en Logging.

  11. Haz clic en Guardar. Aparecerá un mensaje de configuración guardada, lo que significa que la app de Chat está lista para probarla.

Prueba la app de Chat

Prueba la app de Chat del asistente de conocimiento de IA en un espacio de Chat con mensajes. Para ello, haz preguntas que la app de Chat del asistente de conocimiento de IA pueda responder.

Estas son algunas maneras de probar la app Chat del asistente de conocimiento de IA:

  • Agregar la app de Chat del asistente de conocimiento de IA a un espacio de Chat existente y hacer preguntas relevantes para ese espacio
  • Crea un espacio de Chat y publica algunos mensajes para usarlos como fuente de datos. Los mensajes se pueden obtener de Gemini con una instrucción como Answer 20 common onboarding questions employees ask their teams.. O bien, puedes pegar algunos párrafos de la guía de descripción general para desarrollar con Chat y, luego, hacer preguntas al respecto.

Para este instructivo, creemos un espacio de Chat y peguemos algunos párrafos de la guía de descripción general del desarrollo con Chat.

  1. Abre Google Chat.

    Ir a Google Chat

  2. Sigue estos pasos para crear un espacio de Chat:

    1. Haz clic en New Chat > Crear un espacio.

    2. En Nombre del espacio, escribe Testing AI knowledge assistant app.

    3. En ¿Para qué sirve este espacio?, selecciona Colaboración.

    4. En Configuración de acceso, elige quién puede acceder al espacio.

    5. Haz clic en Crear.

  3. Agrega mensajes para usarlos como fuente de datos:

    1. En un navegador web, visita la guía de descripción general del desarrollo con Chat.

    2. Copia y pega el contenido de la guía en el espacio de Chat que creaste.

  4. Agrega la app de Chat del asistente de conocimiento de IA:

    1. En la barra para redactar mensajes, escribe @AI knowledge assistant y, en el menú de sugerencias que aparece, selecciona la app de Chat del asistente de conocimiento de IA y presiona enter.

    2. Aparecerá un mensaje en el que se te preguntará si quieres agregar la app de Chat del asistente de conocimiento de IA al espacio. Haz clic en Agregar al espacio.

    3. Si es la primera vez que agregas la app de Chat a un espacio, debes configurar la autenticación y autorización para la app de Chat:

      1. Haz clic en Configurar.
      2. Se abrirá una nueva ventana o pestaña del navegador en la que se te solicitará que elijas una Cuenta de Google. Elige la cuenta con la que realizas la prueba.
      3. Revisa los permisos que solicita la app Chat del asistente de conocimientos de IA. Para otorgarlos, haz clic en Permitir.
      4. Aparecerá un mensaje que dice You may close this page now.. Cierra la ventana o pestaña del navegador y regresa al espacio de Chat.
  5. Realiza una pregunta:

    1. En la barra para redactar mensajes, ingresa una pregunta como What are Google Chat apps?

    2. La app de Chat del asistente de conocimiento de IA responde.

    3. De manera opcional, si la respuesta no es precisa o suficiente, para ayudar a mejorar el historial de conversaciones de la IA, haz clic en Obtener ayuda. La app de Chat del asistente de IA menciona a un administrador del espacio y le pide que responda. La próxima vez, la app de Chat del asistente de conocimiento de IA sabrá la respuesta.

Consideraciones, opciones de arquitectura alternativa y próximos pasos

En esta sección, se revisan otras formas en que se puede compilar la app de Chat del asistente de conocimiento de IA.

Firestore, Cloud Storage o la llamada a List Messages en la API de Chat

En este instructivo, se recomienda almacenar datos del espacio de Chat, como mensajes, en una base de datos de Firestore, ya que mejora el rendimiento en comparación con llamar al método list en el recurso Message con la API de Chat cada vez que la app de Chat responde una pregunta. Además, llamar a list messages de forma repetida puede hacer que la app de Chat alcance los límites de cuota de la API.

Sin embargo, si el historial de conversación de un espacio de Chat se vuelve demasiado largo, el uso de Firestore puede resultar costoso.

Cloud Storage es una alternativa a Firestore. Cada espacio en el que está activa la app de Chat del asistente de conocimiento de IA recibe su propio objeto, y cada uno es un archivo de texto que contiene todos los mensajes del espacio. La ventaja de este enfoque es que el contenido completo del archivo de texto se puede enviar a Vertex AI con Gemini a la vez, pero el inconveniente es que lleva más trabajo actualizar el historial de la conversación porque no puedes adjuntarlo a un objeto en Cloud Storage, solo reemplazarlo. Este enfoque no tiene sentido si actualizas con regularidad el historial de mensajes, pero sería una buena opción si actualizas por lotes el historial de mensajes de forma periódica, por ejemplo, una vez por semana.

Solucionar problemas

Cuando una app o una tarjeta de Google Chat muestran un error, la interfaz de Chat muestra el mensaje “Se produjo un error”. o "No se pudo procesar la solicitud". A veces, la IU de Chat no muestra ningún mensaje de error, pero la app o la tarjeta de Chat producen un resultado inesperado. Por ejemplo, puede que no aparezca un mensaje de tarjeta.

Aunque es posible que un mensaje de error no aparezca en la IU de Chat, hay mensajes de error descriptivos y datos de registro disponibles para ayudarte a corregir errores cuando está activado el registro de errores para las apps de Chat. Si necesitas ayuda para ver, depurar y corregir errores, consulta Cómo solucionar problemas y corregir errores de Google Chat.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en este instructivo, te recomendamos borrar el proyecto de Cloud.

  1. En la consola de Google Cloud, ve a la página Administrar recursos. Haz clic en Menú > IAM y administración > Administrar recursos.

    Ir a Resource Manager

  2. En la lista de proyectos, selecciona el que quieres borrar y haz clic en Borrar .
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.