Work in Progress…
Guide for Ui
Guide was made for the Old Ui, it is semi out of date.
Initial Setup Information
Aetherius is a retrieval framework, meaning that its performance increases over time. The first responses saved to it’s memories will be very influential in whatever “personality” it forms. To help guide these initial responses, remember to upload a set of heuristics.
For desired personality formation, I suggest uploading false memories into Aetherius’s long-term memory from the Database Management menu. Refer to the Memory Types page for more information on implicit and explicit memory.
If you are speaking about a specific topic, or if the bot is designed for a particular purpose, first use the web scraping tool to gather information on that topic. Then, switch to Agent mode and enable the Web DB option to ask questions related to the topic.
Bot Config Menu
This dropdown menu will let you change the Bots information.. It currently contains the settings for editing the Bot and Username, as well as editing the system prompts and greeting.
Choose Bot Name: Allows the User to set the chatbot’s name. Changing the name will result in a new memory database being created.
Choose Username: Allows the user to set the name they are referred to as. The main Aetherius chatbot uses Metadata to filter for only the selected user, this can be removed for a multi-user version by removing the ‘user’ filter when doing Database searches.
Edit Main Prompt: Allows the user to edit the main system prompt for Aetherius. This will be used at the beginning of every running conversation list.
Edit Greeting Prompt: Allows the user to edit the greeting message Aetherius will give after the Main system prompt.
Edit Secondary Prompt: This prompt is a bit more unique as it is part of the internal prompts. This prompt should be a rephrased version of the system prompt mixed with the chatbots main goals/purpose.
Parameter Settings
This menu will allow the user to change the parameters for the LLM’s actual generation. The dropdown menu at the top will allow you to choose which loop’s settings should be effected.
Temperature: Temperature is the main factor in controlling the randomness of outputs. It directly effects the probability distribution of the outputs. A lower temperature will be more deterministic, while as a higher temperature will be more creative.
Top_P: Top_p is also known as nucleus sampling. It is an alternative to just using temperature alone in controlling the randomness of the model’s output. This setting will choose from the smallest set of tokens whose cumulative probability exceeds a threshold p. This set of tokens is referred to as the “nucleus”. It is more dynamic than “top_k” and can lead to more diverse and richer outputs, especially in cases where the model is uncertain.
Top_K: Top_k is another sampling strategy where the model first calculates probabilities for each token in its vocabulary, instead of considering the entire vocabulary as a whole. It restricts the model to only select an output from the k most likely tokens. Top_k is alot more predictable and more simple to use than top_p, but it can make the output too narrow and repetitive.
Repetition_Penalty: This setting will help us improve the output by reducing redundant or repetitive content. When the model is generating an output, the repetition penalty will either discourage, or encourage, repeated selection of the same tokens.
Min_Tokens: This setting will set a minimum length for the generated output, although I have found it doesn’t work with all models.
Max_Tokens: This setting will set the maximum length an output should be.
Truncation_Length: This setting will set the length of our prompt before it is cut off.
Tool Menu
This menu will allow you to use various tools I have made to work in companion with Aetherius. The current Tools available are:
Web-search/Scrape: This Tool will allow you to enter a URL or search term to be scraped. The webpage will be chunked, summarized, and assigned a Semantic Tag.
File Processing: This Tool will allow you to give Aetherius files to “read”. The files will be scanned for text and processed similarly to how the web-scrape functions.
Mode Selection
This menu will allow you to select additional modules to use.
Currently the only available module is the Agent Mode, which includes the Web and File databases, as well as an experimental database curator for memories.
DB Management Menu
This menu will allow you to manage Aetherius’s database. For now it only has basic options like uploading and deleting.
Heuristic Database: A set of 3-7 objective functions should be entered into this database, these entries profoundly shape the generated responses. Prior to interacting with Aetherius, it is advisable to upload some Heuristics. An example set of Heuristics can be found in the configuration folder.
Speech Cadence: This database contains examples of how Aetherius should speak. Llama 2 version has undergone minimal testing with this feature.
Long-Term Memory DB: This Menu will allow you to upload long term memories manually to Aetherius. I would recommend putting some in each to help guide initial conversation.
Edit and Clear Conversation Buttons
Edit Conversation: This button will open the Edit Conversation Window. This window will allow you to edit the current running Conversation List by entry.
Clear Conversation: This button will delete the current running conversation list.
Config Menu
This Menu will allow you to change the various settings related to Aetherius.
Set Oobabooga HOST/Select Model: This will allow you to set the URI to be used for Oobabooga. In the OpenAi version, this is changed to a menu that will allow you to choose which version of GPT you wish to use.
Set Embedding Model: This will allow you to choose which method of Embeddings should be used. Only methods supported for now is sentence transformers and HF embeddings.
Edit Font and Font Size: Will allow the user to set the appearance of Aetherius’s text.
Set Conv Length: Set the maximum conversation length that will be used in the running conversation.
Memory Modes
Menu for selecting how Aetherius should upload its memories to its database. The default mode is “Training”
Training Mode: This mode will have the user decide if each type of memory should be uploaded.
Manual Mode: This mode will have the user decide if memories should be uploaded in a single request after the final response.
Auto Mode: This mode will have Aetherius autonomously decide if its short term memories should be uploaded.
None: No memories will be uploaded.
API Guide
To use the Api Package in your own project, you must first put the “Aetherius_API” folder in the project directory you wish to use it from.
Then you need to import the functions from the script using:
import os
import sys
from Aetherius_API.Main import *
Passthrough Variables
query = User Input
username = User’s Display Name
user_id = Unique User Id
bot_name = Chatbot Name
image_path = Url to an image for GPT Vision to analyze. Local upload coming later.
Available Functions
Aetherius_Chatbot(query, username, user_id, bot_name, image_path)
(This Function is the basic version of Aetherius. It only includes the Inner Monologue, Intuition, and Response Loops. This mode does not use sub-agents. The User Input, Username, and the Bot name must be passed through. The image_path variable is optional, sending an image url in its place will let Aetherius see the image.)
Aetherius_Agent(query, username, user_id, bot_name, image_path)
(This Function is the multi-agent mode of Aetherius. It will use the sub-agents in the sub_agents folder to answer a generated Tasklist. If using this mode it is recommended to use multiple hosts.
Upload_Heuristics(query, username, user_id, bot_name)
(This function will allow you to upload something to the Bot’s Heuristics.)
Upload_Implicit_Short_Term_Memories(query, username, user_id, bot_name)
(This function will allow you to directly upload something into the Bot’s short-term memory.)
Upload_Explicit_Short_Term_Memories(query, username, user_id, bot_name)
(This function will allow you to directly upload something into the Bot’s short-term memory.)
Upload_Implicit_Long_Term_Memories(query, username, user_id, bot_name)
(This function will allow you to directly upload something into the Bot’s long-term memory.)
Upload_Explicit_Long_Term_Memories(query, username, user_id, bot_name)
(This function will allow you to directly upload something into the Bot’s long-term memory.)
TTS_Generation(query)
(This function will use the set TTS in the settings to generate speech.)
Settings Json
The settings for Aetherius will be located in the “chatbot_settings.json” file in the main folder.
The current settings include:
Conversation_Length: This settings will allow you to set the Conversation Length of Aetherius.
Memory_Mode: This will allow you to set the memory upload mode for Aetherius. Current modes are: None, Forced, Auto, Training, and Manual
Embed_Size: This setting will allow you to change the size of the embeddings used for the Qdrant Database.
Model_Backend: This setting will let you choose what format should be used for internal prompts.
LLM_Model: This setting will allow you to choose what LLM model to use. Only “Llama_2” for now. “Open_Ai” coming soon.
Vision_Model: This setting will allow you to set the model for Vision. Only “eyes_url” available for now, “eyes_file” will come soon.
HOST_Oobabooga: This setting is for setting the Oobabooga Host. Separate Multiple Hosts by a space.
Search_External_Resource_DB: This setting will choose if Aetherius should use its External Resource DB for its inner monologue and intuition generation.
Search_Web: This Option will allow you to enable a web-search in Aetherius’s External Resource sub-agent. If the information cannot be found in the scraped data, it will be searched for on the web. (Requires Google or Bing Api keys)
Search_Engine: This option will allow you to choose what search Engine you would like to use for Aetherius. (Current engines are: Google, Bing)
Output Settings: Any setting starting with “Output” will control if that type of response is printed in the terminal.
Generation Parameters
Generation Parameters can be edited at ./Aetherius_API/Generation_Settings/{API that is being used}
Temperature: Temperature is the main factor in controlling the randomness of outputs. It directly effects the probability distribution of the outputs. A lower temperature will be more deterministic, while as a higher temperature will be more creative.
Top_P: Top_p is also known as nucleus sampling. It is an alternative to just using temperature alone in controlling the randomness of the model’s output. This setting will choose from the smallest set of tokens whose cumulative probability exceeds a threshold p. This set of tokens is referred to as the “nucleus”. It is more dynamic than “top_k” and can lead to more diverse and richer outputs, especially in cases where the model is uncertain.
Top_K: Top_k is another sampling strategy where the model first calculates probabilities for each token in its vocabulary, instead of considering the entire vocabulary as a whole. It restricts the model to only select an output from the k most likely tokens. Top_k is alot more predictable and more simple to use than top_p, but it can make the output too narrow and repetitive.
Repetition_Penalty: This setting will help us improve the output by reducing redundant or repetitive content. When the model is generating an output, the repetition penalty will either discourage, or encourage, repeated selection of the same tokens.
Min_Tokens: This setting will set a minimum length for the generated output, although I have found it doesn’t work with all models.
Max_Tokens: This setting will set the maximum length an output should be.
Initialization: Aetherius’s initial memories have a significant impact on its personality development. I recommend using the “Training” Chatbot until a sufficient amount of memories have been uploaded. For desired personality formation, I suggest uploading false memories into Aetherius’s long-term memory from the Database Management menu. Refer to the Memory Types page for more information on implicit and explicit memory.
./config/Chatbot_Prompts/Base Folder: A folder containing the base prompts that will by copied to any new chatbot created.
Long-term Memory DB: This database is designed for consolidation of short-term memories. It features an associative processing function that helps eliminate DB bloat and enables Aetherius to form more long-term goals and opinions. Before initiating a conversation with your chatbot, I recommend inputting a few fabricated memories to guide the initial personality formation.
Auto Memory Mode for Chatbot: This mode empowers Aetherius to autonomously decide whether to upload its memories.
Note that this mode does not feature the parallel task list loop.
Manual Memory Mode for Chatbot: This mode gives you the control to decide if and when memories should be uploaded at the end.
Note that this mode does not feature the parallel task list loop.
Training Memory Mode for Chatbot: This mode allows you to manually decide on the memory uploads. It separates implicit and explicit memories for improved upload decisions.
Note that this mode does not feature the parallel task list loop.
External Resource Modules (Aethersearch, Agent): These modules enable Aetherius to connect with external data. Owing to the constraints of smaller models, it is recommended to scrape the Wikipedia page of your desired subject prior to initiating a conversation. The memories created from these tools are shared across all chatbots, allowing Aetherius’s knowledge base to expand over time.
Aethersearch Chatbot: This is a chatbot that will let you talk to external data. It includes webscrape, websearch, and file processing tools. This bot will prioritize external information over Aetherius’s Memories. File formats include .txt, pdf, epub, jpg, jpeg, and png. (Photo file types only read text with OCR, requires Tesseract.)
Agent: This is a chatbot that follows the Autonomous Architecture. As of now its only tools are DB searches. It will decide if it needs its memories, external resources, or both for each task in its generated tasklist.