Aller au contenu

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.