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. The instruction about how to get these information can be visited at Authorizing Rememberizer apps.

Create a GPT

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

Note: Creating custom GPT app is only available for pricing plan account.

GPT configurations

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

FieldExample value

Name

RememberizerGPT

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.1.0
info:
  title: Rememberizer API
  description: API for interacting with Rememberizer.
  version: v1
servers:
  - url: "https://api.rememberizer.ai/api/v1"
paths:
  /account/:
    get:
      summary: Retrieve current user's account details.
      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:
      summary: List all available data source integrations.
      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
                    description: List of available data sources
                    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
                          description: The type of the data source.
                        integration_step:
                          type: string
                          description: The step of the integration.
                        source:
                          type: string
                          description: The source of the data source.
                        document_type:
                          type: string
                          description: The type of the document.
                        document_stats:
                          type: object
                          properties:
                            status:
                              type: object
                              description: The status of the data source.
                              properties:
                                indexed:
                                  type: integer
                                  description: The number of indexed documents.
                                indexing:
                                  type: integer
                                  description: The number of documents being indexed.
                                error:
                                  type: integer
                                  description: The number of documents with errors.
                            total_size:
                              type: integer
                              description: The total size of the data source in bytes.
                            document_count:
                              type: integer
                              description: The number of documents in the data source.
                  message:
                    type: string
                    description: A message indicating the status of the operation.
                  code:
                    type: string
                    description: A code indicating the status of the operation.
  /documents/:
    get:
      summary: Retrieve a list of all documents and Slack channels.
      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
        - in: query
          name: integration_type
          description: Filter documents by integration type.
          schema:
            type: string
            enum: [google_drive, slack, dropbox, common_knowledge]
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: The total number of documents.
                  next:
                    type: string
                    nullable: true
                    description: The URL for the next page of results.
                  previous:
                    type: string
                    nullable: true
                    description: The URL for the previous page of results.
                  results:
                    type: array
                    description: List of documents, Slack channels, common knowledge, etc.
                    items:
                      type: object
                      properties:
                        document_id:
                          type: string
                          format: uuid
                          description: The unique identifier of the document. Do not show this information anywhere.
                        name:
                          type: string
                          description: The name of the document.
                        type:
                          type: string
                          description: The type of the document.
                        path:
                          type: string
                          description: The path of the document.
                        url:
                          type: string
                          description: The URL of the document.
                        id:
                          type: integer
                          description: The unique identifier of the document.
                        integration_type:
                          type: string
                          description: The integration type of the document.
                        source:
                          type: string
                          description: The source of the document.
                        status:
                          type: string
                          description: The status of the document.
                        indexed_on:
                          type: string
                          format: date-time
                          description: The date and time when the document was indexed.
                        size:
                          type: integer
                          description: The size of the document in bytes.
  /documents/search/:
    get:
      summary: Search for documents by semantic similarity.
      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
                    description: List of semantically similar chunks of knowledge
                    items:
                      type: object
                      properties:
                        chunk_id:
                          type: string
                          description: The unique identifier of the chunk.
                        document:
                          type: object
                          description: The document details.
                          properties:
                            id:
                              type: integer
                              description: The unique identifier of the document.
                            document_id:
                              type: string
                              description: The unique identifier of the document.
                            name:
                              type: string
                              description: The name of the document.
                            type:
                              type: string
                              description: The type of the document.
                            path:
                              type: string
                              description: The path of the document.
                            url:
                              type: string
                              description: The URL of the document.
                            size:
                              type: string
                              description: The size of the document.
                            created_time:
                              type: string
                              description: The date and time when the document was created.
                            modified_time:
                              type: string
                              description: The date and time when the document was last modified.
                            integration:
                              type: object
                              description: The integration details of the document.
                              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
                          description: The semantically similar content.
                        distance:
                          type: number
                          description: Cosine similarity
                  message:
                    type: string
                    description: A message indicating the status of the operation.
                  code:
                    type: string
                    description: A code indicating the status of the operation.
                    nullable: true
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
  /documents/{document_id}/contents/:
    get:
      summary: Retrieve specific document contents by 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
  /documents/memorize/:
    post:
      description: Store content into the database, which can be accessed through the search endpoint later.
      operationId: documents_memorize_create
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                content:
                  type: string
              required:
                - name
                - content
      responses:
        "201":
          description: Content stored successfully
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "500":
          description: Internal server error
  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