-
Notifications
You must be signed in to change notification settings - Fork 1
1.2 Features
BunnyBot's core features are designed to create a seamless conversational experience using speech-to-speech technology.
BunnyBot provides a dual-mode interface, allowing users to engage in conversation using either their voice or a traditional text chatbox. Speech to text is supported with faster-whisper and the use of an open-mic interface. The open-mic feature is "always on" (when activated) and transcribes input audio to text until the user stops speaking. Alternatively, the STT can be toggled on and off with a simple button in the UI. The app launches with it off by default. The user can also make use of the message box in the chat window to send and receive messages with the LLM instead of speaking.
The user can view the chat log in a web-based user interface via a locally hosted Flask app and link. The UI includes a chat window with chat bubbles for both the user and assistant (as well as any system messages), a message box for sending text messages to the LLM, buttons to manage the chat session (clear chat window, reset chat session and end chat session), as well as buttons for user control of some features.
The application connects to a locally hosted LLM via LM Studio, ensuring user privacy and allowing for a customizable AI experience. This gives the user the option to download and use one of many LLMs available via LM Studio, source another one themselves, or create and import their own.
Automatic chat history logging and saving. The app saves all new chat sessions in a JSON file that keeps a timestamped log of all messages sent between the user and LLM. This log indicates the role (user or assistant), the user ID (to help differentiate between different users from different sessions), the message content and the dated timestamp. Actual chat history for the LLMs internal use and context purposes are handled automatically within LM Studio, this is just for user use and future application features.
A small timer that rolls a random number between 5s-30s so that the virtual assistant can continue the conversation on its own, to minimize extended silence and also to carry the conversation more "naturally". This is because the LLM will otherwise sit and wait for user input before sending messages itself, whereas humans do this naturally and without instruction.
A module that allows the app to identify potential user preferences (likes and dislikes) in the input messages to then extract and save that information in a user profile. Saving a user's preferences can help the LLM get to "know" the user better, allowing for a more personalized chatting experience.
A module to handle the creation, organization, adding, removing and searching of things that are deemed relevant for the conversation or use profile. Will also be used in the future to organize previous conversations, make summarizations of chat logs (so that they aren't way too long) and storage of other data relevant to the assistant's tasks/features such as reminders, appointments, notes, important dates and memories, etc.
A class within the Memory Manager for organization of data relevant to the current user. These files will be stored in a folder created with the user name, and will be referenced and updated periodically with new summaries of previous conversations, preferences, appointments, reminders, etc.