Package com.storedobject.ai
Class Knowledge
java.lang.Object
com.storedobject.ai.Knowledge
- All Implemented Interfaces:
DataRetriever
- Direct Known Subclasses:
Knowledge
Represents the knowledge base for an AI application. You can build knowledge by adding data-classes and knowledge
modules an instance of this class.
- Author:
- Syam
-
Nested Class Summary
Nested Classes -
Constructor Summary
ConstructorsConstructorDescriptionCreates an instance of the Knowledge class using the specified Device.Creates an instance of the Knowledge class with the specified TransactionManager. -
Method Summary
Modifier and TypeMethodDescriptionfinal voidaddDataClass(Class<? extends StoredObject> c, String... attributes) Adds a data class to the internal configuration using the specified class type and optional attributes.final voidaddDataClass(String dataClassName) Adds a data class to the knowledge base.final voidaddDataClass(String friendlyName, Class<? extends StoredObject> c, String... attributes) Adds a data class to the knowledge base with an optional list of attributes.final voidaddDataClass(String friendlyName, String dataClassName, String... attributes) Adds a data class to the knowledge base with an optional list of attributes.final voidaddModules(KnowledgeModule... modules) Adds one or more knowledge modules to the knowledge.<T extends StoredObject>
intCounts the number of instances of the specified class that exist in storage.final ChatCreates a new chat instance using a default memory retention limit of 10 messages.final ChatcreateChat(int rememberHistory) Creates a new chat instance with a specified memory retention limit for recent chat messages.<T extends StoredObject>
TRetrieves a stored object of the specified type and purpose.getAttributes(Class<? extends StoredObject> c) Retrieves a list of attributes associated with the specified class of typeStoredObject.final <T extends StoredObject>
Class<T> Retrieves the class of a specified entity by its name.final IdRetrieves anIdobject based on the provided string representation of the identifier.final TransactionManagerRetrieves the TransactionManager instance associated with this Knowledge object.booleanChecks if a chat session is currently active.booleanIndicates whether logging is currently enabled for the Knowledge instance.<T extends StoredObject>
ObjectIterator<T> Lists all stored objects of the specified type.voidLogs the specified object if logging is enabled in the current configuration.final <T extends StoredObject>
voidsave(JSONMap map, String name, ObjectIterator<T> objects) Saves a collection ofStoredObjectinstances to a specifiedJSONMapunder the given name.final <T extends StoredObject>
voidSaves the provided object using the specified parameters and updates the given JSONMap.voidsetDataRetriever(DataRetriever dataRetriever) voidsetLogging(boolean logging) Sets the logging state for the Knowledge object.
-
Constructor Details
-
Knowledge
Creates an instance of the Knowledge class using the specified Device. The TransactionManager instance required by the Knowledge class is retrieved from the provided Device's server.- Parameters:
device- the Device instance from which the associated TransactionManager is retrieved to initialize the Knowledge object
-
Knowledge
Creates an instance of the Knowledge class with the specified TransactionManager.- Parameters:
tm- the TransactionManager instance to be used with this Knowledge object
-
-
Method Details
-
setDataRetriever
-
getAttributes
Retrieves a list of attributes associated with the specified class of typeStoredObject. The attributes are determined based on user roles and access permissions.- Parameters:
c- The class of typeStoredObjectfor which attributes are to be retrieved.- Returns:
- A
StringListcontaining the attributes of the specified class, ornullif access is restricted.
-
getTransactionManager
Retrieves the TransactionManager instance associated with this Knowledge object.- Returns:
- The
TransactionManagerinstance used by this Knowledge object.
-
isChatting
public boolean isChatting()Checks if a chat session is currently active.- Returns:
- true if a chat session exists and is not closed, false otherwise.
-
addModules
Adds one or more knowledge modules to the knowledge. Modules provide additional functionality or capabilities to enhance the knowledge interaction.- Parameters:
modules- The knowledge modules to be added. Each module can be any non-null object implementingKnowledgeModule. If any module is null, it is ignored.
-
addDataClass
public final void addDataClass(String friendlyName, Class<? extends StoredObject> c, String... attributes) Adds a data class to the knowledge base with an optional list of attributes. The data class is associated with a friendly name for easier identification. Optionally, attributes can be specified to define additional metadata.- Parameters:
friendlyName- The user-friendly name to associate with the data class. If null or empty, a default label based on the class name will be used.c- The class type that extendsStoredObjectto add to the knowledge base.attributes- Optional attributes to associate with the data class.
-
addDataClass
Adds a data class to the internal configuration using the specified class type and optional attributes.- Parameters:
c- The class type to be added, extendingStoredObject.attributes- Optional attributes associated with the class, represented as an array of strings.
-
addDataClass
Adds a data class to the knowledge base with an optional list of attributes. The data class is associated with a friendly name for easier identification. Optionally, attributes can be specified to define additional metadata.- Parameters:
friendlyName- The user-friendly name to associate with the data class. If null or empty, a default label based on the class name will be used.dataClassName- The name of the data class to add to the knowledge base.attributes- Optional attributes to associate with the data class.
-
addDataClass
Adds a data class to the knowledge base.- Parameters:
dataClassName- The name of the data class to add to the knowledge base.
-
createChat
Creates a new chat instance using a default memory retention limit of 10 messages. This method is a convenience overload of thecreateChat(int rememberHistory)method and delegates to it with a predefined value forrememberHistory.- Returns:
- A new
Chatinstance with default parameters. - Throws:
Exception- If there is an issue, creating the chat instance or accessing required resources.
-
createChat
Creates a new chat instance with a specified memory retention limit for recent chat messages. This method delegates the creation of the chat instance to the AI associated with the current session of the TransactionManager.- Parameters:
rememberHistory- The number of recent chat messages to retain in memory. Values below 1 default to 10, and values above 100 are capped at 100.- Returns:
- A new
Chatinstance configured with the current knowledge and memory parameters. - Throws:
Exception- If an error occurs during the creation of the chat instance.
-
log
Logs the specified object if logging is enabled in the current configuration. This method uses the associated TransactionManager's logging mechanism.- Parameters:
anything- the object to be logged. Can represent any information or data the caller wishes to record in the log.
-
setLogging
public void setLogging(boolean logging) Sets the logging state for the Knowledge object.- Parameters:
logging- a boolean value indicating whether logging should be enabled (true) or disabled (false)
-
isLogging
public boolean isLogging()Indicates whether logging is currently enabled for the Knowledge instance.- Returns:
trueif logging is enabled,falseotherwise.
-
getId
Retrieves anIdobject based on the provided string representation of the identifier. If the string is invalid, logs an error in the givenJSONMapand returnsnull.- Parameters:
map- TheJSONMapinstance to store error details in case of an invalid ID.idString- The string representation of the identifier to be converted into anId.- Returns:
- An
Idobject constructed from the provided string, ornullif the string is invalid.
-
getClass
Retrieves the class of a specified entity by its name. If the entity name is invalid or not found in the available entities, an error message is added to the provided JSONMap andnullis returned.- Type Parameters:
T- the type of the class that extends StoredObject- Parameters:
map- the JSONMap used to store error messages if the entity name is invalidentityName- the name of the entity for which the class is to be retrieved- Returns:
- the class of the specified entity if found; otherwise,
null
-
save
public final <T extends StoredObject> void save(JSONMap map, String name, ObjectIterator<T> objects) Saves a collection ofStoredObjectinstances to a specifiedJSONMapunder the given name. Each object in the collection is individually processed and saved. Errors during the save process for individual objects are ignored.- Type Parameters:
T- The type of theStoredObject.- Parameters:
map- TheJSONMapin which the objects are to be saved.name- The name of the key under which the array of objects will be saved in the map.objects- AnObjectIteratorcontaining the objects to be saved. Each object must extendStoredObject.
-
save
Saves the provided object using the specified parameters and updates the given JSONMap. If the object is null, the JSONMap will report an error with the provided name.- Type Parameters:
T- the type of the object extendingStoredObjectto be saved.- Parameters:
map- theJSONMapwhere the save operation results or errors will be recorded.name- the name or identifier used to associate with the saved object or error message.object- theStoredObjectto be saved. If null, an error message is added to the map.
-
list
Description copied from interface:DataRetrieverLists all stored objects of the specified type.- Specified by:
listin interfaceDataRetriever- Type Parameters:
T- the type of stored objects to be listed; it must extendStoredObject.- Parameters:
c- theClassobject representing the type of stored objects to be listed.- Returns:
- an
ObjectIterator<T>containing all stored objects of the specified type.
-
count
Description copied from interface:DataRetrieverCounts the number of instances of the specified class that exist in storage.- Specified by:
countin interfaceDataRetriever- Type Parameters:
T- the type of the class extendingStoredObject.- Parameters:
c- the class whose instances need to be counted.- Returns:
- the number of instances of the specified class in storage.
-
get
Description copied from interface:DataRetrieverRetrieves a stored object of the specified type and purpose.- Specified by:
getin interfaceDataRetriever- Type Parameters:
T- The type of the stored object to retrieve, extendingStoredObject.- Parameters:
c- The class object representing the type of the stored object to retrieve.purpose- The purpose or reason for retrieving the stored object, represented as a string.- Returns:
- The stored object of the specified type.
-