Intégration IA (DeepSeek)¶
Rôle¶
Le worker ne se contente pas de règles statiques : il soumet chaque fenêtre de télémétrie au modèle DeepSeek pour détecter des comportements anormaux (dérives thermiques, patterns suspects) que des seuils fixes ne verraient pas.
Flux d'analyse¶
télémétrie MQTT ──► fenêtre glissante (N échantillons)
│
▼
DEEPSEEK_API_KEY définie ?
│ oui │ non
▼ ▼
appel DeepSeek heuristiques locales
│ │
└──────┬──────┘
▼
verdict JSON {anomaly, severity, reason, remediation}
│
┌───────────────┴───────────────┐
▼ ▼
publish alert si critical
alerts/{id}/security publish command
racks/{id}/commands
Configuration¶
La clé est injectée via le fichier .env (jamais dans le code) et passée au
conteneur via docker-compose.yml :
worker:
environment:
DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY:-}
DEEPSEEK_BASE_URL: ${DEEPSEEK_BASE_URL:-https://api.deepseek.com}
DEEPSEEK_MODEL: ${DEEPSEEK_MODEL:-deepseek-chat}
DEEPSEEK_API_KEY=sk-xxxx
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat
Fallback
Si DEEPSEEK_API_KEY est vide, le worker bascule automatiquement sur des
règles heuristiques locales (seuils de température/CPU, porte ouverte,
hausse thermique rapide). L'infrastructure reste donc fonctionnelle sans
clé.
Appel API¶
L'API DeepSeek est compatible OpenAI :
POST {base}/chat/completions
Authorization: Bearer <key>
Content-Type: application/json
{ "model": "deepseek-chat", "messages": [{"role":"user","content": "<prompt>"}],
"temperature": 0.1, "max_tokens": 300 }
Le worker impose une réponse JSON stricte et nettoie d'éventuelles clôtures Markdown.
Remédiation automatisée¶
Sur verdict critique, le worker publie une commande de remédiation que le simulateur applique :
| Action | Déclencheur |
|---|---|
increase_fan |
Température critique |
throttle_load |
Charge CPU soutenue |
power_cycle |
Intrusion physique (porte ouverte + chaleur) |
La boucle complète détection → alerte → remédiation → retour à la normale est ainsi démontrée de bout en bout.