Symbio transforms interactions with your machine, allowing intuitive conversations via a local CLI. Users can easily save notes, run commands, and fine-tune AI models on-the-fly. It’s a flexible tool that personalizes computing, making complex tasks straightforward and accessible.
Symbio is an innovative project designed to empower users through seamless interaction with their machines. This flexible system adapts to commands, continually learning and evolving based on user input.
Core Features
- Local CLI Chat: Engage with Symbio directly through a local command-line interface, making communication straightforward and efficient.
- Markdown Notes: Capture facts and notes effortlessly by saving them as markdown files in the
notes/directory for easy organization and access. - File Management: Read, write, search, and modify files within the project directory, enhancing data manipulation capabilities.
- Sandboxed Commands: Execute commands securely in a controlled environment, allowing for temporary shell command execution and Python code snippets.
- Email Interaction: Check and manage emails using IMAP/SMTP, enabling comprehensive communication features.
- Dynamic Learning: Transform notes into actionable training data to fine-tune a LoRA adapter on the fly, improving system responsiveness.
- Structured Data Storage: Every interaction is recorded in JSONL and SQLite format, ensuring that conversations are preserved for future reference.
Quick Start Example
To get started with Symbio, follow this example command sequence:
# Create a virtual environment and install dependencies
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Start chatting
python main.py
Upon the first run, users will be prompted to input their names, which are saved in the config.json file for personalized interaction.
Configuration Options
The configuration file allows users to customize various aspects of the interaction:
| Key | Default | Description |
|---|---|---|
model_name | mlx-community/Qwen2.5-3B-Instruct-4bit | Defines the base MLX model |
assistant_name | Symbio | Name for the assistant |
user_name | (initial input) | User's name |
agent.max_turns | 5 | Maximum tool rounds per user turn |
agent.temperature | 0.1 | Sets the deterministic sampling temperature |
lora.dropout | 0.1 | Helps in reducing overfitting |
lora.scale | 5.0 | Adjusts the scale for the LoRA adapter |
lora.iters | 50 | Sets the iterations for LoRA training |
learn.boost_factor | 3 | Configures the correction sample copies in training data |
Slash Commands
Initiate various functions swiftly through user-friendly slash commands:
| Command | Description |
|---|---|
/quit | Exit chat |
/save | Save ongoing conversation to training data |
/train | Execute LoRA fine-tuning and reload the adapter |
/learn | Learn from the last correction (auto-learn is enabled by default) |
/note [title] | Create a new markdown note |
Learning from Corrections
Symbio automatically tracks and learns from user corrections, saving them as markdown notes in the notes/mistakes/ directory. This feature enhances the system's learning capabilities while allowing users to retain control over training processes.
Architecture Structure
The project is structured as a Python package, facilitating easy access to the main components:
.
├── main.py
├── symbio/
│ ├── __init__.py
│ ├── constants.py
│ ├── utils.py
│ ├── config.py
│ ├── store.py
│ ├── sandbox.py
│ ├── computer.py
│ ├── tools.py
│ ├── llm.py
│ ├── learn.py
│ ├── chat.py
│ └── agent.py
└── notes/
This modular architecture ensures easy adaptation and integration of new features, fostering an environment for ongoing development and user engagement.
Roadmap for Future Enhancements
Volunteers interested in contributing can focus on essential areas, such as:
- CUDA Port: Expand compatibility beyond Apple Silicon.
- Backend Expansion: Introduce llama.cpp support for better model handling.
- Optimization: Refine LoRA performance and memory management.
- Refactoring: Improve code structure and maintainability.
Explore the CONTRIBUTING.md for more information on how to get involved.
No comments yet.
Sign in to be the first to comment.