Spaces:
Running
Running
Tutoriel : Créer une application web pour analyser des journaux système avec l'API NVIDIA
Prérequis
Avant de commencer, assurez-vous que :
- Python est installé sur votre système.
- Vous avez installé les bibliothèques suivantes :
streamlitopenaijson(intégré dans Python, aucune installation nécessaire)
- Vous disposez d'une clé API NVIDIA valide.
Installez les bibliothèques nécessaires avec :
pip install streamlit openai
Objectif
Nous allons créer une application Streamlit qui :
- Permet de télécharger un fichier de journaux système (format texte).
- Analyse ce fichier à l'aide de l'API NVIDIA.
- 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 :
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
- Sauvegardez le fichier sous le nom
app.py. - Exécutez l'application Streamlit avec la commande suivante :
streamlit run app.py - Ouvrez l'URL générée par Streamlit (généralement
http://localhost:8501). - 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.
