WorkshopCyberAI / BlueAI.md
sallani's picture
Upload 10 files
2223769 verified
# Tutoriel : Créer une application web pour analyser des journaux système avec l'API NVIDIA
## Prérequis
Avant de commencer, assurez-vous que :
1. **Python** est installé sur votre système.
2. Vous avez installé les bibliothèques suivantes :
- `streamlit`
- `openai`
- `json` (intégré dans Python, aucune installation nécessaire)
3. Vous disposez d'une clé API NVIDIA valide.
Installez les bibliothèques nécessaires avec :
```bash
pip install streamlit openai
```
---
## Objectif
Nous allons créer une application Streamlit qui :
1. Permet de télécharger un fichier de journaux système (format texte).
2. Analyse ce fichier à l'aide de l'API NVIDIA.
3. Interprète les journaux pour identifier des événements suspects ou critiques.
---
## Code de l'application
Créez un fichier Python nommé `app.py` et collez le code suivant :
```python
import streamlit as st
import requests
import json # Assurez-vous que json est importé
# Configurer le client NVIDIA
API_KEY = "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"
BASE_URL = "https://integrate.api.nvidia.com/v1"
def analyze_logs(content):
headers = {"Authorization": f"Bearer {API_KEY}"}
prompt = f"""
Voici une liste de journaux système :
{content}
1. Identifiez les événements suspects ou inhabituels.
2. Expliquez pourquoi ces événements sont problématiques.
3. Proposez des recommandations pour éviter ces problèmes à l'avenir.
"""
payload = {
"model": "nvidia/llama-3.1-nemotron-70b-instruct",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.5,
"top_p": 1,
"max_tokens": 1024,
"stream": True,
}
response = requests.post(f"{BASE_URL}/chat/completions", headers=headers, json=payload, stream=True)
if response.status_code == 200:
return response
else:
st.error(f"Erreur API NVIDIA : {response.status_code} - {response.text}")
return None
# Application Streamlit
st.title("Analyse des journaux système avec NVIDIA LLM")
st.write("Cette application analyse les journaux système pour identifier des événements critiques ou suspects.")
# Upload du fichier
uploaded_file = st.file_uploader("Téléchargez un fichier de journaux système (format texte)", type=["txt"])
if uploaded_file is not None:
try:
# Lire le contenu du fichier
content = uploaded_file.read().decode("utf-8")
st.write("Fichier chargé avec succès :")
st.text(content[:500]) # Afficher les 500 premiers caractères
# Appel à l'API NVIDIA
response = analyze_logs(content)
if response:
st.success("Résultat de l'analyse :")
result = ""
for line in response.iter_lines():
if line:
try:
chunk = line.decode("utf-8")
data = json.loads(chunk.replace("data: ", ""))
if "choices" in data and data["choices"][0]["delta"].get("content"):
result += data["choices"][0]["delta"]["content"]
except json.JSONDecodeError:
st.error("Erreur lors du décodage JSON : chunk mal formé.")
except Exception as e:
st.error(f"Erreur dans le traitement du chunk : {e}")
# Afficher le rapport d'analyse avec un formatage clair
st.markdown("### Rapport d'analyse")
for line in result.split("\n"):
if line.strip():
st.write(f"- {line.strip()}")
except Exception as e:
st.error(f"Erreur lors du traitement du fichier : {e}")
```
---
## Instructions pour l'exécution
1. Sauvegardez le fichier sous le nom `app.py`.
2. Exécutez l'application Streamlit avec la commande suivante :
```bash
streamlit run app.py
```
3. Ouvrez l'URL générée par Streamlit (généralement `http://localhost:8501`).
4. Téléchargez un fichier contenant les journaux système pour les analyser.
---
## Exemple de fichier de journaux système
Créez un fichier nommé `journaux_systeme.txt` avec le contenu suivant pour tester l'application :
```
2025-01-10 12:00:01 User 'admin' logged in from IP 192.168.1.10
2025-01-10 12:15:23 Failed login attempt for user 'root' from IP 10.0.0.15
2025-01-10 12:20:45 User 'john' downloaded sensitive file 'confidential.pdf'
2025-01-10 12:35:50 Unusual traffic detected from IP 10.0.0.20
2025-01-10 12:50:10 User 'admin' performed a password reset for user 'guest'
```
---
## Points importants
- Remplacez la clé API dans le code par une clé valide et personnelle.
- Cette application est un point de départ. Vous pouvez l'enrichir pour fournir des visualisations ou des recommandations plus avancées.
---
## Exemple d'exécution
Voici à quoi ressemble l'application lors de son utilisation :
![Exemple d'exécution](img1.png)
---
## Conclusion
Félicitations ! Vous avez créé une application Streamlit pour analyser des journaux système à l'aide de l'API NVIDIA. Continuez à l’améliorer en explorant d'autres modèles ou en ajoutant des fonctionnalités.