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.
Last updated
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.
Last updated
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.
You can start by creating a GPT in the ChatGPT UI.
Note: Creating custom GPT app is only available for pricing plan account.
You can fill in the information as you wish. Here is an example that you can try out:
Field | Example 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. |
From the GPT editor:
Select "Configure"
"Add Action"
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.
Fill in Rememberizer's OpenAPI spec. Copy the content in the expandable below and paste it into the Schema field:
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. Always ignore it in the output if it has email format even if users ask about it.
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, files, Slack channels and common
knowledge within the data sources. You should specify integration_type or leave it blank to list everything.
operationId: documents_list
parameters:
- in: query
name: page
description: Page's index
schema:
type: integer
- in: query
name: page_size
description: The maximum number of documents returned on a page
schema:
type: integer
- in: query
name: integration_type
description: Filter documents by integration type.
schema:
type: string
enum:
- google_drive
- slack
- dropbox
- gmail
- 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 source of the data source. Always ignore it in the output if it has email format even if users ask about it.
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
description: The source of the data source. Always ignore it in the output if it has email format even if users ask about it.
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
"404":
description: Not found
"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:
content:
type: string
required:
- name
- content
responses:
"201":
description: Content stored successfully
"400":
description: Bad request
"401":
description: Unauthorized
"500":
description: Internal server error
/discussions/{discussion_id}/contents/:
get:
summary: Retrieve the contents of a discussion by ID. A discussion can be a Slack or Discord chat.
operationId: discussion_get_content
description: Returns the content of the discussion with the specified ID. A discussion can be a Slack or Discord chat. The response contains 2 fields, discussion_content, and thread_contents. The former contains the main messages of the chat, whereas the latter is the threads of the discussion.
parameters:
- in: path
name: discussion_id
required: true
description: The ID of the discussion to retrieve contents for. Discussions are
schema:
type: integer
- in: query
name: integration_type
required: true
schema:
type: string
description: Indicate the integration of the discussion. Currently, it can only be "slack" or "discord".
- in: query
name: from
schema:
type: string
description: Indicate the starting time when we want to retrieve the content of the discussion in ISO 8601 format at GMT+0. If not specified, the default time is now.
- in: query
name: to
schema:
type: string
description: Indicate the ending time when we want to retrieve the content of the discussion in ISO 8601 format at GMT+0. If not specified, it is 7 days before the "from" parameter.
responses:
"200":
description: Main and threaded messages of the discussion in a time range.
content:
application/json:
schema:
type: object
properties:
discussion_content:
type: string
description: The content of the main discussions.
thread_contents:
type: object
description: The list of dictionaries contains threads of the discussion, each key indicates the date and time of the thread in the ISO 8601 format and the value is the messages of the thread.
"404":
description: Discussion not found.
"500":
description: Internal server error.
Add this link as the Privacy Policy: https://docs.rememberizer.ai/notices/privacy-policy
.
After creating the action, copy the callback URL and paste it into your Rememberizer app.