API PHP qui reçoit les métriques d'entraînement d'un modèle IA, les affiche sur Discord via un webhook, et expose une courbe d'évolution de la loss.
- Webhook Discord : envoie un embed avec les métriques (completion, loss, tokens/s, ETA) et le met à jour au fil de l'entraînement.
- Authentification : clé API vérifiée via l'en-tête
X-API-Keyou le champapi_key. - Rate limiting : limite le nombre de requêtes par clé API et par période.
- Historique : conservation des métriques dans
status.json(anciennes valeurs compressées automatiquement). - Graphique : génère une image PNG de la courbe de loss sur les 3 dernières heures.
- PHP 7.4+ (extensions
gd,curl,json,mbstring) - Un serveur web (Apache recommandé) ou l'outil CLI de PHP
- Un webhook Discord
-
Clonez le dépôt sur votre serveur :
git clone https://github.com/Lyse-AI-Community/api-webhooks.git cd api-webhooks -
Copiez le fichier de configuration :
cp data.example.json data.json
-
Éditez
data.json:{ "webhook_url": "https://discord.com/api/webhooks/...", "rate_limit_time": 60, "rate_limit_max": 5, "api_keys": [ "votre_cle_secrete" ] }Champ Description webhook_urlURL du webhook Discord rate_limit_timeFenêtre de temps en secondes rate_limit_maxNombre maximum de requêtes par fenêtre api_keysListe des clés API autorisées Note :
data.jsoncontient des secrets et est exclu du dépôt (.gitignore) et protégé par.htaccess. Ne le partagez jamais.
curl -X POST https://votre-domaine/api-webhooks/index.php \
-H "X-API-Key: votre_cle_secrete" \
-d "type=Training" \
-d "epoch=1" \
-d "completion=500/1000 (50%)" \
-d "loss=1.2345" \
-d "tps=120 tokens/s" \
-d "eta=2 h"Réponse :
{
"status": "success",
"action": "created",
"message": "Message envoyé",
"message_url": "https://discord.com/channels/..."
}Passez l'URL ou l'ID du message Discord pour le mettre à jour au lieu d'en créer un nouveau :
curl -X POST https://votre-domaine/api-webhooks/index.php \
-H "X-API-Key: votre_cle_secrete" \
-d "message_url=https://discord.com/channels/123/456/789"https://votre-domaine/api-webhooks/status.phpRéponse : une image PNG (900 × 450) avec la courbe de loss sur les 3 dernières heures.
| Paramètre | Défaut | Description |
|---|---|---|
type |
Training |
Type d'événement |
epoch |
0 |
Numéro d'epoch |
completion |
0/0 (0%) |
Progression |
loss |
1000000 |
Loss instantanée |
tps |
0 tokens/s |
Tokens par seconde |
eta |
0 h |
ETA de fin d'epoch |
message_url |
— | URL (ou ID) du message à mettre à jour |
Le mot-clé
Démarragedanstyperéinitialise l'historique.
| Code | Signification |
|---|---|
| 200 | Succès (created ou edited) |
| 401 | Clé API invalide ou manquante |
| 405 | Méthode non autorisée (POST requis) |
| 429 | Rate limit dépassé |
| 500 | Erreur interne du serveur |
| 502 | Échec d'envoi au webhook Discord |
- Les clés API ne sont vérifiées que par valeur exacte — utilisez des clés longues et aléatoires.
- Protégez le dossier via HTTPS.
data.jsonest bloqué par.htaccesscôté Apache.
.
├── .htaccess # Protection de data.json/config.php
├── LICENSE # Apache License 2.0
├── config.php # Chargement de la configuration
├── data.example.json # Modèle de configuration
├── data.json # Configuration (il faut le créer, gitignoré)
├── index.php # Endpoint d'envoi des métriques
└── status.php # Génération de la courbe de loss
Distribué sous Apache License 2.0.