
ShunyaNet Sentinel est un programme léger qui surveille les flux RSS, les envoie à un LLM pour analyse, et délivre des résumés ou des alertes directement à la GUI et à Slack.
ShunyaNet Sentinel est un programme léger sur le thème cyberpunk qui ingère des flux RSS (par exemple, actualités de dernière minute, réseaux sociaux), les envoie à un LLM pour analyse et fournit des alertes et rapports récapitulatifs directement dans l'interface graphique et Slack à intervalles réguliers.
Le projet est conçu pour utiliser un LLM hébergé localement sur la même machine ou le même réseau (par exemple, avec Tailscale) via LMStudio ou Ollama (mise à jour du 23/02). Il fonctionnera également avec une clé API OpenAI (mise à jour du 23/02).
Pour les alertes, le programme utilise les webhooks Slack, permettant d'envoyer des notifications push vers un appareil mobile.
Le ShunyaNet Sentinel est compatible avec les dernières versions de Linux, macOS et Windows*
La qualité des rapports et de l'analyse est influencée par le prompt, la taille du contexte, les flux RSS et le LLM choisi. Il est recommandé de désactiver les fonctions de réflexion (thinking). Les modèles qui semblent bien fonctionner et suivre généralement les instructions incluent :
*Fortement recommandé sur macOS ou Linux. Voir la section Problèmes connus ci-dessous pour des informations importantes !
/v1/chat/completions compatible OpenAI, conçu pour LMStudiorequirements.txt :
LLM hébergé via :
git clone https://github.com/EverythingsComputer/ShunyaNet-Sentinel.git
cd ShunyaNet-Sentinel
macOS / Linux :
python3 -m venv venv
source venv/bin/activate
Windows (PowerShell) :
python -m venv venv
venv\Scripts\Activate.ps1
pip install -r requirements.txt
macOS / Linux :
python3 ShunyaNet_Sentinel.py
Windows :
python ShunyaNet_Sentinel.py
default_prompt.txtDefault_testSaisissez les sujets d'intérêt, ou chargez l'une des listes par défaut fournies. Jusqu'à 10 sujets peuvent être ajoutés à chaque liste.
Cliquez sur « Load Prompt File » pour charger un fichier de prompt. Un prompt par défaut est fourni (default_prompt.txt).
Cliquez sur « Load Data Source File » pour charger une liste RSS. Deux listes par défaut sont fournies : une liste courte « Default_test » et une liste plus longue « Default_long », qui se concentre sur les actualités mondiales et de dernière minute.
Dans « Additional Settings », définissez les champs suivants. Ils seront sauvegardés et persistants si vous fermez et redémarrez le programme. Les paramètres par défaut fonctionneront avec la plupart des configurations – mais vous devez quand même saisir le champ n°1 vous-même :
LLM_PROVIDER = lmstudioLLM_BASE_URL = <URL de votre serveur LMStudio, ex. : http://localhost:1234/v1>LLM_MODEL = <OPTIONNEL. Je recommande de laisser ce champ vide et de charger votre modèle directement dans LMStudio. Si vous devez le faire, le format est : lmstudio-community/mistral-7b-instruct>LLM_API_KEY = <Laissez ce champ vide, sauf si vous utilisez une clé d'authentification>LLM_PROVIDER = ollamaLLM_BASE_URL = <URL de votre serveur Ollama, ex. : http://localhost:11434/v1>LLM_MODEL = llama3LLM_API_KEY = <laissez vide>LLM_PROVIDER = openaiLLM_BASE_URL = (peu importe : ce champ est ignoré)LLM_MODEL = gpt-4o-miniLLM_API_KEY = sk-xxxxNOTE : Je recommande de rester simple pour le premier lancement. Utilisez les paramètres par défaut et assurez-vous que tout fonctionne. Ensuite, ajustez le contexte et les flux RSS. Puis, modifiez le prompt. Je serais curieux de voir les prompts améliorés des utilisateurs...
Problèmes / Avertissements :
Suggestions :
Alpha
Ce projet est sous licence Apache 2.0.
Attribution : ShunyaNet / EverythingsComputer
Aucune garantie : Le logiciel est fourni « en l'état », sans garantie d'aucune sorte, expresse ou implicite.
Ce projet utilise les bibliothèques tierces suivantes. Veuillez consulter leurs licences lors de l'utilisation, de la distribution et/ou de la modification de ce projet :
Mon chat.
| Paramètre | Description | Valeur par défaut | Exemple / Notes |
|---|
| LLM_PROVIDER | VOIR L'ÉTAPE SUIVANTE | — | — |
| LLM_BASE_URL | VOIR L'ÉTAPE SUIVANTE | — | — |
| LLM_MODEL | VOIR L'ÉTAPE SUIVANTE | — | — |
| LLM_API_KEY | VOIR L'ÉTAPE SUIVANTE | — | — |
| SLACK_WEBHOOK_URL | URL du webhook Slack optionnelle pour envoyer des alertes à Slack. | Optionnel | https://hooks.slack.com/services/... |
| MAX_INPUT_TOKENS | Nombre maximal de tokens envoyés au LLM par récupération RSS. Règle générale : 1 token ≈ 4 caractères. Si la taille du contexte du modèle est dépassée, activez le mode par morceaux (chunked). | 4000 | Augmentez prudemment en fonction de la fenêtre de contexte de votre LLM. |
| MAX_OUTPUT_TOKENS | Nombre maximal de tokens que le LLM renverra dans sa réponse. (note : il s'agit du maximum/plafond, pas de la cible !) | 4000 | Il est recommandé de ne pas modifier. 4000 est probablement trop de marge, pour être honnête. |
| MAX_INPUT_TOKENS_BULK | Longueur maximale en tokens des flux RSS envoyés au LLM pour les rapports de traitement groupé. Lorsque le traitement groupé est activé, les flux RSS sont sauvegardés et envoyés ensemble avec un prompt spécial d'analyse des tendances (prompt codé en dur pour l'instant). Les morceaux ne sont jamais utilisés pour cela, donc ne dépassez pas votre limite de contexte. | 4000 | Doit probablement être augmenté pour des rapports groupés significatifs. Peut solliciter la VRAM et les limites de contexte. Il est recommandé de désactiver le mode groupé initialement. |
| MAX_OUTPUT_TOKENS_BULK | Longueur maximale en tokens du rapport de traitement groupé lui-même. | 4000 | Peut devoir être augmenté pour des rapports groupés significatifs. Peut solliciter la VRAM et les limites de contexte. Il est recommandé de désactiver le mode groupé initialement. |
| FETCH_INTERVAL | Temps en secondes entre les récupérations RSS et l'analyse LLM. | 600 (secondes, soit 10 min) | Ne pas définir en dessous du temps de traitement total, sinon un backlog peut se produire. |
| ITEMS_PER_FEED | Nombre maximal d'entrées RSS récupérées par flux par cycle. Les éléments déjà récupérés sont ignorés. | 50 | Des valeurs plus élevées créent une première récupération plus grande. La plupart des flux RSS ne produisent pas beaucoup plus de 20 nouveaux éléments toutes les 10 minutes, certains beaucoup moins. |
| USE_CHUNKED_MODE | Active le fractionnement automatique du contenu RSS s'il dépasse l'allocation de tokens. 1 = Activé, 0 = Désactivé. | 1 | Empêche le dépassement du contexte mais peut dupliquer les rapports d'événements entre les morceaux. |
| CHUNK_SIZE | Taille de chaque morceau en caractères (pas en tokens). | 8000 | Conversion approximative : 4 caractères ≈ 1 token. JE RÉPÈTE : CECI EST EN CARACTÈRES. Cela devrait-il être en tokens ? Probablement ! Mais ce ne l'est pas. |
| WRITE_TO_FILE | Optionnel. Écrit tout le contenu RSS récupéré dans un fichier continu pour des benchmarks externes, des tests de prompt ou des comparaisons de modèles. N'affecte pas les fonctionnalités principales de Sentinel. 1 = Activé, 0 = Désactivé. | 0 | Utile pour les tests et l'évaluation LLM hors ligne. |
| ANALYSIS_WINDOW | Intervalle de temps utilisé pour chaque rapport de traitement groupé. | 3600 (secondes, soit 1h) | Utilisé uniquement lorsque le traitement groupé est activé. |
| BULK_ANALYSIS | Active les rapports de tendances RSS groupés périodiques. 1 = Activé, 0 = Désactivé. Très expérimental par rapport aux rapports de routine. Le prompt spécial est codé en dur pour l'instant. | 0 | Envoie les flux RSS accumulés au LLM pour un seul rapport d'analyse des tendances. Peut augmenter considérablement la charge de traitement. |