240 lines
6.1 KiB
Markdown
240 lines
6.1 KiB
Markdown
# Nanobot Setup Guide
|
|
|
|
This guide will help you set up nanobot on a fresh system, pulling from the repository and configuring it to use Ollama and AirLLM with Llama models.
|
|
|
|
## Prerequisites
|
|
|
|
- Python 3.10 or higher
|
|
- Git
|
|
- (Optional) CUDA-capable GPU for AirLLM (recommended for better performance)
|
|
|
|
## Step 1: Clone the Repository
|
|
|
|
```bash
|
|
git clone <repository-url>
|
|
cd nanobot
|
|
```
|
|
|
|
If you're using a specific branch (e.g., the cleanup branch):
|
|
```bash
|
|
git checkout feature/cleanup-providers-llama-only
|
|
```
|
|
|
|
## Step 2: Create Virtual Environment
|
|
|
|
```bash
|
|
python3 -m venv venv
|
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
```
|
|
|
|
## Step 3: Install Dependencies
|
|
|
|
```bash
|
|
pip install --upgrade pip
|
|
pip install -e .
|
|
```
|
|
|
|
If you plan to use AirLLM, also install:
|
|
```bash
|
|
pip install airllm bitsandbytes
|
|
```
|
|
|
|
## Step 4: Choose Your Provider Setup
|
|
|
|
You have two main options:
|
|
|
|
### Option A: Use Ollama (Easiest, No Tokens Needed)
|
|
|
|
1. **Install Ollama** (if not already installed):
|
|
```bash
|
|
# Linux/Mac
|
|
curl -fsSL https://ollama.ai/install.sh | sh
|
|
|
|
# Or download from: https://ollama.ai
|
|
```
|
|
|
|
2. **Pull a Llama model**:
|
|
```bash
|
|
ollama pull llama3.2:latest
|
|
```
|
|
|
|
3. **Configure nanobot**:
|
|
```bash
|
|
mkdir -p ~/.nanobot
|
|
cat > ~/.nanobot/config.json << 'EOF'
|
|
{
|
|
"providers": {
|
|
"ollama": {
|
|
"apiKey": "dummy",
|
|
"apiBase": "http://localhost:11434/v1"
|
|
}
|
|
},
|
|
"agents": {
|
|
"defaults": {
|
|
"model": "llama3.2:latest"
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
chmod 600 ~/.nanobot/config.json
|
|
```
|
|
|
|
### Option B: Use AirLLM (Direct Local Inference, No HTTP Server)
|
|
|
|
1. **Get Hugging Face Token** (one-time, for downloading gated models):
|
|
- Go to: https://huggingface.co/settings/tokens
|
|
- Create a new token with "Read" permission
|
|
- Copy the token (starts with `hf_`)
|
|
|
|
2. **Accept Llama License**:
|
|
- Go to: https://huggingface.co/meta-llama/Llama-3.2-3B-Instruct
|
|
- Click "Agree and access repository"
|
|
- Accept the license terms
|
|
|
|
3. **Download Llama Model** (one-time):
|
|
```bash
|
|
# Install huggingface_hub if needed
|
|
pip install huggingface_hub
|
|
|
|
# Download model to local directory
|
|
huggingface-cli download meta-llama/Llama-3.2-3B-Instruct \
|
|
--local-dir ~/.local/models/llama3.2-3b-instruct \
|
|
--token YOUR_HF_TOKEN_HERE
|
|
```
|
|
|
|
4. **Configure nanobot**:
|
|
```bash
|
|
mkdir -p ~/.nanobot
|
|
cat > ~/.nanobot/config.json << 'EOF'
|
|
{
|
|
"providers": {
|
|
"airllm": {
|
|
"apiKey": "/home/YOUR_USERNAME/.local/models/llama3.2-3b-instruct",
|
|
"apiBase": null,
|
|
"extraHeaders": {}
|
|
}
|
|
},
|
|
"agents": {
|
|
"defaults": {
|
|
"model": "/home/YOUR_USERNAME/.local/models/llama3.2-3b-instruct"
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
chmod 600 ~/.nanobot/config.json
|
|
```
|
|
|
|
**Important**: Replace `YOUR_USERNAME` with your actual username, or use `~/.local/models/llama3.2-3b-instruct` (the `~` will be expanded).
|
|
|
|
## Step 5: Test the Setup
|
|
|
|
```bash
|
|
nanobot agent -m "Hello, what is 2+5?"
|
|
```
|
|
|
|
You should see a response from the model. If you get errors, see the Troubleshooting section below.
|
|
|
|
## Step 6: (Optional) Use Setup Script
|
|
|
|
Instead of manual configuration, you can use the provided setup script:
|
|
|
|
```bash
|
|
python3 setup_llama_airllm.py
|
|
```
|
|
|
|
This script will:
|
|
- Guide you through model selection
|
|
- Help you configure the Hugging Face token
|
|
- Set up the config file automatically
|
|
|
|
## Configuration File Location
|
|
|
|
- **Path**: `~/.nanobot/config.json`
|
|
- **Permissions**: Should be `600` (read/write for owner only)
|
|
- **Backup**: Always backup before editing!
|
|
|
|
## Available Providers
|
|
|
|
After setup, nanobot supports:
|
|
|
|
- **Ollama**: Local OpenAI-compatible server (no tokens needed)
|
|
- **AirLLM**: Direct local model inference (no HTTP server, no tokens after download)
|
|
- **vLLM**: Local OpenAI-compatible server (for advanced users)
|
|
- **DeepSeek**: API or local models (for future use)
|
|
|
|
## Recommended Models
|
|
|
|
### For Ollama:
|
|
- `llama3.2:latest` - Fast, minimal memory (recommended)
|
|
- `llama3.1:8b` - Good balance
|
|
- `llama3.1:70b` - Best quality (needs more GPU)
|
|
|
|
### For AirLLM:
|
|
- `meta-llama/Llama-3.2-3B-Instruct` - Fast, minimal memory (recommended)
|
|
- `meta-llama/Llama-3.1-8B-Instruct` - Good balance
|
|
- Local path: `~/.local/models/llama3.2-3b-instruct` (after download)
|
|
|
|
## Troubleshooting
|
|
|
|
### "Model not found" error (AirLLM)
|
|
- Make sure you've accepted the Llama license on Hugging Face
|
|
- Verify your HF token has read permissions
|
|
- Check that the model path in config is correct
|
|
- Ensure the model files are downloaded (check `~/.local/models/llama3.2-3b-instruct/`)
|
|
|
|
### "Connection refused" error (Ollama)
|
|
- Make sure Ollama is running: `ollama serve`
|
|
- Check that Ollama is listening on port 11434: `curl http://localhost:11434/api/tags`
|
|
- Verify the model is pulled: `ollama list`
|
|
|
|
### "Out of memory" error (AirLLM)
|
|
- Try a smaller model (Llama-3.2-3B-Instruct instead of 8B)
|
|
- Use compression: set `apiBase` to `"4bit"` or `"8bit"` in the airllm config
|
|
- Close other GPU-intensive applications
|
|
|
|
### "No API key configured" error
|
|
- For Ollama: Use `"dummy"` as apiKey (it's not actually used)
|
|
- For AirLLM: No API key needed for local paths, but you need the model files downloaded
|
|
|
|
### Import errors
|
|
- Make sure virtual environment is activated
|
|
- Reinstall dependencies: `pip install -e .`
|
|
- For AirLLM: `pip install airllm bitsandbytes`
|
|
|
|
## Using Local Model Paths (No Tokens After Download)
|
|
|
|
Once you've downloaded a model locally with AirLLM, you can use it forever without any tokens:
|
|
|
|
```json
|
|
{
|
|
"providers": {
|
|
"airllm": {
|
|
"apiKey": "/path/to/your/local/model"
|
|
}
|
|
},
|
|
"agents": {
|
|
"defaults": {
|
|
"model": "/path/to/your/local/model"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
The model path should point to a directory containing:
|
|
- `config.json`
|
|
- `tokenizer.json` (or `tokenizer_config.json`)
|
|
- Model weights (`model.safetensors` or `pytorch_model.bin`)
|
|
|
|
## Next Steps
|
|
|
|
- Read the main README.md for usage examples
|
|
- Check `nanobot --help` for available commands
|
|
- Explore the workspace features: `nanobot workspace create myproject`
|
|
|
|
## Getting Help
|
|
|
|
- Check the repository issues
|
|
- Review the code comments
|
|
- Test with a simple query first: `nanobot agent -m "Hello"`
|
|
|