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.
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.
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:
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.
Create Rememberizer action
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.
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.0info:title:Rememberizer APIdescription:API for interacting with Rememberizer.version:v1servers: - url:"https://api.rememberizer.ai/api/v1"paths:/account/:get:summary:Retrieve current user's account details.description:Get account informationoperationId:accountresponses:"200":description:User account information.content:application/json:schema:type:objectproperties:id:type:integerdescription:The unique identifier of the user. Do not show this information anywhere.email:type:stringformat:emaildescription:The email address of the user.name:type:stringdescription:The name of the user./integrations/:get:summary:List all available data source integrations.description:This operation retrieves available data sources.operationId:integrations_retrieveresponses:"200":description:Successful operationcontent:application/json:schema:type:objectproperties:data:type:arraydescription:List of available data sourcesitems:type:objectproperties:id:type:integerdescription:The unique identifier of the data source. Do not show this information anywhere.integration_type:type:stringdescription:The type of the data source.integration_step:type:stringdescription:The step of the integration.source:type:stringdescription:The source of the data source.document_type:type:stringdescription:The type of the document.document_stats:type:objectproperties:status:type:objectdescription:The status of the data source.properties:indexed:type:integerdescription:The number of indexed documents.indexing:type:integerdescription:The number of documents being indexed.error:type:integerdescription:The number of documents with errors.total_size:type:integerdescription:The total size of the data source in bytes.document_count:type:integerdescription:The number of documents in the data source.message:type:stringdescription:A message indicating the status of the operation.code:type:stringdescription: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_channelparameters: - in:queryname:pagedescription:Page's indexschema:type:integer - in:queryname:page_sizedescription:The maximum number of documents returned in a pageschema:type:integer - in:queryname:integration_typedescription:Filter documents by integration type.schema:type:stringenum: [google_drive,slack,dropbox,common_knowledge]responses:"200":description:Successful operationcontent:application/json:schema:type:objectproperties:count:type:integerdescription:The total number of documents.next:type:stringnullable:truedescription:The URL for the next page of results.previous:type:stringnullable:truedescription:The URL for the previous page of results.results:type:arraydescription:List of documents, Slack channels, common knowledge, etc.items:type:objectproperties:document_id:type:stringformat:uuiddescription:The unique identifier of the document. Do not show this information anywhere.name:type:stringdescription:The name of the document.type:type:stringdescription:The type of the document.path:type:stringdescription:The path of the document.url:type:stringdescription:The URL of the document.id:type:integerdescription:The unique identifier of the document.integration_type:type:stringdescription:The integration type of the document.source:type:stringdescription:The source of the document.status:type:stringdescription:The status of the document.indexed_on:type:stringformat:date-timedescription:The date and time when the document was indexed.size:type:integerdescription: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_retrieveparameters: - name:qin:querydescription:Up to 400 words sentence for which you wish to find semantically similar chunks of knowledge.schema:type:string - name:nin: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:integerresponses:"200":description:Successful retrieval of documentscontent:application/json:schema:type:objectproperties:data:type:arraydescription:List of semantically similar chunks of knowledgeitems:type:objectproperties:chunk_id:type:stringdescription:The unique identifier of the chunk.document:type:objectdescription:The document details.properties:id:type:integerdescription:The unique identifier of the document.document_id:type:stringdescription:The unique identifier of the document.name:type:stringdescription:The name of the document.type:type:stringdescription:The type of the document.path:type:stringdescription:The path of the document.url:type:stringdescription:The URL of the document.size:type:stringdescription:The size of the document.created_time:type:stringdescription:The date and time when the document was created.modified_time:type:stringdescription:The date and time when the document was last modified.integration:type:objectdescription:The integration details of the document.properties:id:type:integerintegration_type:type:stringintegration_step:type:stringsource:type:stringdocument_stats:type:objectproperties:status:type:objectproperties:indexed:type:integerindexing:type:integererror:type:integertotal_size:type:integerdescription:Total size of the data source in bytesdocument_count:type:integermatched_content:type:stringdescription:The semantically similar content.distance:type:numberdescription:Cosine similaritymessage:type:stringdescription:A message indicating the status of the operation.code:type:stringdescription: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:pathname:document_idrequired:truedescription:The ID of the document to retrieve contents for.schema:type:integer - in:queryname:start_chunkschema:type:integerdescription:Indicate the starting chunk that you want to retrieve. If not specified, the default value is 0. - in:queryname:end_chunkschema: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:objectproperties:content:type:stringdescription:The content of the document.end_chunk:type:integerdescription: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_retrieveresponses:"200":description:Successful operationcontent:application/json:schema:type:arrayitems:type:objectproperties:id:type:integer description: This is the unique identifier of the shared knowledge. Do not show this information anywhere.
num_of_subscribers:type:integerdescription:This indicates the number of users who have subscribed to this shared knowledgepublisher_name:type:stringpublished_by_me:type:booleandescription:This indicates whether the shared knowledge was published by the current user or notsubscribed_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:stringdescription:This is the time when the shared knowledge was createdmodified:type:stringdescription:This is the time when the shared knowledge was last modifiedname:type:stringdescription:This is the name of the shared knowledgeimage_url:type:stringdescription:This is the image url of the shared knowledgedescription:type:stringdescription:This is the description of the shared knowledgememento:type:integer description: This is the ID of the Rememberizer memento where the shared knowledge was created from.
document_ids:type:arrayitems:type:integerdescription: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_createrequestBody:content:application/json:schema:type:objectproperties:name:type:stringcontent:type:stringrequired: - name - contentresponses:"201":description:Content stored successfully"400":description:Bad request"401":description:Unauthorized"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.