Skip to content

Commit 9fc3a27

Browse files
author
Vincent Scharpen (Darkiron)
committed
docs: 📝 cover repo with wiki pages; expand LLM service docs and add Tokenization
1 parent 842617c commit 9fc3a27

File tree

9 files changed

+228
-43
lines changed

9 files changed

+228
-43
lines changed

‎docs/wiki/Backend-Symfony.md‎

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,30 @@
1-
# Backend (Symfony)
1+
# Backend — Symfony 🔙
22

3-
See detailed notes in repo: ../../docs/services/symfony-back.md
3+
Notes spécifiques au backend Symfony. Pour des détails d'implémentation, voir le code sous apps/symfony-back.
44

5-
Key points
6-
- API and domain logic are implemented in apps/symfony-back.
7-
- Important classes: Prompt, LLMGateway, GenerateStreamUseCase, LLMController.
8-
- Run locally with Symfony CLI or PHP built-in server.
5+
## LLMGateway — Client Python LLM
6+
- Implémentation: `apps/symfony-back/src/Infrastructure/LLM/PythonLLMClient.php`
7+
- RĂŽle: Ă©mettre une requĂȘte HTTP POST vers l'endpoint du service LLM et consommer une rĂ©ponse en streaming.
8+
- URL par défaut: `llm_url` (paramÚtre Symfony) ou variable d'env `LLM_URL`; fallback: `http://llm:8008/generate/stream`.
9+
10+
Extrait important:
11+
- Streaming via `HttpClientInterface` avec `buffer: false` puis itération avec `$this->httpClient->stream($response)`.
12+
- Les chunks sont relayés tels quels au consommateur (contrÎleur/cas d'usage) pour un flux temps réel.
13+
14+
## Configuration
15+
- Voir `compose.yaml` -> service `symfony-back`:
16+
- `LLM_URL` et `LLM_METRICS_URL` injectés via env.
17+
- Paramétrage cÎté Symfony (parameters, services) pour `llm_url`.
18+
19+
## Cas d'usage & contrĂŽleurs
20+
- Domaine: `src/Domain/Model/Prompt.php`, `src/Domain/Port/LLMGateway.php`
21+
- Application: `src/Application/UseCase/GenerateStreamUseCase.php`
22+
- Interface: `src/Controller/LLMController.php`
23+
24+
## Dépannage
25+
- 502/timeout en streaming: vérifier l'URL LLM, que le conteneur `llm` tourne, et aucun proxy n'interrompt la connexion.
26+
- CORS/front: s'assurer que le contrĂŽleur renvoie les en-tĂȘtes nĂ©cessaires selon le front.
27+
28+
Voir aussi:
29+
- [LLM-Service-Python](LLM-Service-Python) — endpoint attendu et mĂ©triques 🧠
30+
- [Architecture](Architecture) — flux entre services đŸ—ș

‎docs/wiki/Environment.md‎

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,25 @@
1-
# Environment đŸŒ±
1+
# Environment 🔑
22

3-
See repository details : ../env.md 🔗
3+
Variables d'environnement et configuration. Pour le détail complet, voir ../env.md.
44

5-
## Highlights ✹
6-
- đŸš« Never commit secrets (`.env.local`, `.env.dev` ignored where configured).
7-
- Symfony : `APP_SECRET`, `DATABASE_URL`
8-
- Laravel : `APP_KEY`, `APP_URL`
9-
- Python LLM : model/config paths, ports
5+
## Backend (Symfony)
6+
- LLM_URL: URL de génération/stream attendue (défaut: http://llm:8008/generate/stream)
7+
- LLM_METRICS_URL: URL des métriques du service LLM (ex.: http://llm:9108/metrics)
8+
9+
Ces valeurs peuvent ĂȘtre dĂ©finies via:
10+
- ParamĂštres Symfony (parameters.yaml) et/ou
11+
- Variables d'environnement (voir compose.yaml -> service symfony-back)
12+
13+
## Service LLM (Python)
14+
- CKPT_PATH: chemin du checkpoint (ex.: /ckpts/rnn.pt)
15+
- METRICS_PORT: port d'exposition des métriques (défaut: 9108)
16+
- PYTHONPATH: inclut /app/apps/python-llm pour la CLI et les modules
17+
18+
## Docker Compose (extraits utiles)
19+
Voir compose.yaml:
20+
- Volumes: ./ckpts:/ckpts, ./data:/data, ./apps/python-llm:/app/apps/python-llm
21+
- Ports: 80->java gateway, 8081->laravel-front, 8082->symfony-back, 9108->llm metrics
22+
23+
Voir aussi:
24+
- [Setup](Setup) — dĂ©marrage rapide 🐳
25+
- [LLM-Service-Python](LLM-Service-Python) — dĂ©tails service et API 🧠
Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
1-
# Frontend (Laravel)
1+
# Frontend — Laravel 🌐
22

3-
See detailed notes in repo: ../../docs/services/laravel-front.md
3+
Notes spécifiques au frontend Laravel (apps/laravel-front).
44

5-
Key points
6-
- UI built with Laravel in apps/laravel-front.
7-
- Ensure APP_KEY and .env are configured.
8-
- Run locally with php artisan serve.
5+
## Démarrage en dev
6+
- Servi par le conteneur `laravel-front` (voir compose.yaml):
7+
- Commande: artisan serve sur 0.0.0.0:8080 (via script de démarrage).
8+
- Port exposé par compose: 8081 -> 8080
9+
- Code monté en volume: `./apps/laravel-front:/var/www/html`
10+
11+
## Communication avec le backend
12+
- Cible par dĂ©faut du backend selon compose: http://symfony-back:8080 (interne rĂ©seau Docker) — l'exposition hĂŽte est http://localhost:8082
13+
- Configurer l'URL API cÎté front selon vos conventions (env/config).
14+
15+
## Débogage rapide
16+
- Erreurs 404/500: vérifier les routes Laravel et la correspondance avec les endpoints du backend.
17+
- CORS: ajuster les en-tĂȘtes cĂŽtĂ© backend si nĂ©cessaire.
18+
19+
Voir aussi:
20+
- [Backend-Symfony](Backend-Symfony) — endpoints et streaming 🔙
21+
- [Architecture](Architecture) — flux entre UI/API/LLM đŸ—ș

‎docs/wiki/Home.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Bienvenue ! Cette documentation vous guide à travers l’architecture, l’ins
1010
- [Backend-Symfony](Backend-Symfony) — Notes backend Symfony
1111
- [Frontend-Laravel](Frontend-Laravel) — Notes frontend Laravel
1212
- [LLM-Service-Python](LLM-Service-Python) — Notes sur le service Python LLM
13+
- [Tokenization](Tokenization) — Modes byte/legacy/BPE et bonnes pratiques đŸ”€
1314
- [LLM RNN CLI](LLM-RNN-CLI) — GĂ©nĂ©rer du texte via docker compose exec et llm_rnn.generate
1415
- [Ops-Deployment](Ops-Deployment) — ConsidĂ©rations de dĂ©ploiement
1516
- [Troubleshooting](Troubleshooting) — Problùmes courants et correctifs
Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,51 @@
1-
# LLM Service (Python)
1+
# LLM Service (Python) 🧠
22

3-
See detailed notes in repo: ../../docs/services/python-llm.md
3+
Notes sur le service LLM Python. Pour les détails approfondis, consulter aussi: ../../docs/services/python-llm.md
44

5-
Key points
6-
- Provides LLM capabilities consumed by the backend.
7-
- Prefer running via Docker Compose for consistency.
5+
## RĂŽle
6+
- Fournit des capacités de génération de texte (consommées par le backend Symfony).
7+
- Expose des métriques Prometheus pour l'observabilité.
8+
- S'exécute en local via Docker Compose pour une cohérence d'environnement.
9+
10+
## API HTTP attendue par le backend
11+
- Endpoint: `POST /generate/stream`
12+
- URL par défaut cÎté backend: `http://llm:8008/generate/stream`
13+
- Configurable via `LLM_URL` (compose/env) ou paramĂštre Symfony `llm_url`.
14+
- Client cÎté Symfony: `apps/symfony-back/src/Infrastructure/LLM/PythonLLMClient.php`
15+
- Utilise le streaming (HttpClientInterface avec `buffer: false`).
16+
17+
Remarque: l'implémentation HTTP de l'endpoint n'est pas incluse dans les extraits visibles ici; assurez-vous que le service LLM répond bien sur ce chemin si utilisé en production.
18+
19+
## CLI — GĂ©nĂ©ration rapide
20+
- Voir [LLM RNN CLI](LLM-RNN-CLI) pour générer du texte directement dans le conteneur `llm`.
21+
- Entrée: `python -m llm_rnn.generate` avec options `--ckpt`, `--seed`, `--chars`, `--temp`, `--top-k`, `--top-p`.
22+
23+
## Tokenization
24+
- Modes pris en charge: byte-level (par défaut), legacy char-level, BPE.
25+
- Détails: [Tokenization](Tokenization) (modes, heuristiques, encode/decode).
26+
27+
## Métriques Prometheus
28+
- Exposées par `services/llm/metrics_server.py` sur `/metrics`.
29+
- Port par défaut: `METRICS_PORT=9108` (voir compose.yaml -> service `llm`).
30+
- Exemple local: http://localhost:9108/metrics
31+
32+
## Supervisor (processus)
33+
- Fichier: `services/llm/supervisor.py`
34+
- Lance le serveur de métriques dans un thread.
35+
- Maintient le conteneur vivant via une boucle idle.
36+
- Commande compose: `python services/llm/supervisor.py`
37+
38+
## Répertoire modÚle & checkpoints
39+
- Volume: `./ckpts` (hÎte) monté en `/ckpts` (conteneur).
40+
- Chemin par défaut du checkpoint: `/ckpts/rnn.pt` (configurable via `CKPT_PATH`).
41+
42+
## Fichiers clés (apps/python-llm)
43+
- `llm_rnn/generate.py` — CLI de gĂ©nĂ©ration (charge le ckpt, choisit le tokenizer, Ă©chantillonne via le modĂšle).
44+
- `llm_rnn/model.py` — dĂ©finition du modĂšle `CharRNN` et logique de sampling.
45+
- `llm_rnn/tokenizer.py` — tokenizer byte/legacy.
46+
- `llm_rnn/tokenizer_bpe.py` — tokenizer BPE (si ckpt entraĂźnĂ© avec BPE).
47+
48+
Voir aussi:
49+
- [LLM RNN CLI](LLM-RNN-CLI)
50+
- [Backend-Symfony](Backend-Symfony)
51+
- [Architecture](Architecture)

‎docs/wiki/Ops-Deployment.md‎

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,27 @@
1-
# Ops / Deployment
1+
# Ops & Deployment 🚀
22

3-
See repository details: ../../docs/ops/deployment.md
3+
Notes d'exploitation et de déploiement. Pour le guide complet, voir ../ops/deployment.md.
44

5-
Highlights
6-
- Containerized deployment recommended.
7-
- Use secret stores for sensitive configuration.
8-
- CI/CD to build, test, and deploy.
5+
## Services (compose.yaml)
6+
- java-gateway (port 80 -> 8080)
7+
- laravel-front (port 8081 -> 8080)
8+
- symfony-back (port 8082 -> 8080)
9+
- llm (metrics 9108 -> 9108)
10+
11+
Volumes clés:
12+
- ./apps/laravel-front -> /var/www/html
13+
- ./apps/symfony-back -> /app
14+
- ./apps/python-llm -> /app/apps/python-llm
15+
- ./ckpts -> /ckpts
16+
- ./data -> /data
17+
18+
Env importants:
19+
- LLM_URL, LLM_METRICS_URL cÎté backend
20+
- CKPT_PATH, METRICS_PORT, PYTHONPATH cÎté LLM
21+
22+
Observabilité:
23+
- Prometheus peut scrapper le LLM sur http://llm:9108/metrics (ou via l’hîte: http://localhost:9108/metrics)
24+
25+
Voir aussi:
26+
- [Architecture](Architecture) đŸ—ș
27+
- [LLM-Service-Python](LLM-Service-Python) 🧠

‎docs/wiki/Setup.md‎

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
1-
# Setup
1+
# Setup âš™ïžđŸł
22

3-
For full details see repository docs: ../setup.md
3+
Cette page résume l'installation locale et renvoie vers la source de vérité détaillée.
44

5-
Quickstart
6-
1. Ensure Docker Desktop is installed.
7-
2. Create env files as needed (see [[Environment]]).
8-
3. Run: docker compose up -d
9-
4. Visit the service URLs noted in README.md.
5+
- Guide complet: ../setup.md
6+
7+
## Démarrage rapide
8+
- Prérequis: Docker Desktop 4.x+
9+
- Depuis la racine du dépÎt:
10+
- Copier/configurer les fichiers d'environnement selon ../env.md
11+
- Lancer: `docker compose up -d`
12+
13+
## Services exposés (par défaut)
14+
- Frontend (Laravel): http://localhost:8081 (la page d'accueil peut aussi ĂȘtre servie via le gateway: http://localhost:80)
15+
- Backend (Symfony): http://localhost:8082
16+
- LLM (metrics): http://localhost:9108/metrics
17+
18+
Voir aussi:
19+
- [Architecture](Architecture) — panorama et flux đŸ—ș
20+
- [Environment](Environment) — variables d'environnement 🔑
21+
- [LLM RNN CLI](LLM-RNN-CLI) — gĂ©nĂ©ration locale via Docker 🧠

‎docs/wiki/Tokenization.md‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Tokenization đŸ”€
2+
3+
Aperçu des stratégies de tokenisation utilisées par le service LLM Python. Source code: apps/python-llm/llm_rnn.
4+
5+
## Modes pris en charge
6+
- Byte-level (par dĂ©faut) — 0..255
7+
- PrĂ©serve les accents/UTF‑8 via encodage/dĂ©codage bytes.
8+
- Implémentation: `llm_rnn/tokenizer.py` (`CharTokenizer` avec `mode="byte"`).
9+
- Legacy char-level — liste de caractùres
10+
- Pour compat CKPT anciens; mappe chaque char Ă  un indice.
11+
- Hors vocabulaire: `?` si présent, sinon fallback 0.
12+
- BPE — (si le checkpoint est entraĂźnĂ© avec BPE)
13+
- Implémentation: `llm_rnn/tokenizer_bpe.py` (requis par `tokenizer_kind="bpe"`).
14+
15+
## Détection du mode
16+
- Dans `llm_rnn/generate.py`: le checkpoint charge `config["tokenizer_kind"]` ("bpe" | "byte" | "legacy").
17+
- Sinon, heuristique via `chars`:
18+
- ints -> byte-level
19+
- str -> legacy char-level
20+
21+
## API encode/decode
22+
- encode(str) -> List[int]
23+
- byte-level: UTF‑8 -> bytes -> liste 0..255 (errors='replace')
24+
- legacy: conversion char->id avec fallback `?`/0
25+
- decode(List[int]) -> str
26+
- byte-level: bytes(...).decode('utf-8', errors='replace')
27+
- legacy: join via itos avec fallback `?`
28+
29+
## Bonnes pratiques
30+
- Vérifier la compatibilité entre le checkpoint et la tokenizer (kind, vocab).
31+
- En cas d'artefacts de décodage, baisser la température (`--temp`) et confirmer le mode.
32+
33+
Voir aussi:
34+
- [LLM RNN CLI](LLM-RNN-CLI)
35+
- [LLM-Service-Python](LLM-Service-Python)

‎docs/wiki/Troubleshooting.md‎

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,32 @@
11
# Troubleshooting 🛟
22

3-
See repository details : ../../docs/troubleshooting.md 🔗
3+
ProblĂšmes courants et correctifs. Voir aussi ../troubleshooting.md pour plus de cas.
44

5-
## Common items ✅
6-
- 🐳 Docker ports conflict — adjust compose.yaml or stop conflicting services.
7-
- ⚠ Symfony 500 — set APP_SECRET, clear cache, check var/log.
8-
- 🔑 Laravel APP_KEY — run `php artisan key:generate`.
9-
- 🔌 LLM not reachable — verify port mapping and URLs.
5+
## LLM — erreurs frĂ©quentes
6+
- ModuleNotFoundError: No module named 'llm_rnn'
7+
- ExĂ©cuter dans le conteneur `llm` (docker compose exec llm 
) oĂč PYTHONPATH est dĂ©fini.
8+
- En local, définir `PYTHONPATH=apps/python-llm`.
9+
- FileNotFoundError: /ckpts/rnn.pt
10+
- Vérifier l'existence de `./ckpts/rnn.pt` (hÎte) et le volume `./ckpts:/ckpts`.
11+
- Ajuster `--ckpt` si nécessaire.
12+
- Flux interrompu cÎté backend
13+
- Vérifier `LLM_URL` et l'accessibilité de `http://llm:8008/generate/stream` depuis le conteneur `symfony-back`.
14+
- Désactiver proxies intermédiaires qui bufferisent le stream.
15+
16+
## Backend (Symfony)
17+
- Timeout sur requĂȘtes stream
18+
- S'assurer que `timeout`=0 cÎté HttpClient et que l'upstream répond bien par fragments.
19+
- CORS
20+
- Configurer les en-tĂȘtes selon le domaine du frontend.
21+
22+
## Frontend (Laravel)
23+
- 404 sur endpoints API
24+
- Vérifier le prefix/base URL et l'exposition du backend (8082).
25+
26+
## Métriques et observabilité
27+
- LLM metrics: http://localhost:9108/metrics (ou http://llm:9108/metrics entre conteneurs)
28+
- Si vide: attendre 1–2s; sinon vĂ©rifier `METRICS_PORT` et le supervisor.
29+
30+
Voir aussi:
31+
- [LLM RNN CLI](LLM-RNN-CLI)
32+
- [Backend-Symfony](Backend-Symfony)

0 commit comments

Comments
 (0)