Spaces:
Running
Running
File size: 5,237 Bytes
2223769 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | # 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 :

---
## 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.
|