Charles Grandjean
fix port
8ad62dc
---
title: CyberLegalAIendpoint
sdk: docker
app_port: 8000
---
# CyberLegal AI - LangGraph Agent
Advanced cyber-legal assistant powered by LangGraph + LightRAG + GPT-5-Nano for European regulations expertise.
## πŸ—οΈ Architecture
```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Client API │────│ LangGraph Agent │────│ LightRAG Serverβ”‚
β”‚ (Port 8000) β”‚ β”‚ (Orchestration)β”‚ β”‚ (Port 9621) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ GPT-5-Nano β”‚
β”‚ (Reasoning) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```
## πŸš€ Quick Start
### Using Docker Compose (Recommended)
1. **Environment Setup**
```bash
# Copy and configure environment
cp .env.example .env
# Edit .env with your API keys
# OPENAI_API_KEY=your_openai_key
# LIGHTRAG_API_KEY=your_lightrag_key (optional)
```
2. **Deploy**
```bash
docker-compose up -d
```
3. **Verify Deployment**
```bash
curl http://localhost:8000/health
```
### Using Docker Directly
```bash
# Build the image
docker build -t cyberlegal-ai .
# Run the container
docker run -d \
--name cyberlegal-ai \
-p 8000:8000 \
-e OPENAI_API_KEY=your_key \
-v $(pwd)/rag_storage:/app/rag_storage \
cyberlegal-ai
```
## πŸ“‘ API Usage
### Base URL
```
http://localhost:8000
```
### Endpoints
#### Chat with Assistant
```bash
curl -X POST "http://localhost:8000/chat" \
-H "Content-Type: application/json" \
-d '{
"message": "What are the main obligations under GDPR?",
"role": "client",
"jurisdiction": "EU",
"conversationHistory": []
}'
```
#### Health Check
```bash
curl http://localhost:8000/health
```
#### API Info
```bash
curl http://localhost:8000/
```
## πŸ“ Request Format
```json
{
"message": "User's legal question",
"role": "client" | "lawyer",
"jurisdiction": "EU" | "France" | "Germany" | "Italy" | "Spain" | "Romania" | "Netherlands" | "Belgium",
"conversationHistory": [
{"role": "user|assistant", "content": "Previous message"}
]
}
```
## πŸ“€ Response Format
```json
{
"response": "Detailed legal answer with references",
"confidence": 0.85,
"processing_time": 2.34,
"references": ["gdpr_2022_2555.txt", "nis2_2022_2555.txt"],
"timestamp": "2025-01-15T10:30:00Z",
"error": null
}
```
## 🧠 Expertise Areas
- **GDPR** (General Data Protection Regulation)
- **NIS2** (Network and Information Systems Directive 2)
- **DORA** (Digital Operational Resilience Act)
- **CRA** (Cyber Resilience Act)
- **eIDAS 2.0** (Electronic Identification, Authentication and Trust Services)
- Romanian Civil Code provisions
## πŸ”„ Workflow
1. **User Query** β†’ API receives request with role/jurisdiction context
2. **LightRAG Retrieval** β†’ Searches legal documents for relevant information
3. **LangGraph Processing** β†’ Orchestrates the workflow through nodes:
- Query validation
- LightRAG integration
- Context enhancement with GPT-5-Nano
- Response formatting
4. **Enhanced Response** β†’ Returns structured answer with confidence score
## πŸ› οΈ Development
### Local Development
```bash
# Install dependencies
pip install -r requirements.txt
# Start LightRAG server (required)
lightrag-server --host 127.0.0.1 --port 9621
# Start the API
python agent_api.py
```
### Environment Variables
```bash
OPENAI_API_KEY=your_openai_api_key
LIGHTRAG_API_KEY=your_lightrag_api_key
LIGHTRAG_HOST=127.0.0.1
LIGHTRAG_PORT=9621
API_PORT=8000
```
## πŸ“ Project Structure
```
CyberlegalAI/
β”œβ”€β”€ agent_api.py # FastAPI server
β”œβ”€β”€ langraph_agent.py # Main LangGraph workflow
β”œβ”€β”€ agent_state.py # State management
β”œβ”€β”€ prompts.py # System prompts
β”œβ”€β”€ utils.py # LightRAG integration
β”œβ”€β”€ requirements.txt # Python dependencies
β”œβ”€β”€ Dockerfile # Container configuration
β”œβ”€β”€ docker-compose.yml # Orchestration
β”œβ”€β”€ rag_storage/ # LightRAG data persistence
└── .env # Environment variables
```
## πŸ”§ Configuration
### Port Management
- **Port 8000**: API (exposed externally)
- **Port 9621**: LightRAG (internal only, for security)
### Security Features
- LightRAG server not exposed externally
- API key authentication support
- Non-root container execution
- Health checks and monitoring
## πŸ“Š Monitoring
### Health Checks
```bash
# Container health
docker ps
# Service health
curl http://localhost:8000/health
# Logs
docker logs cyberlegal-ai
```
### Performance Metrics
The API returns:
- Processing time per request
- Confidence scores
- Referenced documents
- Error tracking
## 🚨 Error Handling
The API gracefully handles:
- LightRAG server unavailability
- OpenAI API errors
- Invalid request format
- Network timeouts
## πŸ“š API Examples
### Client Role Example
```json
{
"message": "What should my small business do to comply with GDPR?",
"role": "client",
"jurisdiction": "France"
}
```
### Lawyer Role Example
```json
{
"message": "Analyze the legal implications of NIS2 for financial institutions",
"role": "lawyer",
"jurisdiction": "EU"
}
```
### Comparison Query
```json
{
"message": "Compare incident reporting requirements between NIS2 and DORA",
"role": "client",
"jurisdiction": "EU"
}
```
## 🀝 Integration Examples
### Python Client
```python
import requests
response = requests.post("http://localhost:8000/chat", json={
"message": "What are GDPR penalties?",
"role": "client",
"jurisdiction": "EU",
"conversationHistory": []
})
result = response.json()
print(result["response"])
```
### JavaScript Client
```javascript
const response = await fetch('http://localhost:8000/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message: 'GDPR requirements',
role: 'client',
jurisdiction: 'EU',
conversationHistory: []
})
});
const result = await response.json();
console.log(result.response);
```
## πŸ“‹ Troubleshooting
### Common Issues
1. **LightRAG Connection Failed**
- Verify LightRAG server is running on port 9621
- Check container logs: `docker logs cyberlegal-ai`
2. **OpenAI API Errors**
- Verify OPENAI_API_KEY is set correctly
- Check API key permissions and quota
3. **Slow Responses**
- Monitor processing time in API response
- Check LightRAG document indexing
### Debug Mode
Enable debug logging:
```bash
docker-compose logs -f cyberlegal-api
```
## πŸ“œ License
This project provides general legal information and is not a substitute for professional legal advice.
## πŸ”„ Updates
The system automatically:
- Retrieves latest regulatory documents
- Updates knowledge base through LightRAG
- Maintains conversation context
- Provides confidence scoring