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 app Rememberizer e configurá-lo com as configurações apropriadas.

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

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

Após criar um aplicativo, copie o Client ID e o Client Secret. Usaremos esses dados quando criarmos um GPT.

Criar um GPT

Você pode começar criando um GPT na interface de usuário ChatGPT.

Configurações GPT

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

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 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.

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

Rememberizer_OpenAPI.yaml
openapi: 3.0.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 fonte da fonte de dados.
                        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 disponíveis e canais do Slack dentro das fontes de dados.
      operationId: documents_list_file_and_channel
      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, 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: O tipo de integração do documento.
                        source:
                          type: string
                          description: A fonte 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 busca 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 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 fragmentos de conhecimento semanticamente semelhantes.
          schema:
            type: string
        - name: n
          in: query
          description: Número de fragmentos semânticamente semelhantes de texto a retornar. 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 de '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 fragmentos semanticamente semelhantes de conhecimento
                    items:
                      type: object
                      properties:
                        chunk_id:
                          type: string
                          description: O identificador único do fragmento.
                        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
                                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 coseno
                  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
        "500":
          description: Erro interno do servidor
  /documents/{document_id}/contents/:
    get:
      summary: Recuperar conteúdos específicos do documento pelo ID.
      operationId: document_get_content
      description: Retorna o conteúdo do documento com o ID especificado, juntamente com o índice do último fragmento recuperado. Cada chamada busca até 20 fragmentos. Para obter mais, use o valor end_chunk da resposta como 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 fragmento 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 fragmento 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 fragmento 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 fragmento 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 se inscreveu. 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 assinado pelo usuário atual ou não, deve ser verdadeiro 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 busca mais tarde.
      operationId: documents_memorize_create
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                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
  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 retorno e cole-a no seu aplicativo Rememberizer.

Last updated