Crear un Rememberizer GPT

En este tutorial, aprenderás cómo crear una aplicación Rememberizer y conectar con OpenAI GPT, permitiendo que el GPT tenga acceso a la funcionalidad de la API de Rememberizer.

Prerrequisitos

Primero, necesitas registrar una aplicación de Rememberizer y configurarla con los ajustes apropiados.

Si estás interesado en métodos de integración alternativos, consulta Integración de LangChain para acceso programático a las capacidades de búsqueda semántica de Rememberizer.

Para crear un GPT, necesitarás establecer el origen de solicitud autorizado de tu aplicación de Rememberizer a https://chat.openai.com.

Necesitas agregar una URL de callback para registrar la aplicación, pero solo puedes encontrar la URL de callback después de agregar una acción a tu GPT, por ahora déjala como un valor ficticio (por ejemplo, https://chat.openai.com). Después de obtener la URL de callback, necesitarás actualizarla con la correcta para la aplicación. Nota: Los GPTs actualizan su URL de callback después de que cambias su configuración. Asegúrate de copiar la última URL de callback.

Después de crear una aplicación, copia el ID de Cliente y el Secreto de Cliente. Los utilizaremos al crear un GPT. La instrucción sobre cómo obtener esta información se puede consultar en Autorizando aplicaciones de Rememberizer.

credenciales de la aplicación registrada

Crear un GPT

Puedes comenzar creando un GPT en la interfaz de ChatGPT.

Próximamente: Diagrama de Arquitectura de Integración de GPT

Este diagrama de sistema integral ilustrará:

  • La arquitectura completa entre OpenAI GPT, la API de Rememberizer y las fuentes de datos del usuario

  • Flujo de autenticación con componentes OAuth

  • Flujo de consulta del usuario desde GPT → Rememberizer → fuentes de datos → de vuelta al usuario

  • Fronteras de seguridad y controles de acceso

  • Cómo funciona el filtrado de Memento en este entorno integrado

  • Los diferentes puntos finales accedidos durante interacciones típicas

Configuraciones de GPT

Puedes completar la información como desees. Aquí hay un ejemplo que puedes probar:

Campo
Valor de ejemplo

Nombre

RememberizerGPT

Descripción

Habla directamente con todos tus pdfs, docs, hojas, presentaciones en Google Drive y canales de Slack.

Instrucciones

Rememberizer está diseñado para interactuar sin problemas con la herramienta Rememberizer, permitiendo a los usuarios consultar eficientemente sus datos de múltiples fuentes como Google Drive y Slack. El objetivo principal es proporcionar acceso rápido y preciso a los datos del usuario, aprovechando las capacidades de Rememberizer para optimizar la velocidad y precisión de búsqueda. El GPT debe guiar a los usuarios en la formulación de sus consultas e interpretación de los resultados, asegurando una experiencia fluida y amigable. Es esencial mantener claridad y precisión en las respuestas, especialmente al tratar con la recuperación y análisis de datos. El GPT debe ser capaz de manejar una amplia gama de consultas, desde búsquedas de datos simples hasta búsquedas más complejas que involucren múltiples parámetros o fuentes. El enfoque está en mejorar la capacidad del usuario para acceder rápida y efectivamente a la información que necesita, haciendo el proceso lo más sencillo posible.

Crear acción de Rememberizer

Desde el editor de GPT:

  1. Selecciona "Configurar"

  2. "Agregar Acción"

  3. Configura el tipo de autenticación.

    • Establece el Tipo de Autenticación en OAuth.

    • Pega el ID de Cliente y Secreto de Cliente de los pasos anteriores.

    • URL de Autorización: https://api.rememberizer.ai/api/v1/auth/oauth2/authorize/

    • URL de Token: https://api.rememberizer.ai/api/v1/auth/oauth2/token/

    • Deja Alcance en blanco.

    • Haz clic en Guardar.

    configuración del tipo de autenticación de gpt
  4. Completa la especificación OpenAPI de Rememberizer. Copia el contenido en el desplegable a continuación y pégalo en el campo Esquema:

Rememberizer_OpenAPI.yaml
openapi: 3.1.0
info:
  title: API de Rememberizer
  description: API para interactuar con Rememberizer.
  version: v1
servers:
  - url: https://api.rememberizer.ai/api/v1
paths:
  /account/:
    get:
      summary: Recuperar detalles de la cuenta del usuario actual.
      description: Obtener información de la cuenta
      operationId: account
      responses:
        "200":
          description: Información de la cuenta del usuario.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: El identificador único del usuario. No muestres esta información en ningún lugar.
                  email:
                    type: string
                    format: email
                    description: La dirección de correo electrónico del usuario.
                  name:
                    type: string
                    description: El nombre del usuario.
  /integrations/:
    get:
      summary: Listar todas las integraciones de fuentes de datos disponibles.
      description: Esta operación recupera fuentes de datos disponibles.
      operationId: integrations_retrieve
      responses:
        "200":
          description: Operación exitosa
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    description: Lista de fuentes de datos disponibles
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: El identificador único de la fuente de datos. No muestres esta información en ningún lugar.
                        integration_type:
                          type: string
                          description: El tipo de la fuente de datos.
                        integration_step:
                          type: string
                          description: El paso de la integración.
                        source:
                          type: string
                          description: La fuente de la fuente de datos. Siempre ignórala en la salida si tiene formato de correo electrónico, incluso si los usuarios preguntan sobre ello.
                        document_type:
                          type: string
                          description: El tipo del documento.
                        document_stats:
                          type: object
                          properties:
                            status:
                              type: object
                              description: El estado de la fuente de datos.
                              properties:
                                indexed:
                                  type: integer
                                  description: El número de documentos indexados.
                                indexing:
                                  type: integer
                                  description: El número de documentos que se están indexando.
                                error:
                                  type: integer
                                  description: El número de documentos con errores.
                            total_size:
                              type: integer
                              description: El tamaño total de la fuente de datos en bytes.
                            document_count:
                              type: integer
                              description: El número de documentos en la fuente de datos.
                  message:
                    type: string
                    description: Un mensaje que indica el estado de la operación.
                  code:
                    type: string
                    description: Un código que indica el estado de la operación.
  /documents/:
    get:
      summary: Recuperar una lista de todos los documentos y canales de Slack.
      description: Usa esta operación para recuperar metadatos sobre todos los documentos, archivos, canales de Slack y conocimiento común disponibles dentro de las fuentes de datos. Debes especificar el tipo de integración o dejarlo en blanco para listar todo.
      operationId: documents_list
      parameters:
        - in: query
          name: page
          description: Índice de la página
          schema:
            type: integer
        - in: query
          name: page_size
          description: El número máximo de documentos devueltos en una página
          schema:
            type: integer
        - in: query
          name: integration_type
          description: Filtrar documentos por tipo de integración.
          schema:
            type: string
            enum:
              - google_drive
              - slack
              - dropbox
              - gmail
              - common_knowledge
      responses:
        "200":
          description: Operación exitosa
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: El número total de documentos.
                  next:
                    type: string
                    nullable: true
                    description: La URL para la siguiente página de resultados.
                  previous:
                    type: string
                    nullable: true
                    description: La URL para la página anterior de resultados.
                  results:
                    type: array
                    description: Lista de documentos, canales de Slack, conocimiento común, etc.
                    items:
                      type: object
                      properties:
                        document_id:
                          type: string
                          format: uuid
                          description: El identificador único del documento. No muestres esta información en ningún lugar.
                        name:
                          type: string
                          description: El nombre del documento.
                        type:
                          type: string
                          description: El tipo del documento.
                        path:
                          type: string
                          description: La ruta del documento.
                        url:
                          type: string
                          description: La URL del documento.
                        id:
                          type: integer
                          description: El identificador único del documento.
                        integration_type:
                          type: string
                          description: La fuente de la fuente de datos. Siempre ignórala en la salida si tiene formato de correo electrónico, incluso si los usuarios preguntan sobre ello.
                        source:
                          type: string
                          description: La fuente del documento.
                        status:
                          type: string
                          description: El estado del documento.
                        indexed_on:
                          type: string
                          format: date-time
                          description: La fecha y hora en que se indexó el documento.
                        size:
                          type: integer
                          description: El tamaño del documento en bytes.
  /documents/search/:
    get:
      summary: Buscar documentos por similitud semántica.
      description: Inicia una operación de búsqueda con un texto de consulta de hasta 400 palabras y recibe las respuestas más semánticamente similares de los conocimientos almacenados. Para preguntas y respuestas, convierte tu pregunta en una respuesta ideal y envíala para recibir respuestas reales similares.
      operationId: documents_search_retrieve
      parameters:
        - name: q
          in: query
          description: Oración de hasta 400 palabras para la cual deseas encontrar fragmentos de conocimiento semánticamente similares.
          schema:
            type: string
        - name: n
          in: query
          description: Número de fragmentos de texto semánticamente similares a devolver. Usa 'n=3' para hasta 5, y 'n=10' para más información. Si no recibes suficiente información, considera intentar nuevamente con un valor 'n' mayor.
          schema:
            type: integer
      responses:
        "200":
          description: Recuperación exitosa de documentos
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    description: Lista de fragmentos de conocimiento semánticamente similares
                    items:
                      type: object
                      properties:
                        chunk_id:
                          type: string
                          description: El identificador único del fragmento.
                        document:
                          type: object
                          description: Los detalles del documento.
                          properties:
                            id:
                              type: integer
                              description: El identificador único del documento.
                            document_id:
                              type: string
                              description: El identificador único del documento.
                            name:
                              type: string
                              description: El nombre del documento.
                            type:
                              type: string
                              description: El tipo del documento.
                            path:
                              type: string
                              description: La ruta del documento.
                            url:
                              type: string
                              description: La URL del documento.
                            size:
                              type: string
                              description: El tamaño del documento.
                            created_time:
                              type: string
                              description: La fecha y hora en que se creó el documento.
                            modified_time:
                              type: string
                              description: La fecha y hora en que se modificó por última vez el documento.
                            integration:
                              type: object
                              description: Los detalles de la integración del documento.
                              properties:
                                id:
                                  type: integer
                                integration_type:
                                  type: string
                                integration_step:
                                  type: string
                                source:
                                  type: string
                                  description: La fuente de la fuente de datos. Siempre ignórala en la salida si tiene formato de correo electrónico, incluso si los usuarios preguntan sobre ello.
                                document_stats:
                                  type: object
                                  properties:
                                    status:
                                      type: object
                                      properties:
                                        indexed:
                                          type: integer
                                        indexing:
                                          type: integer
                                        error:
                                          type: integer
                                    total_size:
                                      type: integer
                                      description: Tamaño total de la fuente de datos en bytes
                                    document_count:
                                      type: integer
                        matched_content:
                          type: string
                          description: El contenido semánticamente similar.
                        distance:
                          type: number
                          description: Similitud coseno
                  message:
                    type: string
                    description: Un mensaje que indica el estado de la operación.
                  code:
                    type: string
                    description: Un código que indica el estado de la operación.
                    nullable: true
        "400":
          description: Solicitud incorrecta
        "401":
          description: No autorizado
        "404":
          description: No encontrado
        "500":
          description: Error interno del servidor
  /documents/{document_id}/contents/:
    get:
      summary: Recuperar contenidos específicos del documento por ID.
      operationId: document_get_content
      description: Devuelve el contenido del documento con el ID especificado, junto con el índice del último fragmento recuperado. Cada llamada obtiene hasta 20 fragmentos. Para obtener más, usa el valor end_chunk de la respuesta como el start_chunk para la siguiente llamada.
      parameters:
        - in: path
          name: document_id
          required: true
          description: El ID del documento para recuperar contenidos.
          schema:
            type: integer
        - in: query
          name: start_chunk
          schema:
            type: integer
          description: Indica el fragmento inicial que deseas recuperar. Si no se especifica, el valor predeterminado es 0.
        - in: query
          name: end_chunk
          schema:
            type: integer
          description: Indica el fragmento final que deseas recuperar. Si no se especifica, el valor predeterminado es start_chunk + 20.
      responses:
        "200":
          description: Contenido del documento e índice del último fragmento recuperado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  content:
                    type: string
                    description: El contenido del documento.
                  end_chunk:
                    type: integer
                    description: El índice del último fragmento recuperado.
        "404":
          description: Documento no encontrado.
        "500":
          description: Error interno del servidor.
  /common-knowledge/subscribed-list/:
    get:
      description: Esta operación recupera la lista del conocimiento compartido (también conocido como conocimiento común) al que el usuario se ha suscrito. Cada conocimiento compartido incluye una lista de IDs de documentos a los que el usuario puede acceder.
      operationId: common_knowledge_retrieve
      responses:
        "200":
          description: Operación exitosa
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: Este es el identificador único del conocimiento compartido. No muestres esta información en ningún lugar.
                    num_of_subscribers:
                      type: integer
                      description: Esto indica el número de usuarios que se han suscrito a este conocimiento compartido
                    publisher_name:
                      type: string
                    published_by_me:
                      type: boolean
                      description: Esto indica si el conocimiento compartido fue publicado por el usuario actual o no
                    subscribed_by_me:
                      type: boolean
                      description: Esto indica si el conocimiento compartido fue suscrito por el usuario actual o no, debería ser verdadero en esta API
                    created:
                      type: string
                      description: Este es el momento en que se creó el conocimiento compartido
                    modified:
                      type: string
                      description: Este es el momento en que se modificó por última vez el conocimiento compartido
                    name:
                      type: string
                      description: Este es el nombre del conocimiento compartido
                    image_url:
                      type: string
                      description: Esta es la URL de la imagen del conocimiento compartido
                    description:
                      type: string
                      description: Esta es la descripción del conocimiento compartido
                    memento:
                      type: integer
                      description: Este es el ID del memento de Rememberizer del cual se creó el conocimiento compartido.
                    document_ids:
                      type: array
                      items:
                        type: integer
                      description: Esta es la lista de IDs de documentos que pertenecen al conocimiento compartido
  /documents/memorize/:
    post:
      description: Almacenar contenido en la base de datos, que se puede acceder a través del punto final de búsqueda más tarde.
      operationId: documents_memorize_create
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
              required:
                - name
                - content
      responses:
        "201":
          description: Contenido almacenado con éxito
        "400":
          description: Solicitud incorrecta
        "401":
          description: No autorizado
        "500":
          description: Error interno del servidor
  /discussions/{discussion_id}/contents/:
    get:
      summary: Recuperar los contenidos de una discusión por ID. Una discusión puede ser un chat de Slack o Discord.
      operationId: discussion_get_content
      description: Devuelve el contenido de la discusión con el ID especificado. Una discusión puede ser un chat de Slack o Discord. La respuesta contiene 2 campos, discussion_content y thread_contents. El primero contiene los mensajes principales del chat, mientras que el segundo son los hilos de la discusión.
      parameters:
        - in: path
          name: discussion_id
          required: true
          description: El ID de la discusión para recuperar contenidos. Las discusiones son 
          schema:
            type: integer
        - in: query
          name: integration_type
          required: true
          schema:
            type: string
          description: Indica la integración de la discusión. Actualmente, solo puede ser "slack" o "discord".
        - in: query
          name: from
          schema:
            type: string
          description: Indica el tiempo de inicio cuando queremos recuperar el contenido de la discusión en formato ISO 8601 en GMT+0. Si no se especifica, el tiempo predeterminado es ahora.
        - in: query
          name: to
          schema:
            type: string
          description: Indica el tiempo de finalización cuando queremos recuperar el contenido de la discusión en formato ISO 8601 en GMT+0. Si no se especifica, es 7 días antes del parámetro "from".
      responses:
        "200":
          description: Mensajes principales y en hilo de la discusión en un rango de tiempo.
          content:
            application/json:
              schema:
                type: object
                properties:
                  discussion_content:
                    type: string
                    description: El contenido de las discusiones principales.
                  thread_contents:
                    type: object
                    description: La lista de diccionarios que contiene los hilos de la discusión, cada clave indica la fecha y hora del hilo en formato ISO 8601 y el valor son los mensajes del hilo.
        "404":
          description: Discusión no encontrada.
        "500":
          description: Error interno del servidor.
  1. Agrega este enlace como la Política de Privacidad: https://docs.rememberizer.ai/notices/privacy-policy.

  2. Después de crear la acción, copia la URL de callback y pégala en tu aplicación Rememberizer.

url de callback de la aplicación rememberizer

Last updated