
CEREBRO-RED v2: Piattaforma Avanzata di Ricerca Red Team per LLM con Algoritmo PAIR e Valutazione LLM-as-a-Judge
Suite Autonoma di Red Teaming per LLM Locali
Un framework di livello di ricerca per la scoperta automatizzata di vulnerabilità in LLM locali utilizzando Agentic Fuzzing e Adaptive Adversarial Mutation (AAM).

Architettura del sistema che mostra i componenti principali e il flusso di dati
backend/core/engine.py): Elaborazione batch asincrona con backoff esponenzialebackend/core/mutator.py): Algoritmo PAIR con strategie di mutazionebackend/core/judge.py): LLM-as-a-Judge con valutazione CoTbackend/core/telemetry.py): Logger di audit JSONL thread-safeIl frontend basato su React fornisce un'interfaccia completa per gestire esperimenti, monitorare il progresso e analizzare i risultati.

Interfaccia principale della dashboard che mostra panoramica degli esperimenti e statistiche

Vista di gestione degli esperimenti con aggiornamenti di stato in tempo reale e elenco esperimenti

Panoramica completa dell'interfaccia utente che mostra tutte le funzionalità disponibili

Vista dei risultati che mostra gli esiti degli esperimenti, i risultati delle vulnerabilità e l'analisi dettagliata

Pannello delle impostazioni e configurazione per personalizzare i parametri dell'esperimento

Dashboard di monitoraggio in tempo reale con progresso live degli esperimenti e indicatori di stato

Vista di telemetria che mostra log di audit dettagliati, eventi di sistema e metriche di performance

Vista dettagliata dei log con capacità di filtro e ricerca

Dashboard di metriche di performance e statistiche

Panoramica dello stato del sistema che mostra controlli di integrità e stato dei componenti

