agentic-defensor / run_production.md
vichudo's picture
add first approach
b840b29
|
Raw
History Blame Contribute Delete
3.9 kB
# Production Deployment Guide
This guide will help you deploy Agentic Defensor in a production environment.
## Quick Start
1. **Using start.sh script:**
```bash
# Setup permissions
chmod +x start.sh
# Start API server
./start.sh api
# Or run interactive mode
./start.sh interactive
# Or run a specific query
./start.sh agent "Your query here"
```
2. **Using Makefile:**
```bash
# Install dependencies
make setup
# Start API server
make run
# Or run with agent
make run-agent QUERY="Your query here"
```
3. **Using Docker:**
```bash
# Build and run
make build-docker
make run-docker
# Or directly with docker-compose
docker-compose up -d
```
## Deployment Options
### 1. Local Deployment
For local deployment, simply use the provided start.sh script:
```bash
./start.sh api
```
### 2. Docker Deployment
For containerized deployment:
```bash
# Build and run
docker-compose up -d
```
Environment variables can be set in a `.env` file or passed directly to docker-compose:
```bash
OPENAI_API_KEY=your_key docker-compose up -d
```
### 3. Server Deployment
#### Prerequisites
- Python 3.8+
- pip
- Git
- Make (optional)
#### Steps
1. Clone the repository:
```bash
git clone https://github.com/yourusername/agentic-defensor.git
cd agentic-defensor
```
2. Set up environment:
```bash
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
3. Configure environment variables:
```bash
echo "OPENAI_API_KEY=your_api_key" > .env
```
4. Setup data directories:
```bash
mkdir -p data embeddings pdfs
# Copy your data files into appropriate directories
```
5. Run with systemd (for Linux servers):
Create a systemd service file at `/etc/systemd/system/agentic-defensor.service`:
```
[Unit]
Description=Agentic Defensor API
After=network.target
[Service]
User=your_username
WorkingDirectory=/path/to/agentic-defensor
ExecStart=/path/to/agentic-defensor/start.sh api
Restart=on-failure
RestartSec=5
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
```
Then enable and start the service:
```bash
sudo systemctl enable agentic-defensor
sudo systemctl start agentic-defensor
```
6. Use with nginx as reverse proxy:
Install nginx:
```bash
sudo apt-get install nginx
```
Configure nginx site:
```
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
Save to `/etc/nginx/sites-available/agentic-defensor` then enable it:
```bash
sudo ln -s /etc/nginx/sites-available/agentic-defensor /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```
## Monitoring and Logging
For production deployments, consider adding:
1. Logging to file:
```bash
./start.sh api > /var/log/agentic-defensor.log 2>&1
```
2. Use a process manager like PM2:
```bash
npm install -g pm2
pm2 start "python -m uvicorn src.api.app:app --host 0.0.0.0 --port 8000" --name agentic-defensor
```
3. Set up monitoring with Prometheus and Grafana (see documentation for details)
## Scaling
For scaling the application:
1. Use multiple instances behind a load balancer
2. Consider using a proper API gateway
3. Implement caching for frequent queries
4. Use a production-ready database for storing query history
## Security Considerations
1. Always use HTTPS in production
2. Implement proper authentication for API access
3. Regularly update dependencies
4. Monitor for unusual query patterns
5. Implement rate limiting
6. Use API keys for access control
## Backup and Maintenance
1. Regularly backup your data directories
2. Schedule updates during off-peak hours
3. Implement a rollback strategy for updates
4. Set up monitoring alerts for system health