20 KiB
Lord Of Large Language Models Socket.io Endpoints Documentation
The server provides several Socket.io endpoints that clients can use to interact with the server. The default URL for the server is http://localhost:9600
, but it can be changed using the configuration file or launch parameters.
Endpoints
connect
- Event:
'connect'
- Description: This event is triggered when a client connects to the server.
- Actions:
- Adds the client to the list of connected clients with a unique session ID.
- Prints a message indicating the client's session ID.
disconnect
- Event:
'disconnect'
- Description: This event is triggered when a client disconnects from the server.
- Actions:
- Removes the client from the list of connected clients, if it exists.
- Prints a message indicating the client's session ID.
list_available_bindings
- Event:
'list_available_bindings'
- Description: This event is triggered when a client requests a list of available bindings.
- Parameters: None
- Actions:
- Initializes an empty list
binding_infs
to store information about each binding. - Iterates over the files and directories in the
self.bindings_path
directory. - For each directory in
self.bindings_path
:- Reads the content of the
binding_card.yaml
file, which contains information about the binding card. - Reads the content of the
models.yaml
file, which contains information about the models associated with the binding. - Creates an entry dictionary that includes the binding's name, card information, and model information.
- Appends the entry to the
binding_infs
list.
- Reads the content of the
- Emits a response event
'bindings_list'
to the client containing the list of available bindings and their information (bindings
) as well as asuccess
parameter that isFalse
when not successful.
- Initializes an empty list
Events generated:
'bindings_list'
: Sent to the client as a response to the'list_available_bindings'
request. It contains the list of available bindings along with their associated information (binding_infs
).
list_available_personalities
- Event:
'list_available_personalities'
- Description: This event is triggered when a client requests a list of available personalities.
- Parameters: None
- Actions:
- Retrieves the path to the personalities folder from the server (
self.personalities_path
). - Initializes an empty dictionary to store the available personalities.
- Iterates over each language folder in the personalities folder.
- Checks if the current item is a directory.
- Initializes an empty dictionary to store the personalities within the language.
- Iterates over each category folder within the language folder.
- Checks if the current item is a directory.
- Initializes an empty list to store the personalities within the category.
- Iterates over each personality folder within the category folder.
- Checks if the current item is a directory.
- Tries to load personality information from the config file (
config.yaml
) within the personality folder.- Retrieves the name, description, author, and version from the config data.
- Checks if the
scripts
folder exists within the personality folder to determine if the personality has scripts. - Checks for the existence of logo files named
logo.gif
orlogo.webp
orlogo.png
orlogo.jpg
orlogo.jpeg
orlogo.bmp
within theassets
folder to determine if the personality has a logo. - Sets the
avatar
field of the personality info based on the available logo file. - Appends the personality info to the list of personalities within the category.
- Adds the list of personalities to the dictionary of the current category within the language.
- Adds the dictionary of categories to the dictionary of the current language.
- Sends a response to the client containing the dictionary of available personalities.
- Retrieves the path to the personalities folder from the server (
Events generated:
'personalities_list'
: Emits an event to the client with the list of available personalities, categorized by language and category. The event data includes the personality information such as name, description, author, version, presence of scripts, and avatar image file path.
list_available_models
- Event:
'list_available_models'
- Description: This event is triggered when a client requests a list of available models.
- Parameters: None (except
self
which refers to the class instance) - Actions:
- Checks if a binding class is selected. If not, emits an event
'available_models_list'
with a failure response indicating that no binding is selected. - Retrieves the list of available models using the binding class.
- Processes each model in the list to extract relevant information such as filename, server, image URL, license, owner, owner link, filesize, description, model type, etc.
- Constructs a dictionary representation for each model with the extracted information.
- Appends each model dictionary to the
models
list. - Emits an event
'available_models_list'
with a success response containing the list of available models to the client.
- Checks if a binding class is selected. If not, emits an event
Events generated:
'available_models_list'
: This event is emitted as a response to the client requesting a list of available models. It contains the success status and a list of available models with their details, such as title, icon, license, owner, owner link, description, installation status, file path, filesize, and model type.
list_available_personalities_languages
- Event:
'list_available_personalities_languages'
- Description: This event is triggered when a client requests a list of available personality languages.
- Actions:
- Attempts to retrieve a list of available personality languages by iterating over the
self.personalities_path
directory. - Sends a response to the client containing the success status and the list of available personality languages.
- Attempts to retrieve a list of available personality languages by iterating over the
Parameters: None
Events:
'available_personalities_languages_list'
: This event is emitted as a response to the client after listing the available personality languages.- Data:
'success'
(boolean): Indicates whether the operation was successful or not.'available_personalities_languages'
(list): Contains the available personality languages as a list of strings.
- Data:
list_available_personalities_categories
-
Event:
'list_available_personalities_categories'
-
Description: This event is triggered when a client requests a list of available personality categories based on a specified language.
-
Parameters:
data
: A dictionary containing the following parameter:language
: The language for which to retrieve available personality categories.
-
Actions:
- Extracts the
language
parameter from the request data. - Attempts to retrieve the available personality categories for the specified language.
- Emits an event
'available_personalities_categories_list'
to the client.- If successful, sends a response with a list of available personality categories in the
'available_personalities_categories'
field of the event data. - If an error occurs, sends a response with an error message in the
'error'
field of the event data.
- If successful, sends a response with a list of available personality categories in the
- Extracts the
Events:
- Event:
'available_personalities_categories_list'
- Description: This event is emitted in response to the
list_available_personalities_categories
event. - Data:
- If successful:
'success'
(boolean): Indicates whether the retrieval of available personality categories was successful.'available_personalities_categories'
(list): A list of available personality categories.
- If an error occurs:
'success'
(boolean): Indicates whether an error occurred during the retrieval of available personality categories.'error'
(string): The error message describing the encountered error.
- If successful:
- Description: This event is emitted in response to the
list_available_personalities_names
- Event:
'list_available_personalities_names'
- Description: This event is triggered when a client requests a list of available personality names based on the specified language and category.
- Parameters:
language
(string): The language for which the available personality names are requested.category
(string): The category for which the available personality names are requested.
- Actions:
- Extracts the
language
andcategory
parameters from the request data. - Retrieves the list of available personalities by iterating over the directory specified by the
language
andcategory
parameters. - Sends a response to the client containing the list of available personality names.
- Extracts the
- Event Generated:
'list_available_personalities_names_list'
- Description: This event is emitted as a response to the
list_available_personalities_names
request, providing the list of available personality names. - Parameters:
success
(bool): Indicates the success or failure of the request.list_available_personalities_names
(list): The list of available personality names.error
(string, optional): If the request fails, this parameter contains the error message.
- Description: This event is emitted as a response to the
select_binding
- Event:
'select_binding'
- Description: This event is triggered when a client selects a binding.
- Parameters:
data['binding_name']
: The name of the binding selected by the client.
Actions:
- Creates a deep copy of the
self.config
dictionary and assigns it toself.cp_config
variable. - Updates the
"binding_name"
value inself.cp_config
with the selected binding name obtained fromdata['binding_name']
. - Attempts to build a binding instance using the
self.bindings_path
andself.cp_config
. - If successful, updates
self.binding_class
with the created binding instance and updatesself.config
withself.cp_config
. - Sends a response to the client indicating the success of the binding selection along with the selected binding name.
- If an exception occurs during the binding creation process, the exception is printed and a response is sent to the client indicating the failure of the binding selection along with the selected binding name and the error message.
Events generated:
'select_binding'
: This event is emitted to the client to provide a response regarding the binding selection. It contains the following data:'success'
: A boolean value indicating the success or failure of the binding selection.'binding_name'
: The name of the selected binding.- If the binding selection fails, it also includes:
'error'
: An error message explaining the reason for the failure.
select_model
- Event:
'select_model'
- Description: This event is triggered when a client requests to select a model.
- Parameters:
data['model_name']
(string): The name of the model to select.
- Actions:
- Extracts the model name from the request data.
- Checks if a binding class is available (
self.binding_class
).- If no binding class is available, emits a
'select_model'
event with a failure response, indicating that a binding needs to be selected first. - Returns and exits the function.
- If no binding class is available, emits a
- Creates a deep copy of the configuration (
self.config
) and assigns it toself.cp_config
. - Sets the
"model_name"
property ofself.cp_config
to the selected model name. - Tries to create an instance of the binding class (
self.binding_class
) withself.cp_config
.- If successful, assigns the created binding instance to
self.current_model
. - Emits a
'select_model'
event with a success response, indicating that the model selection was successful. - Returns and exits the function.
- If successful, assigns the created binding instance to
- If an exception occurs during model creation, prints the exception and emits a
'select_model'
event with a failure response, indicating that a binding needs to be selected first.
Events generated:
'select_model'
(success response):- Emits to the client a success response indicating that the model selection was successful.
- Parameters:
'success'
(boolean):True
to indicate success.'model_name'
(string): The selected model name.
'select_model'
(failure response):- Emits to the client a failure response indicating that a binding needs to be selected first or an error occurred during model creation.
- Parameters:
'success'
(boolean):False
to indicate failure.'model_name'
(string): The selected model name.'error'
(string): An error message providing additional details.
add_personality
- Event:
'add_personality'
- Description: This event is triggered when a client requests to add a new personality.
- Parameters:
data
: A dictionary containing the following key-value pairs:'path'
: The path to the personality file.
- Actions:
- Extracts the personality path from the
data
dictionary. - Attempts to create a new
AIPersonality
instance with the provided path. - Appends the created personality to the
self.personalities
list. - Appends the personality path to the
self.config["personalities"]
list. - Saves the updated configuration using
self.config.save_config()
. - Sends a response to the client indicating the success of the personality addition along with the name and ID of the added personality.
- Extracts the personality path from the
- Events Generated:
'personality_added'
: This event is emitted to the client to indicate the successful addition of the personality. The emitted data is a dictionary with the following key-value pairs:'success'
:True
to indicate success.'name'
: The name of the added personality.'id'
: The ID of the added personality in theself.personalities
list.
'personality_add_failed'
: This event is emitted to the client if an exception occurs during the personality addition. The emitted data is a dictionary with the following key-value pairs:'success'
:False
to indicate failure.'error'
: A string containing the error message explaining the cause of the failure.
activate_personality
- Event:
'activate_personality'
- Description: This event is triggered when a client requests to activate a personality.
- Actions:
- Extracts the personality ID from the request data.
- Checks if the personality ID is valid (within the range of
self.personalities
). - Sets the
self.active_personality
to the selected personality. - Sends a response to the client indicating the success of the personality activation along with the name and ID of the activated personality.
- Updates the default personality ID in
self.config["active_personality_id"]
. - Saves the updated configuration using
self.config.save_config()
.
- Event Generated:
'activate_personality'
: Emits the event to the client with the following data:'success'
: Indicates whether the personality activation was successful (True
orFalse
).'name'
: The name of the activated personality.'id'
: The ID (index) of the activated personality in theself.personalities
list.
list_active_personalities
- Event:
'list_active_personalities'
- Description: This event is triggered when a client requests a list of active personalities.
- Parameters: None
- Actions:
- Retrieves the names of all the active personalities from the
self.personalities
list. - Sends a response to the client containing the list of active personality names.
- Retrieves the names of all the active personalities from the
- Event Generated:
'active_personalities_list'
- Event Data:
'success'
: A boolean value indicating the success of the operation.'personalities'
: A list of strings representing the names of the active personalities.
Please note that the 'list_active_personalities'
event does not require any parameters when triggering the endpoint. It simply returns the list of active personalities to the client.
activate_personality
- Event:
'activate_personality'
- Description: This event is triggered when a client requests to activate a personality.
- Parameters:
data['id']
(integer): The ID of the personality to activate.
- Actions:
- Extracts the personality ID from the request data.
- Checks if the personality ID is valid by comparing it with the length of the
self.personalities
list. - If the personality ID is valid:
- Sets the
self.active_personality
to the personality at the specified ID. - Sends a response to the client indicating the success of the personality activation, along with the name and ID of the activated personality.
- Updates the
active_personality_id
in theself.config
object with the activated personality's ID. - Saves the updated configuration.
- Sets the
- If the personality ID is not valid:
- Sends a response to the client indicating the failure of the personality activation, along with an error message.
Generated Events:
'activate_personality'
: This event is emitted to the client after successfully activating a personality.- Parameters:
{'success': True, 'name': self.active_personality, 'id': len(self.personalities) - 1}
:'success'
(boolean): Indicates whether the personality activation was successful.'name'
(string): The name of the activated personality.'id'
(integer): The ID of the activated personality.
- Parameters:
'personality_add_failed'
: This event is emitted to the client if the personality ID provided is not valid.- Parameters:
{'success': False, 'error': 'Personality ID not valid'}
:'success'
(boolean): Indicates whether the personality activation failed.'error'
(string): The error message indicating the reason for the failure.
- Parameters:
generate_text
- Event:
'generate_text'
- Description: This event is triggered when a client requests text generation.
- Parameters:
data
: A dictionary containing the following fields:prompt
(string): The text prompt for text generation.personality
(integer): The index of the selected personality for conditioning the text generation. If it is -1 then no personality is used and the text is assumed to be raw.
- Actions:
- Retrieves the selected model and client ID from the server.
- Extracts the prompt and selected personality index from the request data.
- Initializes an empty answer list for text chunks.
- Retrieves the full discussion blocks from the client's data.
- Defines a callback function to handle generated text chunks.
- Preprocesses the prompt based on the selected personality's configuration, if applicable.
- Constructs the full discussion text by combining the personality's conditioning, prompt, and AI message prefix.
- Prints the input prompt for debugging purposes.
- If a personality processor is available and has a custom workflow, runs the processor's workflow with the prompt and full discussion text, providing the callback function for text chunk emission.
- If no custom workflow is available, generates text using the selected model with the full discussion text, specifying the number of predictions.
- Appends the generated text to the full discussion blocks.
- Prints a success message for debugging purposes.
- Emits the generated text to the client through the
'text_generated'
event.
Events generated:
'buzzy'
: when the server is buzzy and can't process the request, it sends this event and returns. This event have parametermessage
containing a string.'text_chunk'
: Generated text chunks are emitted to the client through this event during the text generation process. The event has two parameterschunk
andtype
.'text_generated'
: Once the text generation process is complete, the final generated text is emitted to the client through this event. The event has one parametertext
containing the full generated text.'generation_canceled'
: Answer tocancel_generation
endpoint call