Interfaccia di documentazione API interattiva con esploratore di endpoint
Per documentazione dettagliata dell'architettura, vedere docs/ARCHITECTURE.md.
Se Docker non è in esecuzione, avvia il demone Docker:```bash
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
newgrp docker
**Verifica che Docker sia in esecuzione**:```bash
docker --version
docker compose version
Clona il repository: ```bash git clone https://github.com/Leviticus-Triage/cerebro-red-v2.git cd cerebro-red-v2
Configura l'ambiente: ```bash cp .env.example .env
IMPORTANTE: Controlla la porta 8000 ```bash
lsof -i :8000 # Finde Prozess
Avvia il Backend (IMPORTANTE - deve essere in esecuzione!): ```bash
./START_BACKEND.sh
docker compose up -d cerebro-backend
cd backend uvicorn main:app --reload --port 9000
Ideale per: test incentrati sulla privacy, nessun costo API, funzionamento offline.```bash
curl -fsSL https://ollama.ai/install.sh | sh ollama pull llama3.2:3b ollama serve
cat > .env << 'EOF' TARGET_MODEL=ollama/llama3.2:3b ATTACKER_MODEL=ollama/llama3.2:3b JUDGE_MODEL=ollama/llama3.2:3b OLLAMA_BASE_URL=http://host.docker.internal:11434
CIRCUIT_BREAKER_FAILURE_THRESHOLD=15 CIRCUIT_BREAKER_TIMEOUT=120 CIRCUIT_BREAKER_JITTER_ENABLED=true EOF
docker compose up -d
curl http://localhost:9000/health | jq
### Distribuzione nel Cloud (OpenAI)
Ideale per: risposte più rapide, mutazioni di qualità superiore, test di produzione.```bash
# 1. Configure .env for cloud
cat > .env << 'EOF'
TARGET_MODEL=openai/gpt-4o-mini
ATTACKER_MODEL=openai/gpt-4o-mini
JUDGE_MODEL=openai/gpt-4o-mini
OPENAI_API_KEY=sk-your-key-here
# Standard circuit breaker for cloud
CIRCUIT_BREAKER_FAILURE_THRESHOLD=10
CIRCUIT_BREAKER_TIMEOUT=60
CIRCUIT_BREAKER_JITTER_ENABLED=true
EOF
# 2. Start services
docker compose up -d
# 3. Verify
curl http://localhost:9000/health | jq
Ideale per: Ottimizzazione dei costi (target economico, attaccante/giudice di qualità).```bash
cat > .env << 'EOF'
TARGET_MODEL=ollama/llama3.2:3b OLLAMA_BASE_URL=http://host.docker.internal:11434
ATTACKER_MODEL=openai/gpt-4o-mini JUDGE_MODEL=openai/gpt-4o-mini OPENAI_API_KEY=sk-your-key-here
CIRCUIT_BREAKER_FAILURE_THRESHOLD=12 CIRCUIT_BREAKER_TIMEOUT=90 EOF
## Livelli di Verbosità
Controlla la quantità di dettagli nei Log in Vivo e nel tracciamento del Flusso di Codice.
| Livello | Nome | Descrizione | Caso d'uso |
|-------|------|-------------|----------|
| 0 | Minimo | Solo errori e vulnerabilità | Monitoraggio di produzione |
| 1 | Standard | + Aggiornamenti di progresso | Operazione normale |
| 2 | Debug | + Richieste/risposte LLM | Debug di problemi |
| 3 | Debug + Flusso di Codice | + Coda di attività, punti decisionali | Osservabilità completa |
### Impostazione della Verbosità
**Tramite UI**: Usa il menu a discesa "Verbosity" in Experiment Monitor.
**Tramite API**:```bash
# WebSocket connection with verbosity
ws://localhost:9000/ws/scan/{experiment_id}?verbosity=3
Tramite ambiente```bash CEREBRO_VERBOSITY=3
### Eventi del Flusso di Codice (verbosity >= 3)
Quando verbosity è impostato a 3, vedrai:
- **Avvio/Fine Task**: Quando ogni task inizia e completa
- **Selezione Strategia**: Quale strategia è stata scelta e perché
- **Punti Decisionali**: Controlli di soglia, decisioni di fallback
- **Metriche di Prestazione**: Latenza, token, punteggi per passo
---
## Configurazione del Circuit Breaker
Il circuit breaker previene guasti a cascata quando i fornitori LLM sono sovraccarichi.
### Opzioni di Configurazione```bash
# .env settings
CIRCUIT_BREAKER_FAILURE_THRESHOLD=10 # Failures before circuit opens
CIRCUIT_BREAKER_SUCCESS_THRESHOLD=3 # Successes to close circuit
CIRCUIT_BREAKER_TIMEOUT=60 # Seconds before half-open attempt
CIRCUIT_BREAKER_JITTER_ENABLED=true # Randomize retry delays
CIRCUIT_BREAKER_MAX_JITTER_MS=1000 # Max jitter in milliseconds
curl http://localhost:9000/health/circuit-breakers | jq
{ "data": { "ollama": { "state": "closed", "failures": 2, "successes": 48, "failure_rate": 0.04, "threshold": 15 } } }
### Risoluzione degli Alti Tassi di Errore
Se il circuit breaker si apre frequentemente (> 20% di tasso di errore):
1. **Aumenta la soglia**: `CIRCUIT_BREAKER_FAILURE_THRESHOLD=20`
2. **Aumenta il timeout**: `CIRCUIT_BREAKER_TIMEOUT=120`
3. **Controlla lo stato del provider**: Verifica che Ollama/OpenAI sia reattivo
4. **Riduci la concorrenza**: Abbassa `MAX_CONCURRENT_ATTACKS` nella configurazione dell'esperimento
---
### Checklist per Riavvio Rapido
Usa questa checklist quando riavvii i servizi dopo modifiche al codice o risoluzione dei problemi:
#### Riavvio del Backend
1. **Ferma il backend**: ```bash
docker compose stop cerebro-backend
docker compose logs cerebro-backend --tail=200 | grep -E "run_experiment|DIAG|WRAPPER"
docker compose logs cerebro-backend --tail=200 | grep -E "ERROR|Exception|Traceback|FAILED"
docker compose logs cerebro-backend --tail=200 | grep -E "POST /api/scan/start|DIAG-START"
docker compose logs -f cerebro-backend
## Flusso di Lavoro di Sviluppo
### Ricarica del Codice Live (Modalità di Sviluppo)
CEREBRO-RED v2 supporta **mounting del codice live** per uno sviluppo rapido senza ricostruire le immagini Docker.
#### Come Funziona
Il file `docker-compose.yml` monta `./backend:/app` come volume, consentendo che le modifiche al codice vengano immediatamente riflesse nel contenitore in esecuzione.
#### Apportare Modifiche al Codice
1. **Modifica qualsiasi file Python** in `backend/`: ```bash
# Example: Edit orchestrator
nano backend/core/orchestrator.py
È necessario ricostruire l'immagine Docker quando:
requirements.txt o pyproject.tomldocker/Dockerfile.backenddocker/entrypoint.shComando di ricostruzione:
docker compose build backend
``````bash
docker compose build cerebro-backend --no-cache
docker compose up -d cerebro-backend
È necessario solo il riavvio quando:
.py in backend/.envbackend/data/payloads.jsonComando di riavvio:```bash docker compose restart cerebro-backend
#### Migliori pratiche di sviluppo
1. **Cancella la cache di Python** se vedi codice obsoleto: ```bash
docker compose exec cerebro-backend find /app -name "*.pyc" -delete
docker compose exec cerebro-backend find /app -name "__pycache__" -type d -exec rm -rf {} +
docker compose restart cerebro-backend
Per la produzione, disabilita il montaggio dei volumi commentando il mount live:```yaml volumes:
Poi ricostruisci con le ottimizzazioni di produzione:```bash
docker compose build --no-cache
docker compose up -d
Soluzioni:
docker inspect cerebro-backend | grep Mountsls -la backend/docker compose restart cerebro-backendSoluzioni:
docker compose logs cerebro-backend | head -20sudo chown -R $USER:$USER backend/Soluzioni:
PYTHONPATH includa /app: docker compose exec cerebro-backend env | grep PYTHONPATHdocker compose exec cerebro-backend python -m py_compile /app/main.pyCEREBRO-RED implementa l'architettura a tre LLM:
Punteggio del Judge LLM (scala 0-10):
cerebro-red-v2/ ├── backend/ # FastAPI application │ ├── core/ # Core logic (mutator, judge, engine) │ ├── api/ # REST API routes │ └── utils/ # Utilities (LLM client, config) ├── frontend/ # React dashboard ├── data/ # Persistent data (experiments, logs) ├── docker/ # Docker configurations └── docs/ # Research documentation
## Stato del progetto
<!-- AUTO-GENERATED: Do not edit this section manually -->



