GoodMem
ReferenceClient SDKsJava SDK

Memories API

Memories API documentation for Java SDK

All URIs are relative to *http://localhost:8080*

MethodHTTP requestDescription
batchCreateMemoryPOST /v1/memories:batchCreateCreate multiple memories in a batch
batchDeleteMemoryPOST /v1/memories:batchDeleteDelete multiple memories by ID
batchGetMemoryPOST /v1/memories:batchGetGet multiple memories by ID
createMemoryPOST /v1/memoriesCreate a new memory
deleteMemoryDELETE /v1/memories/{id}Delete a memory
getMemoryGET /v1/memories/{id}Get a memory by ID
getMemoryContentGET /v1/memories/{id}/contentDownload memory content
listMemoriesGET /v1/spaces/{spaceId}/memoriesList memories in a space
retrieveMemoryGET /v1/memories:retrieveStream semantic memory retrieval
retrieveMemoryAdvancedPOST /v1/memories:retrieveAdvanced 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

NameTypeDescriptionNotes
batchMemoryCreationRequestBatchMemoryCreationRequestBatch memory creation details

Return type

null (empty response body)

Authorization

ApiKeyAuth

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json

HTTP response details

Status codeDescriptionResponse headers
200Results of batch memory creation operation-
207Multi-Status - partial success in batch operation-
400Invalid request - issues with one or more requests-
401Unauthorized - invalid or missing API key-
403Forbidden - 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

NameTypeDescriptionNotes
batchMemoryDeletionRequestBatchMemoryDeletionRequestBatch memory deletion details

Return type

null (empty response body)

Authorization

ApiKeyAuth

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json

HTTP response details

Status codeDescriptionResponse headers
200Results of batch memory deletion operation-
207Multi-Status - partial success in batch operation-
400Invalid request - issues with one or more memory IDs-
401Unauthorized - invalid or missing API key-
403Forbidden - 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

NameTypeDescriptionNotes
batchMemoryRetrievalRequestBatchMemoryRetrievalRequestBatch memory retrieval details

Return type

null (empty response body)

Authorization

ApiKeyAuth

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json

HTTP response details

Status codeDescriptionResponse headers
200Results of batch memory retrieval operation-
207Multi-Status - partial success in batch operation-
400Invalid request - issues with one or more memory IDs-
401Unauthorized - invalid or missing API key-
403Forbidden - 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

NameTypeDescriptionNotes
memoryCreationRequestMemoryCreationRequestMemory creation details

Return type

Memory

Authorization

ApiKeyAuth

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json

HTTP response details

Status codeDescriptionResponse headers
201Successfully created memory* Location - URI of the created memory resource
400Invalid request - missing required fields or invalid format-
401Unauthorized - invalid or missing API key-
403Forbidden - 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

NameTypeDescriptionNotes
idStringThe unique identifier of the memory to delete

Return type

null (empty response body)

Authorization

ApiKeyAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: Not defined

HTTP response details

Status codeDescriptionResponse headers
204Memory successfully deleted-
400Invalid request - memory ID in invalid format-
401Unauthorized - invalid or missing API key-
403Forbidden - insufficient permissions to delete this memory-
404Not 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

NameTypeDescriptionNotes
idStringThe unique identifier of the memory to retrieve
includeContentBooleanWhether to include the original content in the response (defaults to false)[optional]
includeProcessingHistoryBooleanWhether to include background job processing history in the response (defaults to false)[optional]

Return type

Memory

Authorization

ApiKeyAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

Status codeDescriptionResponse headers
200Successfully retrieved memory-
400Invalid request - memory ID in invalid format-
401Unauthorized - invalid or missing API key-
403Forbidden - insufficient permissions to view this memory-
404Not 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

NameTypeDescriptionNotes
idStringThe unique identifier of the memory to download

Return type

null (empty response body)

Authorization

ApiKeyAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/octet-stream

HTTP response details

Status codeDescriptionResponse headers
200Memory content streamed successfully-
400Invalid request - memory ID in invalid format-
401Unauthorized - invalid or missing API key-
403Forbidden - insufficient permissions to view this memory-
404Not 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

NameTypeDescriptionNotes
spaceIdStringThe unique identifier of the space containing the memories
includeContentBooleanWhether to include the original content in the response (defaults to false)[optional]
statusFilterStringFilter memories by processing status (PENDING, PROCESSING, COMPLETED, FAILED)[optional]
maxResultsIntegerIGNORED: The current server implementation does not support pagination for this endpoint. This parameter is documented for future compatibility but will be ignored.[optional]
nextTokenStringIGNORED: The current server implementation does not support pagination for this endpoint. This parameter is documented for future compatibility but will be ignored.[optional]
sortByStringField to sort by (e.g., 'created_at')[optional]
sortOrderStringSort direction (ASCENDING or DESCENDING)[optional]

Return type

MemoryListResponse

Authorization

ApiKeyAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

Status codeDescriptionResponse headers
200Successfully retrieved memories-
400Invalid request - space ID in invalid format-
401Unauthorized - invalid or missing API key-
403Forbidden - insufficient permissions to list memories in this space-
404Not 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 generation
  • ppRerankerId: UUID of reranker for result reranking
  • ppRelevanceThreshold: Minimum relevance score
  • ppLlmTemp: LLM temperature for generation
  • ppMaxResults: Maximum results to return
  • ppChronologicalResort: Whether to resort by creation time

Return type

Stream<MemoryStreamResponse> - Stream of memory retrieval events

Authorization

ApiKeyAuth

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 message
  • spaceIds: List of space UUIDs
  • requestedSize: Maximum memories to retrieve
  • fetchMemory: Whether to fetch memory definitions
  • fetchMemoryContent: Whether to fetch original content
  • postProcessorName: Name of custom post-processor
  • postProcessorConfig: Configuration map for the post-processor

Return type

Stream<MemoryStreamResponse> - Stream of memory retrieval events

Authorization

ApiKeyAuth