Memory Bank
Memory Bank · GPT 작업
Memory Bank API
A retrieval API for querying and filtering documents based on natural language queries and metadata
POST /upsert-actionUpsertSave chat information. Accepts an array of documents with text (potential questions + conversation text), metadata (source 'chat' and timestamp, no ID as this will be generated). Confirm with the user before saving, ask for more details/context.
POST /query-actionQueryAccepts search query objects array each with query and optional filter. Break down complex questions into sub-questions. Refine results by criteria, e.g. time / source, don't do this often. Split queries if ResponseTooLargeError occurs.
원본 API 스키마
{
"openapi": "3.0.2",
"info": {
"title": "Memory Bank API",
"description": "A retrieval API for querying and filtering documents based on natural language queries and metadata",
"version": "1.0.0"
},
"servers": [
{
"url": "https://plugin.memorybank.app"
}
],
"paths": {
"/upsert-action": {
"post": {
"x-openai-isConsequential: false",
"summary": "Upsert",
"description": "Save chat information. Accepts an array of documents with text (potential questions + conversation text), metadata (source 'chat' and timestamp, no ID as this will be generated). Confirm with the user before saving, ask for more details/context.",
"operationId": "upsert_upsert_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpsertRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpsertResponse"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"OAuth2": [
"write:documents"
]
}
]
}
},
"/query-action": {
"post": {
"x-openai-isConsequential: false",
"summary": "Query",
"description": "Accepts search query objects array each with query and optional filter. Break down complex questions into sub-questions. Refine results by criteria, e.g. time / source, don't do this often. Split queries if ResponseTooLargeError occurs.",
"operationId": "query_query_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QueryRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QueryResponse"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"OAuth2": [
"write:documents"
]
}
]
}
}
},
"components": {
"schemas": {
"Document": {
"title": "Document",
"required": [
"text",
"user_id"
],
"type": "object",
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"text": {
"title": "Text",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "string"
},
"metadata": {
"$ref": "#/components/schemas/DocumentMetadata"
}
}
},
"DocumentChunkMetadata": {
"title": "DocumentChunkMetadata",
"type": "object",
"properties": {
"source": {
"$ref": "#/components/schemas/Source"
},
"source_id": {
"title": "Source Id",
"type": "string"
},
"url": {
"title": "Url",
"type": "string"
},
"created_at": {
"title": "Created At",
"type": "string"
},
"author": {
"title": "Author",
"type": "string"
},
"document_id": {
"title": "Document Id",
"type": "string"
}
}
},
"DocumentChunkWithScore": {
"title": "DocumentChunkWithScore",
"required": [
"text",
"metadata",
"score"
],
"type": "object",
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"text": {
"title": "Text",
"type": "string"
},
"metadata": {
"$ref": "#/components/schemas/DocumentChunkMetadata"
},
"embedding": {
"title": "Embedding",
"type": "array",
"items": {
"type": "number"
}
},
"score": {
"title": "Score",
"type": "number"
}
}
},
"DocumentMetadata": {
"title": "DocumentMetadata",
"type": "object",
"properties": {
"source": {
"$ref": "#/components/schemas/Source"
},
"source_id": {
"title": "Source Id",
"type": "string"
},
"url": {
"title": "Url",
"type": "string"
},
"created_at": {
"title": "Created At",
"type": "string"
},
"author": {
"title": "Author",
"type": "string"
}
}
},
"DocumentMetadataFilter": {
"title": "DocumentMetadataFilter",
"type": "object",
"properties": {
"document_id": {
"title": "Document Id",
"type": "string"
},
"source": {
"$ref": "#/components/schemas/Source"
},
"source_id": {
"title": "Source Id",
"type": "string"
},
"author": {
"title": "Author",
"type": "string"
},
"start_date": {
"title": "Start Date",
"type": "string"
},
"end_date": {
"title": "End Date",
"type": "string"
}
}
},
"HTTPValidationError": {
"title": "HTTPValidationError",
"type": "object",
"properties": {
"detail": {
"title": "Detail",
"type": "array",
"items": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
},
"Query": {
"title": "Query",
"required": [
"query",
"user_id"
],
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "string"
},
"filter": {
"$ref": "#/components/schemas/DocumentMetadataFilter"
},
"top_k": {
"title": "Top K",
"type": "integer",
"default": 3
}
}
},
"QueryRequest": {
"title": "QueryRequest",
"required": [
"queries"
],
"type": "object",
"properties": {
"queries": {
"title": "Queries",
"type": "array",
"items": {
"$ref": "#/components/schemas/Query"
}
}
}
},
"QueryResponse": {
"title": "QueryResponse",
"required": [
"results"
],
"type": "object",
"properties": {
"results": {
"title": "Results",
"type": "array",
"items": {
"$ref": "#/components/schemas/QueryResult"
}
}
}
},
"QueryResult": {
"title": "QueryResult",
"required": [
"query",
"results"
],
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"results": {
"title": "Results",
"type": "array",
"items": {
"$ref": "#/components/schemas/DocumentChunkWithScore"
}
}
}
},
"Source": {
"title": "Source",
"enum": [
"email",
"file",
"chat"
],
"type": "string",
"description": "An enumeration."
},
"UpsertRequest": {
"title": "UpsertRequest",
"required": [
"documents"
],
"type": "object",
"properties": {
"documents": {
"title": "Documents",
"type": "array",
"items": {
"$ref": "#/components/schemas/Document"
}
}
}
},
"UpsertResponse": {
"title": "UpsertResponse",
"required": [
"ids"
],
"type": "object",
"properties": {
"ids": {
"title": "Ids",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"ValidationError": {
"title": "ValidationError",
"required": [
"loc",
"msg",
"type"
],
"type": "object",
"properties": {
"loc": {
"title": "Location",
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
}
},
"msg": {
"title": "Message",
"type": "string"
},
"type": {
"title": "Error Type",
"type": "string"
}
}
}
},
"securitySchemes": {
"OAuth2": {
"type": "oauth2",
"flows": {
"implicit": {
"authorizationUrl": "https://memorybank.app/login",
"scopes": {
"read:documents": "Read documents",
"write:documents": "Write documents"
}
},
"password": {
"tokenUrl": "https://plugin.memorybank.app/exchange",
"scopes": {
"read:documents": "Read documents",
"write:documents": "Write documents"
}
},
"clientCredentials": {
"tokenUrl": "https://plugin.memorybank.app/exchange",
"scopes": {
"read:documents": "Read documents",
"write:documents": "Write documents"
}
},
"authorizationCode": {
"authorizationUrl": "https://memorybank.app/login",
"tokenUrl": "https://plugin.memorybank.app/exchange",
"scopes": {
"read:documents": "Read documents",
"write:documents": "Write documents"
}
}
}
}
}
}
}