Memories API
Memories API documentation for Java SDK
All URIs are relative to *http://localhost:8080*
| Method | HTTP request | Description |
|---|---|---|
| batchCreateMemory | POST /v1/memories:batchCreate | Create multiple memories in a batch |
| batchDeleteMemory | POST /v1/memories:batchDelete | Delete multiple memories by ID |
| batchGetMemory | POST /v1/memories:batchGet | Get multiple memories by ID |
| createMemory | POST /v1/memories | Create a new memory |
| deleteMemory | DELETE /v1/memories/{id} | Delete a memory |
| getMemory | GET /v1/memories/{id} | Get a memory by ID |
| getMemoryContent | GET /v1/memories/{id}/content | Download memory content |
| listMemories | GET /v1/spaces/{spaceId}/memories | List memories in a space |
| retrieveMemory | GET /v1/memories:retrieve | Stream semantic memory retrieval |
| retrieveMemoryAdvanced | POST /v1/memories:retrieve | Advanced semantic memory retrieval with JSON |
batchCreateMemory
batchCreateMemory(batchMemoryCreationRequest)
Create multiple memories in a batch
Creates multiple memories in a single operation, with individual success/failure results.
Example
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.models.*;
import ai.pairsys.goodmem.client.api.MemoriesApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
MemoriesApi apiInstance = new MemoriesApi(defaultClient);
BatchMemoryCreationRequest batchMemoryCreationRequest = new BatchMemoryCreationRequest(); // BatchMemoryCreationRequest | Batch memory creation details
try {
apiInstance.batchCreateMemory(batchMemoryCreationRequest);
} catch (ApiException e) {
System.err.println("Exception when calling MemoriesApi#batchCreateMemory");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| batchMemoryCreationRequest | BatchMemoryCreationRequest | Batch memory creation details |
Return type
null (empty response body)
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Results of batch memory creation operation | - |
| 207 | Multi-Status - partial success in batch operation | - |
| 400 | Invalid request - issues with one or more requests | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to create memories | - |
batchDeleteMemory
batchDeleteMemory(batchMemoryDeletionRequest)
Delete multiple memories by ID
Deletes multiple memories in a single operation, with success/failure results for each ID.
Example
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.models.*;
import ai.pairsys.goodmem.client.api.MemoriesApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
MemoriesApi apiInstance = new MemoriesApi(defaultClient);
BatchMemoryDeletionRequest batchMemoryDeletionRequest = new BatchMemoryDeletionRequest(); // BatchMemoryDeletionRequest | Batch memory deletion details
try {
apiInstance.batchDeleteMemory(batchMemoryDeletionRequest);
} catch (ApiException e) {
System.err.println("Exception when calling MemoriesApi#batchDeleteMemory");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| batchMemoryDeletionRequest | BatchMemoryDeletionRequest | Batch memory deletion details |
Return type
null (empty response body)
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Results of batch memory deletion operation | - |
| 207 | Multi-Status - partial success in batch operation | - |
| 400 | Invalid request - issues with one or more memory IDs | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to delete one or more memories | - |
batchGetMemory
batchGetMemory(batchMemoryRetrievalRequest)
Get multiple memories by ID
Retrieves multiple memories in a single operation, with individual success/failure results.
Example
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.models.*;
import ai.pairsys.goodmem.client.api.MemoriesApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
MemoriesApi apiInstance = new MemoriesApi(defaultClient);
BatchMemoryRetrievalRequest batchMemoryRetrievalRequest = new BatchMemoryRetrievalRequest(); // BatchMemoryRetrievalRequest | Batch memory retrieval details
try {
apiInstance.batchGetMemory(batchMemoryRetrievalRequest);
} catch (ApiException e) {
System.err.println("Exception when calling MemoriesApi#batchGetMemory");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| batchMemoryRetrievalRequest | BatchMemoryRetrievalRequest | Batch memory retrieval details |
Return type
null (empty response body)
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Results of batch memory retrieval operation | - |
| 207 | Multi-Status - partial success in batch operation | - |
| 400 | Invalid request - issues with one or more memory IDs | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to access one or more memories | - |
createMemory
Memory createMemory(memoryCreationRequest)
Create a new memory
Creates a new memory in a specified space and starts asynchronous processing. The memory begins in PENDING status while a background job performs chunking and embedding generation. IMPORTANT: This operation is NOT idempotent - each request creates a new memory record. Returns INVALID_ARGUMENT if space_id, original_content, or content_type is missing or invalid. Returns NOT_FOUND if the specified space does not exist. Requires CREATE_MEMORY_OWN permission for spaces you own (or CREATE_MEMORY_ANY for admin users to create in any space). Side effects include creating the memory record, generating a unique UUID, and enqueuing a background processing job.
Example
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.models.*;
import ai.pairsys.goodmem.client.api.MemoriesApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
MemoriesApi apiInstance = new MemoriesApi(defaultClient);
MemoryCreationRequest memoryCreationRequest = new MemoryCreationRequest(); // MemoryCreationRequest | Memory creation details
try {
Memory result = apiInstance.createMemory(memoryCreationRequest);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling MemoriesApi#createMemory");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| memoryCreationRequest | MemoryCreationRequest | Memory creation details |
Return type
Authorization
HTTP request headers
- Content-Type: application/json
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 201 | Successfully created memory | * Location - URI of the created memory resource |
| 400 | Invalid request - missing required fields or invalid format | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to create memories | - |
deleteMemory
deleteMemory(id)
Delete a memory
Permanently deletes a memory and its associated chunks. This operation cannot be undone and immediately removes the memory record from the database. IDEMPOTENCY: This operation is safe to retry - may return NOT_FOUND if the memory was already deleted or never existed. Requires DELETE_MEMORY_OWN permission for memories in spaces you own (or DELETE_MEMORY_ANY for admin users to delete any memory). Side effects include permanent removal of the memory record and all associated chunk data.
Example
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.models.*;
import ai.pairsys.goodmem.client.api.MemoriesApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
MemoriesApi apiInstance = new MemoriesApi(defaultClient);
String id = "550e8400-e29b-41d4-a716-446655440000"; // String | The unique identifier of the memory to delete
try {
apiInstance.deleteMemory(id);
} catch (ApiException e) {
System.err.println("Exception when calling MemoriesApi#deleteMemory");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The unique identifier of the memory to delete |
Return type
null (empty response body)
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: Not defined
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 204 | Memory successfully deleted | - |
| 400 | Invalid request - memory ID in invalid format | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to delete this memory | - |
| 404 | Not found - memory with the specified ID does not exist | - |
getMemory
Memory getMemory(id, includeContent, includeProcessingHistory)
Get a memory by ID
Retrieves a single memory by its ID. PERMISSION CLARIFICATION: With READ_MEMORY_OWN permission, access is granted if you own the parent space OR if the parent space is public (public_read=true). With READ_MEMORY_ANY permission, you can access any memory regardless of ownership. This is a read-only operation with no side effects and is safe to retry. Returns NOT_FOUND if the memory or its parent space does not exist.
Example
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.models.*;
import ai.pairsys.goodmem.client.api.MemoriesApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
MemoriesApi apiInstance = new MemoriesApi(defaultClient);
String id = "550e8400-e29b-41d4-a716-446655440000"; // String | The unique identifier of the memory to retrieve
Boolean includeContent = false; // Boolean | Whether to include the original content in the response (defaults to false)
Boolean includeProcessingHistory = false; // Boolean | Whether to include background job processing history in the response (defaults to false)
try {
Memory result = apiInstance.getMemory(id, includeContent, includeProcessingHistory);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling MemoriesApi#getMemory");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The unique identifier of the memory to retrieve | |
| includeContent | Boolean | Whether to include the original content in the response (defaults to false) | [optional] |
| includeProcessingHistory | Boolean | Whether to include background job processing history in the response (defaults to false) | [optional] |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Successfully retrieved memory | - |
| 400 | Invalid request - memory ID in invalid format | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to view this memory | - |
| 404 | Not found - memory with the specified ID does not exist | - |
getMemoryContent
getMemoryContent(id)
Download memory content
Streams the original binary payload for a memory. The response uses the memory's stored content type when available. Returns 404 when the memory does not have inline content; clients can check originalContentRef from the metadata endpoint to locate external content.
Example
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.models.*;
import ai.pairsys.goodmem.client.api.MemoriesApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
MemoriesApi apiInstance = new MemoriesApi(defaultClient);
String id = "550e8400-e29b-41d4-a716-446655440000"; // String | The unique identifier of the memory to download
try {
apiInstance.getMemoryContent(id);
} catch (ApiException e) {
System.err.println("Exception when calling MemoriesApi#getMemoryContent");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| id | String | The unique identifier of the memory to download |
Return type
null (empty response body)
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/octet-stream
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Memory content streamed successfully | - |
| 400 | Invalid request - memory ID in invalid format | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to view this memory | - |
| 404 | Not found - memory has no inline content or does not exist | - |
listMemories
MemoryListResponse listMemories(spaceId, includeContent, statusFilter, maxResults, nextToken, sortBy, sortOrder)
List memories in a space
Lists all memories within a given space. CRITICAL: The current server implementation does NOT support pagination - the max_results and next_token parameters are IGNORED and all matching memories are returned. This is a read-only operation with no side effects and is safe to retry. Requires LIST_MEMORY_OWN or LIST_MEMORY_ANY permission. Returns NOT_FOUND if the specified space does not exist.
Example
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.models.*;
import ai.pairsys.goodmem.client.api.MemoriesApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
MemoriesApi apiInstance = new MemoriesApi(defaultClient);
String spaceId = "550e8400-e29b-41d4-a716-446655440000"; // String | The unique identifier of the space containing the memories
Boolean includeContent = false; // Boolean | Whether to include the original content in the response (defaults to false)
String statusFilter = "COMPLETED"; // String | Filter memories by processing status (PENDING, PROCESSING, COMPLETED, FAILED)
Integer maxResults = 100; // Integer | IGNORED: The current server implementation does not support pagination for this endpoint. This parameter is documented for future compatibility but will be ignored.
String nextToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."; // String | IGNORED: The current server implementation does not support pagination for this endpoint. This parameter is documented for future compatibility but will be ignored.
String sortBy = "created_at"; // String | Field to sort by (e.g., 'created_at')
String sortOrder = "DESCENDING"; // String | Sort direction (ASCENDING or DESCENDING)
try {
MemoryListResponse result = apiInstance.listMemories(spaceId, includeContent, statusFilter, maxResults, nextToken, sortBy, sortOrder);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling MemoriesApi#listMemories");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Parameters
| Name | Type | Description | Notes |
|---|---|---|---|
| spaceId | String | The unique identifier of the space containing the memories | |
| includeContent | Boolean | Whether to include the original content in the response (defaults to false) | [optional] |
| statusFilter | String | Filter memories by processing status (PENDING, PROCESSING, COMPLETED, FAILED) | [optional] |
| maxResults | Integer | IGNORED: The current server implementation does not support pagination for this endpoint. This parameter is documented for future compatibility but will be ignored. | [optional] |
| nextToken | String | IGNORED: The current server implementation does not support pagination for this endpoint. This parameter is documented for future compatibility but will be ignored. | [optional] |
| sortBy | String | Field to sort by (e.g., 'created_at') | [optional] |
| sortOrder | String | Sort direction (ASCENDING or DESCENDING) | [optional] |
Return type
Authorization
HTTP request headers
- Content-Type: Not defined
- Accept: application/json
HTTP response details
| Status code | Description | Response headers |
|---|---|---|
| 200 | Successfully retrieved memories | - |
| 400 | Invalid request - space ID in invalid format | - |
| 401 | Unauthorized - invalid or missing API key | - |
| 403 | Forbidden - insufficient permissions to list memories in this space | - |
| 404 | Not found - space with the specified ID does not exist | - |
retrieveMemory
📡 Stream Semantic Memory Retrieval
Use the StreamingClient class for streaming memory retrieval:
Working Example with Streaming Client
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.StreamingClient;
import ai.pairsys.goodmem.client.StreamingClient.*;
import java.util.List;
import java.util.stream.Stream;
public class BasicStreamingExample {
public static void main(String[] args) throws StreamError {
// Configure client
ApiClient apiClient = new ApiClient();
apiClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
apiClient.setApiKey("your-api-key");
// Create streaming client
StreamingClient streamingClient = new StreamingClient(apiClient);
// Stream memory retrieval results with ChatPostProcessor
Stream<MemoryStreamResponse> stream = streamingClient.retrieveMemoryStreamChat(
"your search query", // message
List.of("550e8400-e29b-41d4-a716-446655440000"), // space IDs
10, // requested size
true, // fetch memory
false, // fetch memory content
"550e8400-e29b-41d4-a716-446655440001", // LLM ID
"550e8400-e29b-41d4-a716-446655440000", // reranker ID
0.5, // relevance threshold
0.3, // LLM temperature
10, // max results
true // chronological resort
);
// Process streaming events
stream.forEach(event -> {
if (event.getAbstractReply() != null) {
System.out.println("Abstract: " + event.getAbstractReply().getText());
} else if (event.getRetrievedItem() != null
&& event.getRetrievedItem().getMemory() != null) {
System.out.println("Memory: " + event.getRetrievedItem().getMemory());
}
});
}
}Parameters
Same parameters as the standard method, with additional ChatPostProcessor parameters:
ppLlmId: UUID of LLM for abstract generationppRerankerId: UUID of reranker for result rerankingppRelevanceThreshold: Minimum relevance scoreppLlmTemp: LLM temperature for generationppMaxResults: Maximum results to returnppChronologicalResort: Whether to resort by creation time
Return type
Stream<MemoryStreamResponse> - Stream of memory retrieval events
Authorization
retrieveMemoryAdvanced
📡 Advanced Stream Semantic Memory Retrieval
Use the StreamingClient class for advanced streaming memory retrieval with custom post-processor configuration:
Working Example with Streaming Client
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.StreamingClient;
import ai.pairsys.goodmem.client.StreamingClient.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
public class AdvancedStreamingExample {
public static void main(String[] args) throws StreamError {
// Configure client
ApiClient apiClient = new ApiClient();
apiClient.setBasePath("[http://localhost:8080](http://localhost:8080)");
apiClient.setApiKey("your-api-key");
// Create streaming client
StreamingClient streamingClient = new StreamingClient(apiClient);
// Create advanced request with custom post-processor
AdvancedMemoryStreamRequest request = new AdvancedMemoryStreamRequest(
"your search query",
List.of("550e8400-e29b-41d4-a716-446655440000")
);
request.setRequestedSize(10);
request.setFetchMemory(true);
request.setFetchMemoryContent(false);
// Configure custom post-processor
request.setPostProcessorName("com.goodmem.retrieval.postprocess.ChatPostProcessorFactory");
Map<String, Object> postProcessorConfig = new HashMap<>();
postProcessorConfig.put("llm_id", "550e8400-e29b-41d4-a716-446655440001");
postProcessorConfig.put("reranker_id", "550e8400-e29b-41d4-a716-446655440000");
postProcessorConfig.put("relevance_threshold", 0.5);
postProcessorConfig.put("llm_temp", 0.3);
postProcessorConfig.put("max_results", 10);
postProcessorConfig.put("chronological_resort", true);
request.setPostProcessorConfig(postProcessorConfig);
// Execute advanced streaming
Stream<MemoryStreamResponse> stream = streamingClient.retrieveMemoryStreamAdvanced(request);
// Process streaming events
stream.forEach(event -> {
if (event.getAbstractReply() != null) {
System.out.println("Abstract: " + event.getAbstractReply().getText());
} else if (event.getRetrievedItem() != null) {
System.out.println("Retrieved item: " + event.getRetrievedItem());
}
});
}
}Parameters
Use AdvancedMemoryStreamRequest with:
message: Query messagespaceIds: List of space UUIDsrequestedSize: Maximum memories to retrievefetchMemory: Whether to fetch memory definitionsfetchMemoryContent: Whether to fetch original contentpostProcessorName: Name of custom post-processorpostProcessorConfig: Configuration map for the post-processor
Return type
Stream<MemoryStreamResponse> - Stream of memory retrieval events