Creating a Rememberizer GPT

In this tutorial, you will learn how to create a Rememberizer App and connect with OpenAI GPT, allowing the GPT to have access to Rememberizer API funtionality.

Prerequisite

First, you need to register a Rememberizer app and configure it with the appropriate settings.

To create a GPT, you will need to set the Authorized request origin of your Rememberizer app tohttps://chat.openai.com.

You need to add an callback URL to register the app but you can only find the callback URL after adding an action to your GPT, for now just leave it as a dummy value (e.g https://chat.openai.com). After you got the callback URL, you need to update the correct one for the app. Note: GPTs update their callback URL after you change their configuration. Make sure to copy the latest callback URL.

After creating an app, copy the Client ID and Client Secret. We will be using them when creating a GPT.

Create a GPT

You can start by creating a GPT in the ChatGPT UI.

GPT configurations

You can fill in the information as you wish. Here is an example that you can try out:

FieldExample value

Name

Rememberizer

Description

Talk directly to all your pdfs, docs, sheets, slides on Google Drive and Slack channels.

Instructions

Rememberizer is designed to interact seamlessly with the Rememberizer tool, enabling users to efficiently query their data from multiple sources such as Google Drive and Slack. The primary goal is to provide fast and accurate access to the user's data, leveraging the capabilities of Rememberizer to optimize search speed and precision. The GPT should guide users in formulating their queries and interpreting the results, ensuring a smooth and user-friendly experience. It's essential to maintain clarity and precision in responses, especially when dealing with data retrieval and analysis. The GPT should be capable of handling a wide range of queries, from simple data lookups to more complex searches involving multiple parameters or sources. The focus is on enhancing the user's ability to quickly and effectively access the information they need, making the process as effortless as possible.

Create Rememberizer action

From the GPT editor:

  1. Select "Configure"

  2. "Add Action"

  3. Configure authentication type.

    • Set the Authentication Type to OAuth.

    • Paste in the Client ID and Client Secret from the steps above.

    • Authorization URL: https://api.rememberizer.ai/api/v1/auth/oauth2/authorize/

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

    • Leave Scope blank.

    • Click Save.

  4. Fill in Rememberizer's OpenAPI spec. Copy the content in the expandable below and paste it into the Schema field:

Rememberizer_OpenAPI.yaml
openapi: 3.0.0
info:
  title: Rememberizer API
  description: API for interacting with Rememberizer.
  version: v1
servers:
  - url: 'https://api.rememberizer.ai/api/v1'
paths:
  /account/:
    get:
      description: Get account information
      operationId: account
      responses:
        '200':
          description: User account information.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: The unique identifier of the user. Do not show this information anywhere.
                  email:
                    type: string
                    format: email
                    description: The email address of the user.
                  name:
                    type: string
                    description: The name of the user.

  /integrations/:
    get:
      description: This operation retrieves available data sources.
      operationId: integrations_retrieve
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The unique identifier of the data source. Do not show this information anywhere.
                        integration_type:
                          type: string
                        integration_step:
                          type: string
                        source:
                          type: string
                        document_type:
                          type: string
                        document_stats:
                          type: object
                          properties:
                            status:
                              type: object
                              properties:
                                indexed:
                                  type: integer
                                indexing:
                                  type: integer
                                error:
                                  type: integer
                            total_size:
                              type: integer
                            document_count:
                              type: integer
                  message:
                    type: string
                  code:
                    type: string
 
  /documents/:
    get:
      description: Use this operation to retrieve metadata about all available documents and Slack channels within the data sources.
      operationId: documents_list_file_and_channel
      parameters:
      - in: query
        name: page
        description: Page's index
        schema:
          type: integer
      - in: query
        name: page_size
        description: The maximum number of documents returned in a page
        schema:
          type: integer
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    nullable: true
                  previous:
                    type: string
                    nullable: true
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        document_id:
                          type: string
                          description: The unique identifier of the document. Do not show this information anywhere.
                        name:
                          type: string
                        type:
                          type: string
                        path:
                          type: string
                        url:
                          type: string
                        id:
                          type: integer
                        integration_type:
                          type: string
                        source:
                          type: string
                        status:
                          type: string
                        indexed_on:
                          type: string
                          format: date-time
                        size:
                          type: integer
          
  /documents/search/:
    get:
      description: Initiate a search operation with a query text of up to 400 words and receive the most semantically similar responses from the stored knowledge. For question-answering, convert your question into an ideal answer and submit it to receive similar real answers.
      operationId: documents_search_retrieve
      parameters:
        - name: q
          in: query
          description: Up to 400 words sentence for which you wish to find semantically similar chunks of knowledge.
          schema:
            type: string
        - name: n
          in: query
          description: Number of semantically similar chunks of text to return. Use 'n=3' for up to 5, and 'n=10' for more information. If you do not receive enough information, consider trying again with a larger 'n' value.
          schema:
            type: integer
      responses:
        '200':
          description: Successful retrieval of documents
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        chunk_id:
                          type: string
                        document:
                          type: object
                          properties:
                            id:
                              type: integer
                            document_id:
                              type: string
                            name:
                              type: string
                            type:
                              type: string
                            path:
                              type: string
                            url:
                              type: string
                            size:
                              type: string
                            created_time:
                              type: string
                            modified_time:
                              type: string
                            integration:
                              type: object
                              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: Total size of the data source in bytes
                                    document_count:
                                      type: integer
                        matched_content:
                          type: string
                        distance:
                          type: number
                          description: Cosine similarity
                  message:
                    type: string
                  code:
                    type: string
                    nullable: true
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '500':
          description: Internal server error
  /documents/{document_id}/contents/:
    get:
      summary: Retrieve contents of a document by its ID.
      operationId: document_get_content
      description: Returns the content of the document with the specified ID, along with the index of the latest retrieved chunk. Each call fetches up to 20 chunks. To get more, use the end_chunk value from the response as the start_chunk for the next call.
      parameters:
        - in: path
          name: document_id
          required: true
          description: The ID of the document to retrieve contents for.
          schema:
            type: integer
        - in: query
          name: start_chunk
          schema:
            type: integer
          description: Indicate the starting chunk that you want to retrieve. If not specified, the default value is 0.
        - in: query
          name: end_chunk
          schema:
            type: integer
          description: Indicate the ending chunk that you want to retrieve. If not specified, the default value is start_chunk + 20.
      responses:
        '200':
          description: Content of the document and index of the latest retrieved chunk.
          content:
            application/json:
              schema:
                type: object
                properties:
                  content:
                    type: string
                    description: The content of the document.
                  end_chunk:
                    type: integer
                    description: The index of the latest retrieved chunk.
        '404':
          description: Document not found.
        '500':
          description: Internal server error.
  /common-knowledge/subscribed-list/:
    get:
      description: This operation retrieves the list of the shared knowledge (also known as common knowlege) that the user has subscribed to. Each shared knowledge includes a list of document ids where user can access.
      operationId: common_knowledge_retrieve
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: This is the unique identifier of the shared knowledge. Do not show this information anywhere.
                    num_of_subscribers:
                      type: integer
                      description: This indicates the number of users who have subscribed to this shared knowledge
                    publisher_name:
                      type: string
                    published_by_me:
                      type: boolean
                      description: This indicates whether the shared knowledge was published by the current user or not
                    subscribed_by_me:
                      type: boolean
                      description: This indicates whether the shared knowledge was subscribed by the current user or not, it should be true in this API
                    created:
                      type: string
                      description: This is the time when the shared knowledge was created
                    modified:
                      type: string
                      description: This is the time when the shared knowledge was last modified
                    name:
                      type: string
                      description: This is the name of the shared knowledge
                    image_url:
                      type: string
                      description: This is the image url of the shared knowledge
                    description:
                      type: string
                      description: This is the description of the shared knowledge
                    memento:
                      type: integer
                      description: This is the ID of the Rememberizer memento where the shared knowledge was created from.
                    document_ids:
                      type: array
                      items:
                        type: integer
                      description: This is the list of document ids that belong to the shared knowledge
  1. Add this link as the Privacy Policy: https://docs.rememberizer.ai/notices/privacy-policy.

  2. After creating the action, copy the callback URL and paste it into your Rememberizer app.

Last updated

#139: Update content

Change request updated