Criando um Rememberizer GPT

Neste tutorial, você aprenderá como criar um aplicativo Rememberizer e conectar com o OpenAI GPT, permitindo que o GPT tenha acesso à funcionalidade da API do Rememberizer.

Pré-requisito

Primeiro, você precisa registrar um aplicativo Rememberizer e configurá-lo com as configurações apropriadas.

Se você estiver interessado em métodos de integração alternativos, confira a Integração LangChain para acesso programático às capacidades de busca semântica do Rememberizer.

Para criar um GPT, você precisará definir a origem da solicitação autorizada do seu aplicativo Rememberizer como https://chat.openai.com.

Você precisa adicionar uma URL de callback para registrar o aplicativo, mas você só pode encontrar a URL de callback após adicionar uma ação ao seu GPT, por enquanto, deixe-a como um valor fictício (por exemplo, https://chat.openai.com). Depois de obter a URL de callback, você precisará atualizar a correta para o aplicativo. Nota: Os GPTs atualizam sua URL de callback após você alterar sua configuração. Certifique-se de copiar a URL de callback mais recente.

Após criar um aplicativo, copie o ID do Cliente e o Segredo do Cliente. Usaremos essas informações ao criar um GPT. As instruções sobre como obter essas informações podem ser visitadas em Autorizando aplicativos Rememberizer.

credenciais do aplicativo registrado

Criar um GPT

Você pode começar criando um GPT na interface do ChatGPT.

Em breve: Diagrama de Arquitetura de Integração do GPT

Este diagrama de sistema abrangente ilustrará:

  • A arquitetura completa entre OpenAI GPT, API do Rememberizer e fontes de dados do usuário

  • Fluxo de autenticação com componentes OAuth

  • Fluxo de consulta do usuário do GPT → Rememberizer → fontes de dados → de volta ao usuário

  • Limites de segurança e controles de acesso

  • Como a filtragem de Memento funciona neste ambiente integrado

  • Os diferentes endpoints acessados durante interações típicas

Configurações do GPT

Você pode preencher as informações como desejar. Aqui está um exemplo que você pode experimentar:

Campo
Valor de exemplo

Nome

RememberizerGPT

Descrição

Converse diretamente com todos os seus pdfs, docs, planilhas, apresentações no Google Drive e canais do Slack.

Instruções

O Rememberizer foi projetado para interagir perfeitamente com a ferramenta Rememberizer, permitindo que os usuários consultem seus dados de várias fontes, como Google Drive e Slack. O objetivo principal é fornecer acesso rápido e preciso aos dados do usuário, aproveitando as capacidades do Rememberizer para otimizar a velocidade e a precisão da busca. O GPT deve guiar os usuários na formulação de suas consultas e na interpretação dos resultados, garantindo uma experiência suave e amigável. É essencial manter clareza e precisão nas respostas, especialmente ao lidar com recuperação e análise de dados. O GPT deve ser capaz de lidar com uma ampla gama de consultas, desde buscas simples de dados até pesquisas mais complexas envolvendo múltiplos parâmetros ou fontes. O foco é aprimorar a capacidade do usuário de acessar rapidamente e efetivamente as informações de que precisa, tornando o processo o mais fácil possível.

Criar ação Rememberizer

Do editor GPT:

  1. Selecione "Configurar"

  2. "Adicionar Ação"

  3. Configure o tipo de autenticação.

    • Defina o Tipo de Autenticação como OAuth.

    • Cole o Client ID e o Client Secret das etapas acima.

    • URL de Autorização: https://api.rememberizer.ai/api/v1/auth/oauth2/authorize/

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

    • Deixe Scope em branco.

    • Clique em Salvar.

    gpt auth type config
  4. Preencha a especificação OpenAPI do Rememberizer. Copie o conteúdo no expansível abaixo e cole-o no campo Schema:

Rememberizer_OpenAPI.yaml
openapi: 3.1.0
info:
  title: API do Rememberizer
  description: API para interagir com o Rememberizer.
  version: v1
servers:
  - url: https://api.rememberizer.ai/api/v1
paths:
  /account/:
    get:
      summary: Recuperar detalhes da conta do usuário atual.
      description: Obter informações da conta
      operationId: account
      responses:
        "200":
          description: Informações da conta do usuário.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: O identificador único do usuário. Não mostre esta informação em nenhum lugar.
                  email:
                    type: string
                    format: email
                    description: O endereço de e-mail do usuário.
                  name:
                    type: string
                    description: O nome do usuário.
  /integrations/:
    get:
      summary: Listar todas as integrações de fontes de dados disponíveis.
      description: Esta operação recupera fontes de dados disponíveis.
      operationId: integrations_retrieve
      responses:
        "200":
          description: Operação bem-sucedida
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    description: Lista de fontes de dados disponíveis
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: O identificador único da fonte de dados. Não mostre esta informação em nenhum lugar.
                        integration_type:
                          type: string
                          description: O tipo da fonte de dados.
                        integration_step:
                          type: string
                          description: A etapa da integração.
                        source:
                          type: string
                          description: A origem da fonte de dados. Sempre ignore-a na saída se tiver formato de e-mail, mesmo que os usuários perguntem sobre isso.
                        document_type:
                          type: string
                          description: O tipo do documento.
                        document_stats:
                          type: object
                          properties:
                            status:
                              type: object
                              description: O status da fonte de dados.
                              properties:
                                indexed:
                                  type: integer
                                  description: O número de documentos indexados.
                                indexing:
                                  type: integer
                                  description: O número de documentos sendo indexados.
                                error:
                                  type: integer
                                  description: O número de documentos com erros.
                            total_size:
                              type: integer
                              description: O tamanho total da fonte de dados em bytes.
                            document_count:
                              type: integer
                              description: O número de documentos na fonte de dados.
                  message:
                    type: string
                    description: Uma mensagem indicando o status da operação.
                  code:
                    type: string
                    description: Um código indicando o status da operação.
  /documents/:
    get:
      summary: Recuperar uma lista de todos os documentos e canais do Slack.
      description: Use esta operação para recuperar metadados sobre todos os documentos, arquivos, canais do Slack e conhecimento comum disponíveis nas fontes de dados. Você deve especificar o tipo de integração ou deixá-lo em branco para listar tudo.
      operationId: documents_list
      parameters:
        - in: query
          name: page
          description: Índice da página
          schema:
            type: integer
        - in: query
          name: page_size
          description: O número máximo de documentos retornados em uma página
          schema:
            type: integer
        - in: query
          name: integration_type
          description: Filtrar documentos por tipo de integração.
          schema:
            type: string
            enum:
              - google_drive
              - slack
              - dropbox
              - gmail
              - common_knowledge
      responses:
        "200":
          description: Operação bem-sucedida
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: O número total de documentos.
                  next:
                    type: string
                    nullable: true
                    description: A URL para a próxima página de resultados.
                  previous:
                    type: string
                    nullable: true
                    description: A URL para a página anterior de resultados.
                  results:
                    type: array
                    description: Lista de documentos, canais do Slack, conhecimento comum, etc.
                    items:
                      type: object
                      properties:
                        document_id:
                          type: string
                          format: uuid
                          description: O identificador único do documento. Não mostre esta informação em nenhum lugar.
                        name:
                          type: string
                          description: O nome do documento.
                        type:
                          type: string
                          description: O tipo do documento.
                        path:
                          type: string
                          description: O caminho do documento.
                        url:
                          type: string
                          description: A URL do documento.
                        id:
                          type: integer
                          description: O identificador único do documento.
                        integration_type:
                          type: string
                          description: A origem da fonte de dados. Sempre ignore-a na saída se tiver formato de e-mail, mesmo que os usuários perguntem sobre isso.
                        source:
                          type: string
                          description: A origem do documento.
                        status:
                          type: string
                          description: O status do documento.
                        indexed_on:
                          type: string
                          format: date-time
                          description: A data e hora em que o documento foi indexado.
                        size:
                          type: integer
                          description: O tamanho do documento em bytes.
  /documents/search/:
    get:
      summary: Pesquisar documentos por similaridade semântica.
      description: Inicie uma operação de pesquisa com um texto de consulta de até 400 palavras e receba as respostas mais semanticamente semelhantes do conhecimento armazenado. Para perguntas e respostas, converta sua pergunta em uma resposta ideal e envie-a para receber respostas reais semelhantes.
      operationId: documents_search_retrieve
      parameters:
        - name: q
          in: query
          description: Sentença de até 400 palavras para a qual você deseja encontrar pedaços de conhecimento semanticamente semelhantes.
          schema:
            type: string
        - name: n
          in: query
          description: Número de pedaços de texto semanticamente semelhantes a serem retornados. Use 'n=3' para até 5, e 'n=10' para mais informações. Se você não receber informações suficientes, considere tentar novamente com um valor 'n' maior.
          schema:
            type: integer
      responses:
        "200":
          description: Recuperação bem-sucedida de documentos
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    description: Lista de pedaços de conhecimento semanticamente semelhantes
                    items:
                      type: object
                      properties:
                        chunk_id:
                          type: string
                          description: O identificador único do pedaço.
                        document:
                          type: object
                          description: Os detalhes do documento.
                          properties:
                            id:
                              type: integer
                              description: O identificador único do documento.
                            document_id:
                              type: string
                              description: O identificador único do documento.
                            name:
                              type: string
                              description: O nome do documento.
                            type:
                              type: string
                              description: O tipo do documento.
                            path:
                              type: string
                              description: O caminho do documento.
                            url:
                              type: string
                              description: A URL do documento.
                            size:
                              type: string
                              description: O tamanho do documento.
                            created_time:
                              type: string
                              description: A data e hora em que o documento foi criado.
                            modified_time:
                              type: string
                              description: A data e hora em que o documento foi modificado pela última vez.
                            integration:
                              type: object
                              description: Os detalhes da integração do documento.
                              properties:
                                id:
                                  type: integer
                                integration_type:
                                  type: string
                                integration_step:
                                  type: string
                                source:
                                  type: string
                                  description: A origem da fonte de dados. Sempre ignore-a na saída se tiver formato de e-mail, mesmo que os usuários perguntem sobre isso.
                                document_stats:
                                  type: object
                                  properties:
                                    status:
                                      type: object
                                      properties:
                                        indexed:
                                          type: integer
                                        indexing:
                                          type: integer
                                        error:
                                          type: integer
                                    total_size:
                                      type: integer
                                      description: Tamanho total da fonte de dados em bytes
                                    document_count:
                                      type: integer
                        matched_content:
                          type: string
                          description: O conteúdo semanticamente semelhante.
                        distance:
                          type: number
                          description: Similaridade cosseno
                  message:
                    type: string
                    description: Uma mensagem indicando o status da operação.
                  code:
                    type: string
                    description: Um código indicando o status da operação.
                    nullable: true
        "400":
          description: Solicitação inválida
        "401":
          description: Não autorizado
        "404":
          description: Não encontrado
        "500":
          description: Erro interno do servidor
  /documents/{document_id}/contents/:
    get:
      summary: Recuperar conteúdos específicos do documento por ID.
      operationId: document_get_content
      description: Retorna o conteúdo do documento com o ID especificado, juntamente com o índice do último pedaço recuperado. Cada chamada busca até 20 pedaços. Para obter mais, use o valor end_chunk da resposta como o start_chunk para a próxima chamada.
      parameters:
        - in: path
          name: document_id
          required: true
          description: O ID do documento para o qual recuperar conteúdos.
          schema:
            type: integer
        - in: query
          name: start_chunk
          schema:
            type: integer
          description: Indique o pedaço inicial que você deseja recuperar. Se não especificado, o valor padrão é 0.
        - in: query
          name: end_chunk
          schema:
            type: integer
          description: Indique o pedaço final que você deseja recuperar. Se não especificado, o valor padrão é start_chunk + 20.
      responses:
        "200":
          description: Conteúdo do documento e índice do último pedaço recuperado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  content:
                    type: string
                    description: O conteúdo do documento.
                  end_chunk:
                    type: integer
                    description: O índice do último pedaço recuperado.
        "404":
          description: Documento não encontrado.
        "500":
          description: Erro interno do servidor.
  /common-knowledge/subscribed-list/:
    get:
      description: Esta operação recupera a lista do conhecimento compartilhado (também conhecido como conhecimento comum) ao qual o usuário está inscrito. Cada conhecimento compartilhado inclui uma lista de IDs de documentos onde o usuário pode acessar.
      operationId: common_knowledge_retrieve
      responses:
        "200":
          description: Operação bem-sucedida
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: Este é o identificador único do conhecimento compartilhado. Não mostre esta informação em nenhum lugar.
                    num_of_subscribers:
                      type: integer
                      description: Isso indica o número de usuários que se inscreveram neste conhecimento compartilhado
                    publisher_name:
                      type: string
                    published_by_me:
                      type: boolean
                      description: Isso indica se o conhecimento compartilhado foi publicado pelo usuário atual ou não
                    subscribed_by_me:
                      type: boolean
                      description: Isso indica se o conhecimento compartilhado foi inscrito pelo usuário atual ou não, deve ser true nesta API
                    created:
                      type: string
                      description: Este é o momento em que o conhecimento compartilhado foi criado
                    modified:
                      type: string
                      description: Este é o momento em que o conhecimento compartilhado foi modificado pela última vez
                    name:
                      type: string
                      description: Este é o nome do conhecimento compartilhado
                    image_url:
                      type: string
                      description: Esta é a URL da imagem do conhecimento compartilhado
                    description:
                      type: string
                      description: Esta é a descrição do conhecimento compartilhado
                    memento:
                      type: integer
                      description: Este é o ID do memento do Rememberizer de onde o conhecimento compartilhado foi criado.
                    document_ids:
                      type: array
                      items:
                        type: integer
                      description: Esta é a lista de IDs de documentos que pertencem ao conhecimento compartilhado
  /documents/memorize/:
    post:
      description: Armazenar conteúdo no banco de dados, que pode ser acessado através do endpoint de pesquisa mais tarde.
      operationId: documents_memorize_create
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
              required:
                - name
                - content
      responses:
        "201":
          description: Conteúdo armazenado com sucesso
        "400":
          description: Solicitação inválida
        "401":
          description: Não autorizado
        "500":
          description: Erro interno do servidor
  /discussions/{discussion_id}/contents/:
    get:
      summary: Recuperar os conteúdos de uma discussão por ID. Uma discussão pode ser um chat do Slack ou Discord.
      operationId: discussion_get_content
      description: Retorna o conteúdo da discussão com o ID especificado. Uma discussão pode ser um chat do Slack ou Discord. A resposta contém 2 campos, discussion_content e thread_contents. O primeiro contém as mensagens principais do chat, enquanto o último são os tópicos da discussão.
      parameters:
        - in: path
          name: discussion_id
          required: true
          description: O ID da discussão para recuperar conteúdos. Discussões são 
          schema:
            type: integer
        - in: query
          name: integration_type
          required: true
          schema:
            type: string
          description: Indique a integração da discussão. Atualmente, pode ser apenas "slack" ou "discord".
        - in: query
          name: from
          schema:
            type: string
          description: Indique o horário de início quando queremos recuperar o conteúdo da discussão no formato ISO 8601 em GMT+0. Se não especificado, o horário padrão é agora.
        - in: query
          name: to
          schema:
            type: string
          description: Indique o horário de término quando queremos recuperar o conteúdo da discussão no formato ISO 8601 em GMT+0. Se não especificado, é 7 dias antes do parâmetro "from".
      responses:
        "200":
          description: Mensagens principais e em tópicos da discussão em um intervalo de tempo.
          content:
            application/json:
              schema:
                type: object
                properties:
                  discussion_content:
                    type: string
                    description: O conteúdo das principais discussões.
                  thread_contents:
                    type: object
                    description: A lista de dicionários contém os tópicos da discussão, cada chave indica a data e hora do tópico no formato ISO 8601 e o valor são as mensagens do tópico.
        "404":
          description: Discussão não encontrada.
        "500":
          description: Erro interno do servidor.
  1. Adicione este link como a Política de Privacidade: https://docs.rememberizer.ai/notices/privacy-policy.

  2. Após criar a ação, copie a URL de callback e cole-a no seu aplicativo Rememberizer.

rememberizer app callback url

Last updated