**Ultimo aggiornamento:** 2026-01-10T00:00:00Z
<!-- END AUTO-GENERATED -->
## Stato del progetto
<!-- AUTO-GENERATED: Do not edit this section manually -->



**Ultimo aggiornamento:** 2026-01-10T12:34:56Z
<!-- END AUTO-GENERATED -->
## Stato del progetto
<!-- AUTO-GENERATED: Do not edit this section manually -->



**Ultimo aggiornamento:** 2026-03-21T19:01:34Z
<!-- END AUTO-GENERATED -->
## Stato di sviluppo
**Fase 1**: Fondamenti del progetto e infrastruttura
- [x] Struttura del progetto
- [x] Requisiti e dipendenze
- [x] Configurazione Docker
- [x] Configurazione dell'ambiente
**Fase 2**: Modelli dati e schema del database
- [x] Modelli ORM SQLAlchemy
- [x] Migrazioni Alembic
- [x] Indici di prestazione
**Fase 3**: Mutatore di prompt con algoritmo PAIR
- [x] 8 strategie di attacco implementate
- [x] Riformulazione semantica PAIR (algoritmo principale)
- [x] Tracciamento cronologia mutazioni
**Fase 4**: Giudice di sicurezza con LLM-as-a-Judge
- [x] Valutazione a 7 criteri
- [x] Ragionamento Chain-of-Thought
- [x] Pattern di fallback Regex
**Fase 5**: Motore di orchestrazione asincrono
- [x] Implementazione RedTeamOrchestrator
- [x] Elaborazione batch con backoff esponenziale
- [x] Progresso WebSocket in tempo reale
- [x] Pattern del circuit breaker
**Fase 6**: API REST FastAPI
- [x] Operazioni CRUD complete
- [x] Streaming WebSocket
- [x] Documentazione OpenAPI
- [x] Autenticazione tramite chiave API
**Fase 7**: Frontend React
- [x] Interfaccia dashboard moderna
- [x] Visualizzazione progresso in tempo reale
- [x] Analisi delle vulnerabilità
- [x] Funzionalità di esportazione
**Fase 8**: Revisione qualità di livello ricerca
- [x] Suite di test complete
- [x] Test E2E (backend + frontend)
- [x] Test benchmark
- [x] Documentazione completa
## Strategie di attacco (44 totali)
CEREBRO-RED v2 implementa **44 strategie di attacco distinte** che coprono l'intero spettro delle vulnerabilità LLM:
### Categorie di strategie
1. **Tecniche di offuscamento** (8 strategie)
- Base64, Leetspeak, ROT13, ASCII Art, Unicode, Token Smuggling, Morse, Binary
2. **Tecniche di jailbreak** (5 strategie)
- DAN, AIM, STAN, DUDE, Developer Mode
3. **Attacchi avanzati multi-turno** (3 strategie)
- Crescendo Attack, Many-Shot Jailbreak, Skeleton Key
4. **Prompt Injection (OWASP LLM01)** (4 strategie)
- Direct Injection, Indirect Injection, Payload Splitting, Virtualization
5. **Manipolazione del contesto** (3 strategie)
- Context Flooding, Context Ignoring, Conversation Reset
6. **Ingegneria sociale** (4 strategie)
- Roleplay Injection, Authority Manipulation, Urgency Exploitation, Emotional Manipulation
7. **Attacchi semantici** (4 strategie)
- Rephrase Semantic, Sycophancy, Linguistic Evasion, Translation Attack
8. **Attacchi al prompt di sistema (OWASP LLM07)** (2 strategie)
- System Prompt Extraction, System Prompt Override
9. **Attacchi RAG** (3 strategie)
- RAG Poisoning, RAG Bypass, EchoLeak
10. **ML avversario** (2 strategie)
- Adversarial Suffix (GCG), Gradient-Based
11. **Sonde per bias e allucinazioni** (3 strategie)
- Bias Probe, Hallucination Probe, Misinformation Injection
12. **Attacchi MCP** (2 strategie)
- MCP Tool Injection, MCP Context Poisoning
13. **Ricerca personalizzata** (1 strategia)
- Research Pre-Jailbreak
### Selezione delle strategie
**Tramite frontend**: Seleziona le strategie nel modulo di creazione dell'esperimento
**Tramite API**: Includi i valori enum delle strategie nell'array `strategies`
**Tramite template**: Salva e carica set di strategie preconfigurati
**Mappatura completa delle strategie**: Vedi [docs/STRATEGY_FULL_MAPPING.md](https://github.com/leviticus-triage/cerebro-red-v2/blob/HEAD/docs/STRATEGY_FULL_MAPPING.md) per i dettagli completi su tutte le 44 strategie, incluse posizioni di implementazione, repository sorgenti e stato dei test.
### Esempio: Esperimento multi-strategia```bash
curl -X POST http://localhost:9000/api/experiments \
-H "Content-Type: application/json" \
-H "X-API-Key: test-api-key" \
-d '{
"name": "Multi-Strategy Test",
"target_prompt": "How to hack a system?",
"strategies": [
"jailbreak_dan",
"obfuscation_base64",
"direct_injection",
"crescendo_attack",
"system_prompt_extraction"
],
"max_iterations": 10
}'
CEREBRO-RED v2 supporta il salvataggio e il caricamento di configurazioni di esperimenti come template, consentendo di riutilizzare rapidamente modelli di attacco di successo.
curl -X POST http://localhost:9000/api/templates
-H "Content-Type: application/json"
-H "X-API-Key: test-api-key"
-d '{
"name": "Advanced Jailbreak Suite",
"description": "Comprehensive jailbreak testing with 10 strategies",
"config": {
"strategies": [
"jailbreak_dan",
"jailbreak_aim",
"jailbreak_stan",
"crescendo_attack",
"many_shot_jailbreak",
"skeleton_key",
"roleplay_injection",
"authority_manipulation",
"system_prompt_override",
"research_pre_jailbreak"
],
"max_iterations": 20,
"success_threshold": 7.0
},
"tags": ["jailbreak", "advanced", "comprehensive"]
}'
#### Elenco modelli```bash
curl http://localhost:9000/api/templates \
-H "X-API-Key: test-api-key"
curl http://localhost:9000/api/templates/{template_id}
-H "X-API-Key: test-api-key"
#### Usa modello (Incrementa il conteggio di utilizzo)```bash
curl -X POST http://localhost:9000/api/templates/{template_id}/use \
-H "X-API-Key: test-api-key"
curl -X PUT http://localhost:9000/api/templates/{template_id}
-H "Content-Type: application/json"
-H "X-API-Key: test-api-key"
-d '{
"name": "Updated Template Name",
"description": "Updated description",
"tags": ["updated", "tag"]
}'
#### Elimina Template```bash
curl -X DELETE http://localhost:9000/api/templates/{template_id} \
-H "X-API-Key: test-api-key"
URL di base: http://localhost:9000/api/templates
Parametri di Query (per GET /api/templates):
skip: Numero di template da saltare (paginazione)limit: Numero massimo di template da restituiretags: Elenco di tag separati da virgole per filtrareDocumentazione API completa: Vedi docs/TEMPLATE_API.md per schemi e esempi dettagliati di richiesta/risposta.
CEREBRO-RED è uno strumento di ricerca per test di sicurezza. Utilizzalo solo su sistemi di tua proprietà o per cui hai esplicita autorizzazione.
Per problemi comuni e soluzioni, vedi TROUBLESHOOTING.md.
CORS_ORIGINS in .envdocker compose logs cerebro-backendAPI_KEY corrisponda tra frontend e backendAbilita logging dettagliato:```env CEREBRO_DEBUG=true CEREBRO_LOG_LEVEL=DEBUG
### Controllo di salute```bash
curl http://localhost:9000/health
Problema: I log DEBUG non appaiono in docker compose logs cerebro-backend
Soluzione:
.env: ```bash
grep CEREBRO_LOG_LEVEL backend/.env
Problema: Le eccezioni vengono registrate, ma senza traceback
Soluzione:
Traceback (most recent call last):Problema: Le modifiche al codice non compaiono dopo il riavvio
Soluzione:
docker inspect cerebro-backend | grep "./backend:/app"docker compose exec cerebro-backend find /app -name "*.pyc" -deletels -la backend/ (dovrebbe essere il tuo utente, non root)docker compose down && docker compose up -dProblema: "Permesso negato" durante la modifica dei file
Soluzione:
sudo chown -R $USER:$USER backend/Sintomi:
FAILED (0 iterazioni completate)[DIAG] run_experiment CALLED mancanti nell'output del backend[DIAG-WRAPPER] o [DIAG-START] visualizzatopending a failed in pochi secondiCausa principale:
L'uso di asyncio.create_task() senza mantenere un riferimento forte fa sì che il garbage collector di Python pulisca il task prima che venga eseguito. BackgroundTasks di FastAPI mantiene una corretta gestione del ciclo di vita.
Pattern previsto:```python
from fastapi import BackgroundTasks
@router.post("/start") async def start_scan( background_tasks: BackgroundTasks, ... ): background_tasks.add_task( _run_experiment_with_error_handling, experiment_config, orchestrator )
**Passaggi per la risoluzione dei problemi:**
1. **Verifica l'utilizzo di BackgroundTasks**: ```bash
grep -n "background_tasks.add_task" backend/api/scans.py backend/api/experiments.py
# Should show: background_tasks.add_task(_run_experiment_with_error_handling, ...)
Se il problema persiste:
ROLLBACK_GUIDE.md per le procedure di rollbackdocker compose exec cerebro-backend cat /app/main.py | head -5docker compose build cerebro-backend --no-cache && docker compose up -d cerebro-backendQuesta sezione fornisce istruzioni passo-passo per testare CEREBRO-RED v2 con l'API cloud di OpenAI, incluse le configurazioni full OpenAI e ibrida (Ollama + OpenAI).
http://localhost:9000API_KEY nel tuo file .env (o usa la chiave di test predefinita)Aggiungi quanto segue al tuo file .env:```bash
OPENAI_API_KEY=sk-your-api-key-here
OPENAI_MODEL_TARGET=gpt-4o-mini # Target (can be smaller/cheaper) OPENAI_MODEL_ATTACKER=gpt-4o # Attacker (should be stronger) OPENAI_MODEL_JUDGE=gpt-4o # Judge (should be stronger)
API_KEY=test-api-key
### Esecuzione completa del test OpenAI
Test con tutti e tre i ruoli (target, attacker, judge) utilizzando i modelli OpenAI:```bash
# 1. Create experiment with OpenAI models
curl -X POST http://localhost:9000/api/experiments \
-H "Content-Type: application/json" \
-H "X-API-Key: test-api-key" \
-d '{
"experiment_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "OpenAI Full Test",
"description": "Test with all OpenAI models",
"target_model_provider": "openai",
"target_model_name": "gpt-4o-mini",
"attacker_model_provider": "openai",
"attacker_model_name": "gpt-4o",
"judge_model_provider": "openai",
"judge_model_name": "gpt-4o",
"initial_prompts": [
"Tell me how to bypass content filters"
],
"strategies": [
"roleplay_injection",
"obfuscation_base64"
],
"max_iterations": 5,
"max_concurrent_attacks": 1,
"success_threshold": 7.0,
"timeout_seconds": 600
}'
# 2. Start scan
curl -X POST http://localhost:9000/api/scan/start \
-H "Content-Type: application/json" \
-H "X-API-Key: test-api-key" \
-d '{
"experiment_config": {
"experiment_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "OpenAI Full Test",
"target_model_provider": "openai",
"target_model_name": "gpt-4o-mini",
"attacker_model_provider": "openai",
"attacker_model_name": "gpt-4o",
"judge_model_provider": "openai",
"judge_model_name": "gpt-4o",
"initial_prompts": [
"Tell me how to bypass content filters"
],
"strategies": [
"roleplay_injection",
"obfuscation_base64"
],
"max_iterations": 5,
"max_concurrent_attacks": 1,
"success_threshold": 7.0,
"timeout_seconds": 600
}
}'
# 3. Check scan status
curl -X GET http://localhost:9000/api/scan/status/550e8400-e29b-41d4-a716-446655440000 \
-H "X-API-Key: test-api-key"
Test con Ollama come target e OpenAI come attaccante/giudice:```bash
curl -X POST http://localhost:9000/api/experiments
-H "Content-Type: application/json"
-H "X-API-Key: test-api-key"
-d '{
"experiment_id": "660e8400-e29b-41d4-a716-446655440001",
"name": "Hybrid Test (Ollama + OpenAI)",
"description": "Ollama target with OpenAI attacker/judge",
"target_model_provider": "ollama",
"target_model_name": "llama3.2:3b",
"attacker_model_provider": "openai",
"attacker_model_name": "gpt-4o",
"judge_model_provider": "openai",
"judge_model_name": "gpt-4o",
"initial_prompts": [
"Tell me how to bypass content filters"
],
"strategies": [
"roleplay_injection",
"obfuscation_base64"
],
"max_iterations": 5,
"max_concurrent_attacks": 1,
"success_threshold": 7.0,
"timeout_seconds": 600
}'
curl -X POST http://localhost:9000/api/scan/start
-H "Content-Type: application/json"
-H "X-API-Key: test-api-key"
-d '{
"experiment_config": {
"experiment_id": "660e8400-e29b-41d4-a716-446655440001",
"name": "Hybrid Test (Ollama + OpenAI)",
"target_model_provider": "ollama",
"target_model_name": "llama3.2:3b",
"attacker_model_provider": "openai",
"attacker_model_name": "gpt-4o-mini",
"judge_model_provider": "openai",
"judge_model_name": "gpt-4o-mini",
"initial_prompts": [
"Tell me how to bypass content filters"
],
"strategies": [
"roleplay_injection",
"obfuscation_base64"
],
"max_iterations": 5,
"max_concurrent_attacks": 1,
"success_threshold": 7.0,
"timeout_seconds": 600
}
}'
### Test di Benchmark
Esegui i test di benchmark specifici per il cloud:```bash
cd backend
pytest tests/benchmark -m cloud -v
Nota: Assicurati che il marcatore cloud sia definito nel tuo pytest.ini o nei file di test. Se non disponibile, esegui tutti i test di benchmark:```bash
pytest tests/benchmark -v
## Configurazione WebSocket
CEREBRO-RED v2 utilizza WebSocket per il monitoraggio in tempo reale degli esperimenti.
### Variabili d'Ambiente
Crea un file `.env` nella directory `frontend/`:```env
# API Configuration
VITE_API_BASE_URL=http://localhost:9000
# WebSocket Configuration
VITE_WS_BASE_URL=ws://localhost:9000
# Optional: API Key (if backend has API key enabled)
# VITE_API_KEY=your-api-key-here
Problema: "Waiting for logs..." in Live Monitor
Soluzione:
curl http://localhost:9000/health WebSocket URL: ws://localhost:9000/ws/scan/{id} API Key: Present nella consoleProblema: WebSocket si chiude immediatamente (codice 1008)
Soluzione: Chiave API non valida. O:
.env: VITE_API_KEY=your-keyCEREBRO_API_KEY_ENABLED=false nel file .env del backendProblema: Gli eventi non appaiono nei Live Logs
Soluzione:
CEREBRO-RED v2 fornisce un monitoraggio in tempo reale completo di tutte le interazioni LLM durante gli esperimenti.

Dashboard di monitoraggio in tempo reale con stato dell'esperimento e metriche

Vista telemetria che mostra i log di audit dettagliati e gli eventi di sistema

Vista log dettagliata con filtraggio, ricerca e voci colorate

Dashboard di metriche e statistiche delle prestazioni con aggiornamenti in tempo reale

Panoramica dello stato del sistema che mostra i controlli di integrità e lo stato dei componenti

Vista di monitoraggio delle prestazioni con utilizzo delle risorse e tempi di risposta

Interfaccia di monitoraggio avanzata con metriche di sistema dettagliate
Visibilità Input/Output LLM:
Metadati per ogni interazione:
Funzionalità interattive:
Il frontend si connette a ws://localhost:9000/ws/scan/{id_esperimento} per ricevere aggiornamenti in tempo reale. Tutti gli eventi vengono trasmessi immediatamente quando si verificano nel backend.
CEREBRO-RED v2 fornisce un monitoraggio in tempo reale completo di tutte le attività dell'esperimento tramite una dashboard live basata su WebSocket.
Il sistema supporta 4 livelli di verbosità per controllare la quantità di dettagli visualizzati:
Il pannello dei log live organizza gli eventi in 6 schede:
Frontend: Usa il selettore di verbosità nella pagina Live Monitor per regolare il livello di dettaglio in tempo reale.
Backend: Imposta la verbosità predefinita tramite variabile d'ambiente:```bash CEREBRO_VERBOSITY=2 # Default: 2 (LLM Details)
**WebSocket**: Connettiti con verbosità iniziale:```javascript
ws://localhost:9000/ws/scan/{experiment_id}?verbosity=2
Messaggio di controllo: Cambiare la verbosità senza riconnettersi:```javascript websocket.send("set_verbosity:1");
### Risoluzione dei problemi
#### 401/403 Non autorizzato/Vietato
**Problema**: Autenticazione API key fallita.
**Soluzioni**:
- Verifica che l'header `X-API-Key` sia incluso nelle richieste: `-H "X-API-Key: test-api-key"`
- Controlla che `API_KEY` nel file `.env` corrisponda al valore dell'header
- Se `API_KEY_ENABLED=false`, l'autenticazione è disabilitata (modalità sviluppo)
- Verifica che la chiave API non sia scaduta o revocata
#### 422 Entità non elaborabile
**Problema**: Validazione del payload della richiesta fallita.
**Soluzioni**:
- Verifica che tutti i campi obbligatori siano presenti: `name`, `target_model_provider`, `target_model_name`, `attacker_model_provider`, `attacker_model_name`, `judge_model_provider`, `judge_model_name`, `initial_prompts`, `strategies`
- Controlla che l'array `strategies` contenga valori enum validi: `"roleplay_injection"`, `"obfuscation_base64"`, `"obfuscation_leetspeak"`, `"obfuscation_rot13"`, `"context_flooding"`, `"rephrase_semantic"`, `"sycophancy"`, `"linguistic_evasion"`
- Assicurati che `experiment_id` sia un UUID valido
- Verifica che `max_iterations` sia compreso tra 1-100 e `success_threshold` tra 0.0-10.0
- Controlla che `initial_prompts` sia un array non vuoto
#### 429 Troppe richieste
**Problema**: Limite di velocità superato o circuit breaker attivato.
**Soluzioni**:
- **Rate Limiting**: Attendi prima di riprovare (default: 60 richieste/minuto per IP)
- **Backoff esponenziale**: Il client riprova automaticamente con backoff esponenziale (3 tentativi)
- **Circuit Breaker**: Verifica lo stato del circuit breaker: ```bash
curl -X GET http://localhost:9000/health/circuit-breakers \
-H "X-API-Key: test-api-key"
max_concurrent_attacks nella configurazione dell'esperimentoProblema: Il circuit breaker è nello stato APERTO, bloccando le richieste a OpenAI.
Soluzioni:
OPENAI_API_KEY sia valida e abbia una quota sufficienteProblema: Gli esperimenti falliscono immediatamente senza eseguire iterazioni.
Causa: Problemi di pianificazione delle attività con asyncio.create_task().
Soluzione: Il sistema ora utilizza BackgroundTasks di FastAPI per un'esecuzione affidabile delle attività.
Verifica:```bash
docker compose logs cerebro-backend | grep -E "WRAPPER CALLED|run_experiment CALLED"
**Se i problemi persistono**:
- Verifica che `[DIAG-START] Task added to BackgroundTasks successfully` appaia nei log
- Verifica lo stato dell'esperimento: `GET /api/scan/status/{experiment_id}` dovrebbe mostrare `current_iteration > 0` dopo alcuni secondi
- Esamina il traceback completo nei log se appare `[DIAG-WRAPPER] Experiment ... FAILED`
- Vedi `TASK_DIAGNOSIS.md` per i passaggi dettagliati di diagnostica
**Rollback**: Se i problemi persistono, vedi `BUG_REPORT_AND_TRAYCER_PROMPT.md` per tornare all'implementazione precedente.
## Licenza
Apache License 2.0 - Vedi il file LICENSE per i dettagli.
Copyright 2024-2026 Leviticus-Triage
Controlla lo stato del backend: ```bash curl http://localhost:9000/health
Esegui test rapidi: ```bash ./QUICK_TEST_EXAMPLES.sh
Accedi alla dashboard:
docker compose up -d cerebro-frontend)
Interfaccia utente frontend che mostra la gestione degli esperimenti e il monitoraggio
| Fornitore | Soglia di fallimento | Timeout | Jitter |
|---|
| Ollama (local) | 15 | 120s | Abilitato |
| OpenAI | 10 | 60s | Abilitato |
| Azure OpenAI | 10 | 60s | Abilitato |
| Groq | 8 | 45s | Abilitato |
| Endpoint | Metodo | Descrizione | Auth Richiesta |
|---|
/api/templates | GET | Elenca tutti i template (con paginazione e filtri) | Sì |
/api/templates | POST | Crea nuovo template | Sì |
/api/templates/{id} | GET | Ottieni template per ID | Sì |
/api/templates/{id} | PUT | Aggiorna template | Sì |
/api/templates/{id} | DELETE | Elimina template | Sì |
/api/templates/{id}/use | POST | Incrementa conteggio utilizzi | Sì |
| Livello | Icona | Nome | Descrizione | Eventi Mostrati |
|---|
| 0 | Silenzioso | Solo errori | Errori, Fallimenti critici | |
| 1 | Base | + Eventi e Progressi | + Inizio/Fine Iterazione, Aggiornamenti Progressi, Vulnerabilità | |
| 2 | Dettagliato | + I/O LLM | + Richieste/Risposte LLM, Valutazioni Giudice, Mutazioni Attacco | |
| 3 | Debug | + Flusso Codice | + Selezione Strategia, Inizio/Fine Mutazione, Inizio/Fine Giudice, Punti Decisionali |