From c879fc18308f692158a82279b92fa137173ddc09 Mon Sep 17 00:00:00 2001 From: Ladebeze66 Date: Thu, 23 Apr 2026 19:41:58 +0200 Subject: [PATCH] projet_ia_vault_ok --- strapi_extraction/build-vault.py | 12 +- vault-grasbot/00-MOC/MOC-Algorithmique.md | 8 +- vault-grasbot/00-MOC/MOC-Devops.md | 10 +- vault-grasbot/00-MOC/MOC-Ecole-42.md | 6 +- vault-grasbot/00-MOC/MOC-Ia.md | 12 +- vault-grasbot/00-MOC/MOC-Projets.md | 10 +- vault-grasbot/00-MOC/MOC-Web.md | 8 +- .../10-Projets/fernandgrascalvet-com.md | 68 ++++++--- .../10-Projets/ft-linear-regression.md | 131 +++++++++++++++++ vault-grasbot/10-Projets/grasbot.md | 139 ++++++++++++++---- vault-grasbot/10-Projets/newsletter-ia.md | 86 +++++++++++ .../10-Projets/piscine-python-data-science.md | 118 +++++++++++++++ .../10-Projets/transcription-video.md | 100 +++++++++++++ ...web-and-hebergement-sur-serveur-windows.md | 4 +- vault-grasbot/20-Competences/ia.md | 61 +++++--- vault-grasbot/README.md | 2 +- vault-grasbot/TAXONOMIE.md | 15 ++ 17 files changed, 705 insertions(+), 85 deletions(-) create mode 100644 vault-grasbot/10-Projets/ft-linear-regression.md create mode 100644 vault-grasbot/10-Projets/newsletter-ia.md create mode 100644 vault-grasbot/10-Projets/piscine-python-data-science.md create mode 100644 vault-grasbot/10-Projets/transcription-video.md diff --git a/strapi_extraction/build-vault.py b/strapi_extraction/build-vault.py index 3aceb11..d96916a 100644 --- a/strapi_extraction/build-vault.py +++ b/strapi_extraction/build-vault.py @@ -59,7 +59,12 @@ DOMAIN_KEYWORDS: dict[str, list[str]] = { "web": ["next.js", "nextjs", "react", "django", "api rest", "websocket", "strapi"], "devops": ["docker", "nginx", "mariadb", "wordpress", "inception", "conteneur"], "securite": ["born2beroot", "ssh", "fail2ban", "ufw", "lvm", "cybersécurité"], - "ia": ["llm", "ollama", "ia locale", "intelligence artificielle", "chatbot", "embedding"], + "ia": [ + "llm", "ollama", "ia locale", "intelligence artificielle", "chatbot", "embedding", + # Spécialisation Data / IA (ft_linear_regression, piscine Python data, etc.) + "machine learning", "régression", "régression linéaire", "descente de gradient", + "numpy", "pandas", "scikit-learn", "data science", "dataframe", + ], "graphique": ["minilibx", "raycasting", "cub3d", "fract-ol", "wolfenstein"], "3d": ["impression 3d", "3d printing", "prusa", "slicer", "filament"], "domotique": ["domotique", "home assistant", "zigbee", "iot"], @@ -74,6 +79,11 @@ TAG_KEYWORDS: dict[str, list[str]] = { "concurrence": ["thread", "mutex", "philosopher"], "docker": ["docker", "inception"], "makefile": ["makefile"], + "data-ia": [ + "ft_linear_regression", "ft-linear-regression", + "régression linéaire", "descente de gradient", + "piscine python", "numpy", "pandas", "scikit-learn", + ], "projet-perso": [], # drapeau manuel (futur) } diff --git a/vault-grasbot/00-MOC/MOC-Algorithmique.md b/vault-grasbot/00-MOC/MOC-Algorithmique.md index 7a9d808..2521563 100644 --- a/vault-grasbot/00-MOC/MOC-Algorithmique.md +++ b/vault-grasbot/00-MOC/MOC-Algorithmique.md @@ -2,7 +2,7 @@ title: MOC — Algorithmique slug: MOC-Algorithmique type: moc -source: vault/generated +source: manual domains: [algorithmique] tags: [moc] aliases: @@ -19,12 +19,12 @@ answers: - Que fait-il en algorithmique ? priority: 7 linked: -updated: 2026-04-22 +updated: 2026-04-23 visibility: public --- -Notes du domaine *algorithmique* (13 au total). +Notes du domaine *algorithmique* (15 au total). ## Notes liées @@ -32,10 +32,12 @@ Notes du domaine *algorithmique* (13 au total). - [[cpp-partie1|cpp-partie1]] — _algorithmique, c, cpp, ecole-42, reseau_ - [[cpp-partie2|cpp-partie2]] — _algorithmique, c, cpp, devops, domotique, ecole-42, reseau_ - [[fract-ol|fract-ol]] — _algorithmique, domotique, ecole-42, graphique, reseau, systeme_ +- [[ft-linear-regression|ft_linear_regression]] — _algorithmique, ecole-42, ia_ - [[ft-transcendence|ft_transcendence]] — _algorithmique, devops, ecole-42, reseau, web_ - [[inception|inception]] — _algorithmique, devops, ecole-42, reseau, systeme_ - [[libft|libft]] — _algorithmique, c, domotique, ecole-42, reseau_ - [[minishell|minishell]] — _algorithmique, domotique, ecole-42, reseau, systeme_ +- [[piscine-python-data-science|Piscine Python — Data Science]] — _algorithmique, ecole-42, ia_ - [[ia|Mon Exploration et Maîtrise de l’Intelligence Artificielle]] — _algorithmique, ecole-42, ia_ - [[competence|Mon expérience dans la domotique]] — _algorithmique, domotique, ia, reseau_ - [[impression-3d|Mon parcours dans l’impression 3D]] — _3d, algorithmique, reseau_ diff --git a/vault-grasbot/00-MOC/MOC-Devops.md b/vault-grasbot/00-MOC/MOC-Devops.md index 6e9cce1..f72737a 100644 --- a/vault-grasbot/00-MOC/MOC-Devops.md +++ b/vault-grasbot/00-MOC/MOC-Devops.md @@ -2,7 +2,7 @@ title: MOC — Devops slug: MOC-Devops type: moc -source: vault/generated +source: manual domains: [devops] tags: [moc] aliases: @@ -19,15 +19,19 @@ answers: - Que fait-il en devops ? priority: 7 linked: -updated: 2026-04-22 +updated: 2026-04-23 visibility: public --- -Notes du domaine *devops* (3 au total). +Notes du domaine *devops* (7 au total). ## Notes liées - [[cpp-partie2|cpp-partie2]] — _algorithmique, c, cpp, devops, domotique, ecole-42, reseau_ +- [[fernandgrascalvet-com|fernandgrascalvet.com (portfolio)]] — _devops, ia, web_ - [[ft-transcendence|ft_transcendence]] — _algorithmique, devops, ecole-42, reseau, web_ +- [[grasbot|GrasBot — chatbot IA du portfolio]] — _devops, ia, web_ - [[inception|inception]] — _algorithmique, devops, ecole-42, reseau, systeme_ +- [[newsletter-ia|Newsletter IA — Ollama + Listmonk + Directus]] — _devops, ia, web_ +- [[transcription-video|Transcription vidéo automatique]] — _devops, ia_ diff --git a/vault-grasbot/00-MOC/MOC-Ecole-42.md b/vault-grasbot/00-MOC/MOC-Ecole-42.md index ca71351..def8ebf 100644 --- a/vault-grasbot/00-MOC/MOC-Ecole-42.md +++ b/vault-grasbot/00-MOC/MOC-Ecole-42.md @@ -2,7 +2,7 @@ title: MOC — École 42 slug: MOC-Ecole-42 type: moc -source: vault/generated +source: manual domains: [ecole-42] tags: [moc] aliases: @@ -21,7 +21,7 @@ answers: - Que fait-il en ecole-42 ? priority: 7 linked: -updated: 2026-04-22 +updated: 2026-04-23 visibility: public --- @@ -36,6 +36,7 @@ Tout ce qui est rattaché à la formation 42 Perpignan. - [[cub3d|cub3d]] — _domotique, ecole-42, graphique, reseau_ - [[fract-ol|fract-ol]] — _algorithmique, domotique, ecole-42, graphique, reseau, systeme_ - [[ft-irc|ft-irc]] — _cpp, ecole-42, reseau, systeme_ +- [[ft-linear-regression|ft_linear_regression]] — _algorithmique, ecole-42, ia_ - [[ft-printf|Ft-printf]] — _c, ecole-42, reseau_ - [[ft-transcendence|ft_transcendence]] — _algorithmique, devops, ecole-42, reseau, web_ - [[get-next-line|Get_next_line]] — _c, ecole-42, reseau_ @@ -46,5 +47,6 @@ Tout ce qui est rattaché à la formation 42 Perpignan. - [[ia|Mon Exploration et Maîtrise de l’Intelligence Artificielle]] — _algorithmique, ecole-42, ia_ - [[netpractice|netpractice]] — _algorithmique, ecole-42, reseau_ - [[philosopher|philosopher]] — _c, ecole-42, reseau, systeme_ +- [[piscine-python-data-science|Piscine Python — Data Science]] — _algorithmique, ecole-42, ia_ - [[presentation-ecole-42|Présentation école 42]] — _ecole-42, reseau, systeme_ - [[push-swap|push_swap]] — _algorithmique, ecole-42, reseau_ diff --git a/vault-grasbot/00-MOC/MOC-Ia.md b/vault-grasbot/00-MOC/MOC-Ia.md index 3a3973a..f28d2a8 100644 --- a/vault-grasbot/00-MOC/MOC-Ia.md +++ b/vault-grasbot/00-MOC/MOC-Ia.md @@ -2,7 +2,7 @@ title: MOC — Ia slug: MOC-Ia type: moc -source: vault/generated +source: manual domains: [ia] tags: [moc] aliases: @@ -28,11 +28,15 @@ visibility: public --- -Notes du domaine *ia* (4 au total : 2 compétences + 2 projets / techniques liés). +Notes du domaine *ia* (8 au total : 2 compétences + 6 projets liés). ## Notes liées -- [[grasbot|GrasBot — assistant IA du portfolio]] — _devops, ecole-42, ia, web_ +- [[grasbot|GrasBot — chatbot IA du portfolio]] — _devops, ia, web_ +- [[newsletter-ia|Newsletter IA — Ollama + Listmonk + Directus]] — _devops, ia, web_ +- [[transcription-video|Transcription vidéo automatique]] — _devops, ia_ +- [[ft-linear-regression|ft_linear_regression]] — _algorithmique, ecole-42, ia_ +- [[piscine-python-data-science|Piscine Python — Data Science]] — _algorithmique, ecole-42, ia_ - [[ia|Mon Exploration et Maîtrise de l’Intelligence Artificielle]] — _algorithmique, ecole-42, ia_ - [[competence|Mon expérience dans la domotique]] — _algorithmique, domotique, ia, reseau_ -- [[fernandgrascalvet-com|fernandgrascalvet.com (portfolio)]] — _devops, ia, reseau, securite, web_ (couverture transversale du site) +- [[fernandgrascalvet-com|fernandgrascalvet.com (portfolio)]] — _devops, ia, web_ (couverture transversale du site) diff --git a/vault-grasbot/00-MOC/MOC-Projets.md b/vault-grasbot/00-MOC/MOC-Projets.md index 50983fb..67af38d 100644 --- a/vault-grasbot/00-MOC/MOC-Projets.md +++ b/vault-grasbot/00-MOC/MOC-Projets.md @@ -2,7 +2,7 @@ title: MOC — Projets slug: MOC-Projets type: moc -source: vault/generated +source: manual domains: [] tags: [moc] aliases: @@ -28,18 +28,22 @@ Hub des projets de Fernand Gras-Calvet, triés par titre. - [[cpp-partie1|cpp-partie1]] — _algorithmique, c, cpp, ecole-42, reseau_ - [[cpp-partie2|cpp-partie2]] — _algorithmique, c, cpp, devops, domotique, ecole-42, reseau_ - [[cub3d|cub3d]] — _domotique, ecole-42, graphique, reseau_ -- [[fernandgrascalvet-com|fernandgrascalvet.com (portfolio)]] — _devops, ia, reseau, securite, web_ +- [[fernandgrascalvet-com|fernandgrascalvet.com (portfolio)]] — _devops, ia, web_ - [[fract-ol|fract-ol]] — _algorithmique, domotique, ecole-42, graphique, reseau, systeme_ - [[ft-irc|ft-irc]] — _cpp, ecole-42, reseau, systeme_ +- [[ft-linear-regression|ft_linear_regression]] — _algorithmique, ecole-42, ia_ - [[ft-printf|Ft-printf]] — _c, ecole-42, reseau_ - [[ft-transcendence|ft_transcendence]] — _algorithmique, devops, ecole-42, reseau, web_ - [[get-next-line|Get_next_line]] — _c, ecole-42, reseau_ -- [[grasbot|GrasBot — assistant IA du portfolio]] — _devops, ecole-42, ia, web_ +- [[grasbot|GrasBot — chatbot IA du portfolio]] — _devops, ia, web_ - [[inception|inception]] — _algorithmique, devops, ecole-42, reseau, systeme_ - [[libft|libft]] — _algorithmique, c, domotique, ecole-42, reseau_ - [[minishell|minishell]] — _algorithmique, domotique, ecole-42, reseau, systeme_ - [[minitalk|minitalk]] — _c, ecole-42, reseau, systeme_ - [[netpractice|netpractice]] — _algorithmique, ecole-42, reseau_ +- [[newsletter-ia|Newsletter IA — Ollama + Listmonk + Directus]] — _devops, ia, web_ - [[philosopher|philosopher]] — _c, ecole-42, reseau, systeme_ +- [[piscine-python-data-science|Piscine Python — Data Science]] — _algorithmique, ecole-42, ia_ - [[presentation-ecole-42|Présentation école 42]] — _ecole-42, reseau, systeme_ - [[push-swap|push_swap]] — _algorithmique, ecole-42, reseau_ +- [[transcription-video|Transcription vidéo automatique]] — _devops, ia_ diff --git a/vault-grasbot/00-MOC/MOC-Web.md b/vault-grasbot/00-MOC/MOC-Web.md index 96f12cd..3f7ffb0 100644 --- a/vault-grasbot/00-MOC/MOC-Web.md +++ b/vault-grasbot/00-MOC/MOC-Web.md @@ -2,7 +2,7 @@ title: MOC — Web slug: MOC-Web type: moc -source: vault/generated +source: manual domains: [web] tags: [moc] aliases: @@ -25,10 +25,12 @@ visibility: public --- -Notes du domaine *web* (3 au total). +Notes du domaine *web* (5 au total). ## Notes liées - [[developpement-web-and-hebergement-sur-serveur-windows|Développement Web & Hébergement sur serveur Windows]] — _reseau, securite, web_ -- [[fernandgrascalvet-com|fernandgrascalvet.com (portfolio)]] — _devops, ia, reseau, securite, web_ +- [[fernandgrascalvet-com|fernandgrascalvet.com (portfolio)]] — _devops, ia, web_ +- [[grasbot|GrasBot — chatbot IA du portfolio]] — _devops, ia, web_ +- [[newsletter-ia|Newsletter IA — Ollama + Listmonk + Directus]] — _devops, ia, web_ - [[ft-transcendence|ft_transcendence]] — _algorithmique, devops, ecole-42, reseau, web_ diff --git a/vault-grasbot/10-Projets/fernandgrascalvet-com.md b/vault-grasbot/10-Projets/fernandgrascalvet-com.md index e80e040..629f7eb 100644 --- a/vault-grasbot/10-Projets/fernandgrascalvet-com.md +++ b/vault-grasbot/10-Projets/fernandgrascalvet-com.md @@ -1,27 +1,27 @@ --- -title: "fernandgrascalvet.com — site portfolio (Next.js / Strapi)" +title: "fernandgrascalvet.com — site portfolio" slug: fernandgrascalvet-com type: projet source: manual -domains: [web, devops, securite, reseau, ia] -tags: [nextjs, strapi, iis, tailwind, grasbot] +domains: [web, devops, ia] +tags: [nextjs, strapi, portfolio] aliases: - - fernandgrascalvet - fernandgrascalvet.com - - site fernand grascalvet - - portfolio next strapi - - mon site - - digital atelier + - site portfolio + - portfolio en ligne + - son site + - ton site + - site perso + - site web de fernand answers: - - "Comment est fait le site fernandgrascalvet.com ?" - - Quelle est la stack de ton site ? - - Parle de ton site portfolio - - Next.js et Strapi sur ton serveur + - "Quel est le site de Fernand ?" + - "Parle-moi de son site portfolio." + - "Où peut-on voir ses projets en ligne ?" + - "Sur quel site est hébergé GrasBot ?" priority: 6 linked: - "[[MOC-Projets]]" - "[[MOC-Web]]" - - "[[MOC-Technique]]" related: - "[[developpement-web-and-hebergement-sur-serveur-windows]]" - "[[grasbot]]" @@ -31,15 +31,41 @@ updated: 2026-04-23 visibility: public --- -**Produit courant** : le portfolio public **fernandgrascalvet.com** — contenu géré par **Strapi 5**, rendu par **Next.js 15** (App Router, Tailwind, refonte visuelle *Digital Atelier* : Manrope + Newsreader, cartes *vellum*, etc.), servi derrière **IIS** sur **Windows Server 2025** avec certificats **Let’s Encrypt** (Win-ACME). +# fernandgrascalvet.com — site portfolio -## Fonctionnalités notables (2025–2026) +> [!info] Rôle de cette note +> Fiche **projet** dédiée au site public lui-même. Pour le *comment* technique +> (stack détaillée, pipeline de build, ports) voir [[architecture-site]] ; +> pour la *posture métier* (hébergement IIS, sécurité, SSL) voir la fiche +> compétence [[developpement-web-and-hebergement-sur-serveur-windows]]. -- **Portfolio** : projets, fiches détail avec Markdown riche, carrousels, glossaire. -- **Compétences** : fiches richtext *ou* vues **vignettes** lorsque des entrées **Strapi** `realisation-ia` sont liées (ex. réalisations IA) ; fiche fille **`/competences/[slug]/[realisation]`** identique en gabarit à une fiche projet. -- **GrasBot** : assistant IA global, voir [[grasbot]]. -- **Contact** : envoi d’e-mail via l’**API Brevo** (route Next `POST /api/contact`) — **plus** de stockage des messages dans Strapi. +## En une phrase -## Périmètre +Portfolio public de Fernand Gras-Calvet, **auto-hébergé** sur un serveur +personnel (Windows Server + IIS), construit en **Next.js 15** et alimenté +par **Strapi 5**, avec un assistant IA intégré ([[grasbot|GrasBot]]). -Ce dépôt documente l’**implémentation** ; l’hébergement, IIS et la sécurité de base sont alignés sur la fiche de compétence [[developpement-web-and-hebergement-sur-serveur-windows]] et sur [[architecture-site]]. +## Ce que le visiteur y trouve + +- **Portfolio** : fiches projets (école 42 et perso) avec Markdown riche + et galeries. +- **Compétences** : fiches richtext ou **vignettes** de *réalisations IA* + quand le Strapi contient des entrées `realisation-ia` liées — route fille + `/competences/[slug]/[realisation]` pour le détail. +- **Contact** : e-mail transactionnel via **Brevo** (plus de stockage + Strapi des messages). +- **GrasBot** : bouton flottant disponible sur toutes les pages. + +## Différentiation avec les notes voisines + +| Note | Angle | +|------|-------| +| `fernandgrascalvet-com` (cette note) | **Projet public** (ce qu'on *voit*) | +| [[architecture-site]] | Schéma technique interne (stack, flux, ports) | +| [[developpement-web-and-hebergement-sur-serveur-windows]] | Compétence / savoir-faire web + hébergement | +| [[grasbot]] | Fonctionnalité IA du site | + +## Liens + +- [[MOC-Projets]] — hub projets +- [[MOC-Web]] — hub domaine *web* diff --git a/vault-grasbot/10-Projets/ft-linear-regression.md b/vault-grasbot/10-Projets/ft-linear-regression.md new file mode 100644 index 0000000..cc02aa5 --- /dev/null +++ b/vault-grasbot/10-Projets/ft-linear-regression.md @@ -0,0 +1,131 @@ +--- +title: "ft_linear_regression" +slug: ft-linear-regression +type: projet +source: manual +domains: [ia, ecole-42, algorithmique] +tags: [data-ia] +aliases: + - ft linear regression + - ft_linear_regression + - ft-linear-regression + - régression linéaire + - linear regression + - descente de gradient + - régression 42 + - premier projet ia 42 + - régression linéaire from scratch +answers: + - "Qu'est-ce que ft_linear_regression ?" + - "Parle-moi de ft_linear_regression." + - "Comment a-t-il implémenté une régression linéaire ?" + - "Quel est le premier projet Data / IA à l'École 42 ?" + - "A-t-il codé une descente de gradient ?" +priority: 6 +linked: + - "[[MOC-Projets]]" + - "[[MOC-Ecole-42]]" + - "[[MOC-Ia]]" +related: + - "[[piscine-python-data-science]]" + - "[[ia]]" + - "[[grasbot]]" +updated: 2026-04-23 +visibility: public +--- + +# ft_linear_regression + +> [!info] Contexte +> **Premier projet de la branche Data Science / IA de l'École 42**, enchaîné +> après la [[piscine-python-data-science|Piscine Python — Data Science]]. +> Socle mathématique pour les travaux IA côté [[ia]] et [[grasbot]]. + +## Résumé + +Implémenter **from scratch** un algorithme de **régression linéaire simple** +entraînée par **descente de gradient**, sans utiliser de fonction toute +faite (`numpy.polyfit`, `sklearn.LinearRegression`, etc.). L'exercice +force à comprendre les **fondations mathématiques du machine learning** +avant de manipuler les bibliothèques de haut niveau. + +## Objectifs pédagogiques + +- Découvrir les concepts fondamentaux du ML : **hypothèse**, **fonction de + coût**, **paramètres**, **convergence**. +- Implémenter la **descente de gradient** à la main, avec mise à jour + simultanée de θ₀ (biais) et θ₁ (pente) via des variables temporaires + pour éviter un couplage entre les deux mises à jour. +- Comprendre le rôle du **learning rate** : un pas trop grand fait osciller + l'algorithme, un pas trop petit le ralentit artificiellement. +- Travailler la **préparation des données** : détection des valeurs + aberrantes via l'**IQR** (*Interquartile Range*), gestion des valeurs + manquantes, **normalisation min-max** pour que la descente converge + malgré des échelles différentes (kilométrages en milliers, prix en + dizaines de milliers). + +## Stack technique + +| Outil | Rôle | +|-------|------| +| **Python 3** | Langage principal | +| **pandas** | Chargement et exploration du CSV (`describe()`, quartiles, détection d'aberrants) | +| **NumPy** | Calculs vectoriels pour la descente de gradient | +| **Matplotlib + Seaborn** | Visualisation du nuage de points et de la droite de régression | +| **scikit-learn** | **Uniquement** pour les métriques d'évaluation (`mean_squared_error`, `r2_score`), pas pour l'entraînement | +| **Tkinter** | Interface graphique native : saisie d'un kilométrage, affichage du prix estimé en temps réel | + +## Architecture du code + +Modules thématiques dans `src/` : + +- `data_process.py` — chargement, nettoyage, normalisation du dataset. +- `cost_function.py` — fonction de coût *Mean Squared Error* : + `J(θ₀, θ₁) = (1 / 2m) · Σ(hθ(x) − y)²`. +- `gradient_descent.py` — boucle d'entraînement (mise à jour simultanée + des paramètres). +- `training_model.py` — orchestration de l'entraînement + sauvegarde des + paramètres optimaux. +- `prediction.py` — rechargement des paramètres pour prédire sur une + nouvelle entrée. +- `evaluate_model.py` — calcul MSE + R² pour mesurer la qualité du modèle. +- `visualization.py` — tracé du nuage de points + droite de régression. +- `gui.py` — interface Tkinter (bonus). + +## Parties bonus réalisées + +- **Graphe** du nuage de points avec droite de régression superposée. +- **Mesure de précision** via MSE et **coefficient de détermination R²** + (proche de 1 → modèle pertinent, proche de 0 → modèle inutile, négatif + → pire qu'une moyenne). +- **Interface graphique utilisateur** (Tkinter). + +## Compétences mobilisées + +- **Mathématiques appliquées** : dérivées partielles, minimisation d'une + fonction de coût, interprétation géométrique d'une régression. +- **Programmation scientifique Python** : vectorisation NumPy, DataFrames + pandas, patterns de préparation de données. +- **Visualisation de données** : IQR, distribution, scatter plot — + comprendre ses données avant de modéliser. +- **Évaluation de modèle** : différence entre *loss* d'entraînement et + métriques de qualité, interprétation du R². + +## Valeur pour la suite + +Ce projet constitue la **base intellectuelle** de tout ce qui suit en IA. +Comprendre ce qui se passe sous `model.fit(X, y)` change radicalement la +manière d'aborder les bibliothèques de haut niveau (scikit-learn, +PyTorch, TensorFlow) et d'interpréter les comportements inattendus d'un +modèle (non-convergence, explosion du learning rate, overfitting). + +--- + +## Liens + +- [[MOC-Projets]] — hub projets +- [[MOC-Ecole-42]] — contexte pédagogique +- [[MOC-Ia]] — domaine *ia* +- [[piscine-python-data-science]] — pré-requis pratique +- [[ia]] — compétence IA (fiche) +- [[grasbot]] — projet IA appliqué au portfolio diff --git a/vault-grasbot/10-Projets/grasbot.md b/vault-grasbot/10-Projets/grasbot.md index e6852c8..c7f8c4f 100644 --- a/vault-grasbot/10-Projets/grasbot.md +++ b/vault-grasbot/10-Projets/grasbot.md @@ -1,55 +1,144 @@ --- -title: "GrasBot — assistant IA du portfolio" +title: "GrasBot — chatbot IA du portfolio" slug: grasbot type: projet source: manual -domains: [ia, devops, web, ecole-42] -tags: [ollama, fastapi, langfuse, nextjs, rag] +domains: [ia, web, devops] +tags: [ollama, fastapi, langfuse, chatbot, qwen3] aliases: - - GrasBot - grasbot - assistant grasbot + - chatbot du site - chatbot fernandgrascalvet - - grasbot v3 - - retrieval bm25 + - chatbot ia du portfolio + - assistant du site - assistant ia locale - - qwen3 + - ia locale test + - bot du site + - bouton flottant answers: - "Qu'est-ce que GrasBot ?" - - Comment fonctionne le chatbot sur le site ? - - Parle-moi de GrasBot - - Avec quoi l'assistant du site est-il branché ? -priority: 6 + - "Parle-moi de GrasBot." + - "Quel est l'assistant IA sur le site ?" + - "Comment fonctionne le chatbot du site ?" + - "Sur quelles sources GrasBot s'appuie-t-il ?" + - "GrasBot hallucine-t-il ?" +priority: 7 linked: - "[[MOC-Projets]]" - "[[MOC-Ia]]" - - "[[MOC-Technique]]" related: - "[[ia]]" - "[[grasbot-retrieval]]" - "[[architecture-site]]" - "[[fernandgrascalvet-com]]" + - "[[newsletter-ia]]" + - "[[transcription-video]]" link: "https://fernandgrascalvet.com" updated: 2026-04-23 visibility: public --- -**Slug site / fiche compétence IA :** `grasbot` (réalisation liée à la compétence [[ia]], comme l’entité Strapi `realisation-ia`). +# GrasBot — chatbot IA du portfolio -## Résumé +> [!info] Rôle de cette note +> Fiche **projet** (réalisation IA exposée sur `/competences/ia`). Pour +> l'algorithme de retrieval détaillé voir [[grasbot-retrieval]] ; pour +> l'architecture globale du site voir [[architecture-site]]. -**GrasBot** est l’assistant conversationnel intégré à tout le site (bouton flottant, proxy Next → API FastAPI). Depuis la **v3** (2026), la réponse s’appuie sur le vault Obsidian `vault-grasbot/` (structure + wikilinks) avec un **retrieval déterministe** (scores multi-signaux + BM25 + expansion de graphe), **sans** base vectorielle ni embeddings. Le modèle de chat est un **Qwen3 8B** servi par **Ollama** (machine locale côté API). +## Le défi -## Chaîne technique (aperçu) +Permettre à un visiteur de **poser des questions libres** sur le parcours, +les projets et les compétences de Fernand, **sans qu'il doive naviguer** +dans dix pages, et **sans que le chatbot invente** des informations qui +ne sont pas dans les notes. -- **Next.js** : `GrasBotFab` + `ChatBot.js` → `askAI` → `/api/proxy` → `https://llmapi.fernandgrascalvet.com/ask` -- **FastAPI** : `llm-api/search.py` (retrieval, construction du prompt, appel génération) -- **Observabilité** : **Langfuse** (3.x) sur les spans retrieval / construction de prompt / génération, avec scores utiles en traçage (`grounded`, etc.) -- **Règles de réponse** : system prompt anti-hallucination, troncature contrôlée des sources secondaires, note canonique `bio-fernand` pour les questions biographiques +## Pipeline technique -## Liens internes +GrasBot n'est pas un simple wrapper ChatGPT : c'est un vrai pipeline **RAG +(Retrieval-Augmented Generation)** construit de bout en bout. -- Détail algorithme et scoring : [[grasbot-retrieval]] -- Où cela s’inscrit dans l’architecture globale : [[architecture-site]] -- Compétence [[ia]] (contexte personnel et pédagogique 42) -- Même site, volet *stack web* : [[fernandgrascalvet-com]] +### 1. Vault Obsidian comme source de vérité + +Un coffre Obsidian structuré (`vault-grasbot/`) contient les notes de +parcours, projets École 42, compétences et glossaires. Chaque note porte +un **frontmatter YAML** avec `aliases`, `answers`, `priority`, `domains` +— autant de **signaux** pour le scoring. + +### 2. Retrieval déterministe par graphe + BM25 + +Contrairement à un RAG classique à **embeddings vectoriels**, GrasBot +exploite directement la **structure du vault** : score multi-signaux +(aliases / titre / answers / domaines / BM25 sur le body), puis +**expansion par graphe** via les wikilinks `[[...]]`. Résultat : retrieval +en **~50 ms**, **100 % traçable**, sans dépendance à ChromaDB ni à des +embeddings. Détail : [[grasbot-retrieval]]. + +### 3. Génération locale avec Qwen3 + Ollama + +Un modèle **Qwen3 8B** (quantization Q4_K_M) tourne **en local** sur le +serveur, servi par **Ollama**. Paramètres tunés après audit des premières +traces : + +- `num_ctx = 8192` pour éviter la **troncature silencieuse** du contexte + (défaut Ollama trop bas quand plusieurs notes entières sont injectées). +- `num_predict = 1024` pour les réponses longues complètes. +- `think = false` pour **désactiver** le mode raisonnement interne qui + consommait du budget de sortie. + +### 4. Observabilité Langfuse de bout en bout + +Chaque conversation déclenche une trace Langfuse avec **3 spans** : + +- `retrieval` (notes remontées, scores, *reasons*), +- `prompt_build` (system + user complets, sources tronquées, flag + *grounded*), +- `ollama-chat` (tokens, latence, paramètres). + +Scores automatiques `grounded` et `retrieval_relevance` pour suivre la +qualité dans le temps. + +### 5. Règles anti-hallucination + +System prompt strict : **interdiction** d'inventer un fait absent des +notes, **priorité** aux sources `type=parcours` pour les questions +biographiques, mention explicite *« non précisé dans les notes »* quand +l'info manque. La source canonique [[bio-fernand]] (priority 10) couvre +les *« qui est Fernand ? »*. + +## Stack complète + +| Couche | Outils | +|--------|--------| +| **Front** | Next.js 15 + composant React `ChatBot.js` ; session / user IDs anonymes (UUID v4 en `sessionStorage` / `localStorage`). | +| **Proxy** | Route API Next qui valide une whitelist de paramètres (`q`, `session_id`, `user_id`) et forward vers l'API Python. | +| **Backend** | FastAPI + Ollama ; pipeline `search.py` (graph + BM25) + `observability.py` (Langfuse). | +| **Infra** | Windows Server 2025 + IIS reverse proxy + HTTPS Let's Encrypt + VPN pour l'admin. | + +## Ce que ce projet démontre + +- **Chaîne RAG complète** maîtrisée (ingestion, retrieval, génération, + observabilité). +- Choisir la **bonne brique** selon le contexte : un vault de quelques + dizaines de notes ne justifie pas des embeddings vectoriels — **BM25 + + graphe** suffit largement. +- **Tuning des modèles** plutôt que subir leurs défauts (audit via + Langfuse → correctifs ciblés). +- Déploiement en **production** sur une infra maîtrisée **bout en bout**. + +## Différentiation avec les notes voisines + +| Note | Angle | Quand elle remonte en premier | +|------|-------|-------------------------------| +| `grasbot` (cette note) | Fiche **produit / vignette réalisation** IA | *« Qu'est-ce que GrasBot ? »*, *« Pipeline technique ? »* | +| [[grasbot-retrieval]] | Technique interne (scoring, BM25, graphe) | *« Comment le chatbot trouve-t-il ses réponses ? »* | +| [[architecture-site]] | Stack globale Next + Strapi + FastAPI | *« Comment est fait le site ? »* | +| [[ia]] | Compétence (parcours IA de Fernand) | *« Quelles sont ses compétences en IA ? »* | + +## Liens + +- [[MOC-Projets]] — hub projets +- [[MOC-Ia]] — hub domaine *ia* +- [[ia]] — compétence IA (fiche) ; GrasBot y apparaît en réalisation +- [[fernandgrascalvet-com]] — le site qui héberge GrasBot +- [[newsletter-ia]] · [[transcription-video]] — autres réalisations IA diff --git a/vault-grasbot/10-Projets/newsletter-ia.md b/vault-grasbot/10-Projets/newsletter-ia.md new file mode 100644 index 0000000..b1d07e1 --- /dev/null +++ b/vault-grasbot/10-Projets/newsletter-ia.md @@ -0,0 +1,86 @@ +--- +title: "Newsletter IA — Ollama + Listmonk + Directus" +slug: newsletter-ia +type: projet +source: manual +domains: [ia, web, devops] +tags: [ollama, langfuse, listmonk, directus, newsletter, docker, chatbot] +aliases: + - newsletter ia + - newsletter automatisée + - newsletter ollama listmonk + - listmonk directus ollama + - génération de newsletter + - newsletter homelab + - diffusion newsletter auto-hébergée +answers: + - "Qu'est-ce que la newsletter IA de Fernand ?" + - "Parle-moi du projet newsletter automatisée." + - "Comment génère-t-il une newsletter avec un LLM local ?" + - "Utilise-t-il Listmonk pour ses envois ?" + - "Sur quelles briques repose sa newsletter auto-hébergée ?" +priority: 6 +linked: + - "[[MOC-Projets]]" + - "[[MOC-Ia]]" +related: + - "[[ia]]" + - "[[grasbot]]" + - "[[architecture-site]]" +updated: 2026-04-23 +visibility: public +--- + +# Newsletter IA — Ollama + Listmonk + Directus + +> [!info] Rôle de cette note +> Fiche **projet** *Newsletter IA*, exposée sur le site en `realisation-ia` +> rattachée à la compétence [[ia]]. Démontre la capacité à orchestrer une +> chaîne de publication **auto-hébergée** avec de la génération LLM locale. + +## L'objectif + +Construire un système de newsletter **complètement auto-hébergé**, capable +de **générer automatiquement** le contenu éditorial (intro, sélection des +articles) à partir d'un corpus d'information, puis de le **diffuser** à une +liste d'abonnés — sans dépendre d'un service SaaS propriétaire (Substack, +Mailchimp, Beehiiv…). + +## Les briques + +| Brique | Rôle | +|--------|------| +| **Listmonk** | Diffusion — open-source (Go), API REST complète, segmentation, stats, templates HTML. Dans un conteneur Docker derrière IIS reverse proxy pour HTTPS. | +| **Directus** | Édition — CMS headless : chaque édition est un document avec ses articles, sa thématique, sa date. Permet de **réviser** le contenu généré par l'IA avant envoi. | +| **Ollama** | Génération LLM locale (Qwen3, Mistral). Deux usages : **(1) sélection bornée** des 3-5 articles les plus pertinents par thématique, **(2) rédaction d'introduction** éditoriale à partir des résumés. | +| **Langfuse** | Observabilité — chaque génération est tracée (prompt, sortie, tokens, latence) pour suivre la qualité dans le temps et itérer sur les prompts **sans régression**. | + +## Ce que ce projet démontre + +- **Self-hosting complet** d'une chaîne de publication (serveur, DNS, HTTPS, + VM, Docker, reverse proxy, SMTP). +- **Orchestration** de plusieurs services (Listmonk + Directus + Ollama) + plutôt que coller des briques opaques. +- **Usage ciblé de l'IA** là où elle apporte de la valeur (sélection + + rédaction d'intro), **sans basculer** dans un 100 % automatique qui + perdrait en qualité. +- **Observabilité dès le départ** : Langfuse connecté **avant** le moindre + envoi en production. + +## Roadmap + +- Enrichissement LLM multi-passes (extraction de citations, tags + automatiques). +- Interface d'arbitrage humain dans Directus pour valider l'intro avant + envoi. +- Dashboard Langfuse dédié à la newsletter (taux d'ouverture ↔ ton de + l'intro). + +--- + +## Liens + +- [[MOC-Projets]] — hub projets +- [[MOC-Ia]] — hub domaine *ia* +- [[ia]] — compétence IA (fiche) +- [[grasbot]] — autre réalisation IA, même esprit *self-hosted + observable* diff --git a/vault-grasbot/10-Projets/piscine-python-data-science.md b/vault-grasbot/10-Projets/piscine-python-data-science.md new file mode 100644 index 0000000..caff481 --- /dev/null +++ b/vault-grasbot/10-Projets/piscine-python-data-science.md @@ -0,0 +1,118 @@ +--- +title: "Piscine Python — Data Science" +slug: piscine-python-data-science +type: projet +source: manual +domains: [ia, ecole-42, algorithmique] +tags: [42-piscine, data-ia] +aliases: + - piscine python + - python piscine + - piscine data science + - piscine python 42 + - piscine data + - python 42 + - data science 42 + - numpy pandas 42 +answers: + - "Qu'est-ce que la Piscine Python de 42 ?" + - "Parle-moi de la Piscine Python Data Science." + - "Comment s'est-il formé à Python et à la data ?" + - "Qu'a-t-il appris en Python à l'École 42 ?" + - "A-t-il travaillé avec NumPy et pandas ?" +priority: 6 +linked: + - "[[MOC-Projets]]" + - "[[MOC-Ecole-42]]" + - "[[MOC-Ia]]" +related: + - "[[ft-linear-regression]]" + - "[[ia]]" +updated: 2026-04-23 +visibility: public +--- + +# Piscine Python — Data Science + +> [!info] Contexte +> Sprint d'apprentissage intensif de la branche **Data Science / IA** à l'École 42, +> structuré en **5 modules (Python 0 à 4)**. Complément naturel du projet +> [[ft-linear-regression]] et socle pratique pour les travaux IA décrits dans +> [[ia]] et [[grasbot]]. + +## Objectif + +Bâtir la **boîte à outils Python** d'un futur spécialiste Data / IA, en +privilégiant la compréhension des **paradigmes** plutôt que la simple +collection de syntaxes. Chaque module est une piscine courte : exercices +quotidiens, correction par les pairs, rythme soutenu. + +## Les 5 modules + +### Python 0 — Starting + +Bases du langage : variables, structures de contrôle, fonctions, listes / +tuples / sets / dictionnaires, compréhensions, fichiers, exceptions, +`argparse`. Règles strictes de la Piscine : **Python 3.10 obligatoire**, +imports explicites, pas de variables globales, fonctions qui ne plantent +jamais, tests écrits par l'étudiant. + +### Python 1 — Array + +Programmation vectorisée avec **NumPy** : création et manipulation +d'arrays multidimensionnels, slicing avancé, **broadcasting**, fonctions +universelles (`ufunc`), opérations matricielles. Apprentissage du réflexe +*« remplacer une boucle Python par une opération vectorielle »* — fondamental +pour la performance en ML. + +### Python 2 — DataTable + +Manipulation de **DataFrames** avec **pandas** : chargement CSV / Excel, +sélection par index / label, `groupby`, `merge` / `join`, pivots, +nettoyage de données, détection de valeurs manquantes et aberrantes, +statistiques descriptives (`describe()`, quantiles). Le module charnière +pour les projets de régression et d'analyse. + +### Python 3 — Object-Oriented Programming + +Programmation orientée objet : classes, héritage, composition, +encapsulation, méthodes spéciales (`__init__`, `__repr__`, `__eq__`…), +polymorphisme. Introduction aux design patterns utiles en data science : +modélisation de datasets comme objets, classes de modèles avec méthodes +`fit` / `predict` (préparation à **scikit-learn**). + +### Python 4 — Data Oriented Design + +Changement de perspective : **DOD** (*Data Oriented Design*) — organiser +le code autour des **données** et de leur accès mémoire plutôt qu'autour +d'objets. *Cache-friendliness*, *structure of arrays* vs *array of +structures*, profilage basique. Un pont entre Python de haut niveau et les +contraintes de performance qu'on retrouvera en deep learning (PyTorch / +TensorFlow) ou en traitement de gros volumes. + +## Compétences mobilisées + +- **Python moderne** : idiomes 3.10+, typage, gestion d'erreurs robuste. +- **NumPy** : vectorisation, broadcasting, algèbre linéaire appliquée. +- **pandas** : nettoyage, agrégation, transformation de données tabulaires. +- **POO Python** : architecture de classes, héritage, méthodes spéciales. +- **Rigueur École 42** : tests écrits, code sans crash, peer-evaluation, + respect strict des contraintes de rendu. + +## Valeur pour la suite + +Cette Piscine est le **socle pratique** de tous les projets Data / IA qui +suivent. [[ft-linear-regression]] (régression linéaire par descente de +gradient), les expérimentations LLM / agents locaux et la manipulation des +jeux de données côté chatbot ([[grasbot]]) reposent **directement** sur +les acquis de ces 5 modules. + +--- + +## Liens + +- [[MOC-Projets]] — hub projets +- [[MOC-Ecole-42]] — contexte pédagogique +- [[MOC-Ia]] — domaine *ia* +- [[ft-linear-regression]] — premier projet Data / IA 42 après cette piscine +- [[ia]] — compétence IA (fiche) diff --git a/vault-grasbot/10-Projets/transcription-video.md b/vault-grasbot/10-Projets/transcription-video.md new file mode 100644 index 0000000..8b9d8d3 --- /dev/null +++ b/vault-grasbot/10-Projets/transcription-video.md @@ -0,0 +1,100 @@ +--- +title: "Transcription vidéo automatique" +slug: transcription-video +type: projet +source: manual +domains: [ia, devops] +tags: [ollama, openwebui, ovh, transcription, multimedia] +aliases: + - transcription vidéo + - transcription automatique + - transcription auto + - speech to text + - sous-titres automatiques + - résumé de vidéo + - pipeline transcription +answers: + - "Comment transcrit-il des vidéos automatiquement ?" + - "Parle-moi du projet de transcription vidéo." + - "Quel pipeline utilise-t-il pour la transcription ?" + - "A-t-il testé OVHcloud AI Endpoints ?" +priority: 6 +linked: + - "[[MOC-Projets]]" + - "[[MOC-Ia]]" +related: + - "[[ia]]" + - "[[newsletter-ia]]" + - "[[grasbot]]" +updated: 2026-04-23 +visibility: public +--- + +# Transcription vidéo automatique + +> [!info] Rôle de cette note +> Fiche **projet** *Transcription vidéo*, exposée sur le site en +> `realisation-ia` rattachée à la compétence [[ia]]. Montre la maîtrise +> d'un pipeline **multimédia** (décodage → segmentation → transcription → +> post-processing) et la capacité à **comparer** des fournisseurs de +> modèles (OVHcloud AI Endpoints vs modèles locaux Ollama). + +## Contexte + +Pouvoir **transcrire automatiquement** une vidéo longue (conférence, +tutoriel, cours), **segmenter les moments clés**, et **post-traiter** le +résultat pour obtenir un document éditable directement utilisable. + +Exploration en **sept parties**, de l'intégration d'OVHcloud dans +Open WebUI jusqu'au calcul fin des **intervalles d'images** selon le mode +retenu. + +## Pipeline + +### 1. Préparation + +- Intégration d'**OVHcloud AI Endpoints** dans **Open WebUI** comme + fournisseur complémentaire aux modèles locaux Ollama. +- Mise en place d'une pipeline vidéo sur la **VM dédiée** (calculs, + décodage, extraction audio). + +### 2. Traitement vidéo + +- Extraction de l'**audio** de la vidéo source. +- **Segmentation temporelle** avec calcul d'intervalles d'images adaptés + au mode choisi (transcription pure, analyse d'images-clés, ou les deux). +- **Transcription** par modèle *speech-to-text*. + +### 3. Post-processing + +- Nettoyage des hésitations, **reformulation légère** par LLM local. +- **Structuration en chapitres** avec timestamps. +- Export au format exploitable. + +### 4. Analyse et corrections + +Phase d'analyse des résultats sur des vidéos tests, qui a permis +d'identifier une liste de correctifs (**segmentation**, **gestion des +silences**, **précision des timestamps**) **avant** d'industrialiser le +workflow — démarche itérative et mesurée. + +## Ce que ce projet démontre + +- Maîtrise d'un **pipeline multimédia complet** (décodage, segmentation, + transcription, post-processing). +- Capacité à **comparer** des fournisseurs de modèles (**OVHcloud** vs + **Ollama local**) et à choisir selon le contexte. +- Intégration de plusieurs briques (**Open WebUI**, scripts Python, + modèles distants + locaux) dans un workflow cohérent. +- **Démarche itérative** : identification des régressions **avant** la mise + en production. + +--- + +## Liens + +- [[MOC-Projets]] — hub projets +- [[MOC-Ia]] — hub domaine *ia* +- [[ia]] — compétence IA (fiche) +- [[newsletter-ia]] — autre réalisation IA orchestrée (Listmonk + Directus + Ollama) +- [[grasbot]] — réalisation IA : assistant du portfolio diff --git a/vault-grasbot/20-Competences/developpement-web-and-hebergement-sur-serveur-windows.md b/vault-grasbot/20-Competences/developpement-web-and-hebergement-sur-serveur-windows.md index 9829110..d48e186 100644 --- a/vault-grasbot/20-Competences/developpement-web-and-hebergement-sur-serveur-windows.md +++ b/vault-grasbot/20-Competences/developpement-web-and-hebergement-sur-serveur-windows.md @@ -41,9 +41,9 @@ visibility: public J'ai réalisé ce projet afin d'étendre mes compétences en développement Web. -### Mise à jour 2025–2026 — refonte, réalisations et contact +### Le site en production -Le site a évolué en profondeur : **refonte visuelle** (*Digital Atelier* : Manrope, Newsreader, cartes *vellum*, tokens Tailwind), **Strapi 5** avec le type **`realisation-ia`** (réalisations liées aux compétences, vignettes + routes `/competences/[slug]/[realisation]`), et **GrasBot** (assistant sur tout le site) documenté en projet [[grasbot]] dans le vault. Le **formulaire de contact** envoie désormais les messages via l’**API Brevo** (plus de stockage des messages côté Strapi). Voir la synthèse produit [[fernandgrascalvet-com]]. +Le site **fernandgrascalvet.com** est la mise en pratique courante de cette compétence. La fiche projet [[fernandgrascalvet-com]] décrit ce que le visiteur voit (portfolio, compétences avec `realisation-ia`, contact via Brevo, assistant [[grasbot|GrasBot]]). --- diff --git a/vault-grasbot/20-Competences/ia.md b/vault-grasbot/20-Competences/ia.md index bef2514..e80b3fe 100644 --- a/vault-grasbot/20-Competences/ia.md +++ b/vault-grasbot/20-Competences/ia.md @@ -3,12 +3,15 @@ title: Mon Exploration et Maîtrise de l’Intelligence Artificielle slug: ia type: competence source: manual -domains: [algorithmique, ecole-42, ia] -tags: [tri] +domains: [ia, ecole-42, algorithmique] +tags: [chatbot, ollama, langfuse, data-ia] aliases: - mon exploration et maîtrise de l’intelligence artificielle - ia - intelligence artificielle + - ia locale + - ia self-hosted + - ia auto-hébergée - llm - llms - modèles de langage @@ -18,19 +21,24 @@ aliases: - deep learning - data science - ollama + - langfuse answers: - - Quelles sont ses compétences en IA ? + - "Quelles sont ses compétences en IA ?" - "A-t-il de l'expérience en IA ?" - - Parle-moi de son expérience en IA + - "Parle-moi de son expérience en IA." + - "Utilise-t-il des LLMs locaux ?" + - "Qu'est-ce qui l'intéresse dans l'IA ?" priority: 7 linked: - "[[MOC-Competences]]" + - "[[MOC-Ia]]" related: - "[[grasbot]]" + - "[[newsletter-ia]]" + - "[[transcription-video]]" + - "[[ft-linear-regression]]" + - "[[piscine-python-data-science]]" - "[[fernandgrascalvet-com]]" - - "[[born2beroot]]" - - "[[cpp-partie1]]" - - "[[cpp-partie2]]" updated: 2026-04-23 visibility: public --- @@ -39,23 +47,42 @@ visibility: public --- -Comme beaucoup, j’ai découvert l’intelligence artificielle grand public avec l’arrivée de ChatGPT, qui a marqué un tournant décisif dans l’accessibilité et la démocratisation de cette technologie. En l’espace de quelques mois, le domaine a connu une expansion fulgurante, avec l’émergence d’une multitude de solutions exploitant l’IA sous diverses formes. Fasciné par ces avancées, j’ai rapidement développé un vif intérêt pour plusieurs applications, notamment la génération d’images, les chatbots intelligents et plus largement les modèles de langage avancés (LLMs). +## Mon exploration des LLM et de l'IA : un intérêt devenu spécialisation -Dans cette quête d’exploration, j’ai expérimenté des solutions d’IA locale, notamment avec Ollama, LLM Studio, et d’autres outils permettant une plus grande maîtrise et personnalisation des modèles. Mon objectif a été de comprendre en profondeur les capacités d’intégration de ces intelligences artificielles locales, en explorant l’entraînement de modèles personnalisés, l’optimisation des performances et l’affinement des interactions par l’ingénierie des prompts (cliquez sur IA locale test mistral 7b sur mon serveur). +Comme beaucoup, j'ai découvert l'intelligence artificielle grand public avec l'arrivée de ChatGPT, qui a marqué un tournant décisif dans l'accessibilité et la démocratisation de cette technologie. Fasciné par la vitesse d'évolution du domaine, j'ai rapidement développé un intérêt pour plusieurs applications : **génération d'images**, **chatbots**, et plus largement les **modèles de langage (LLMs)**. -Actuellement, je suis en phase d’installation et de déploiement de solutions d’IA locale sur mon propre serveur, un projet en cours de développement qui me permet d’expérimenter les configurations avancées et d’adapter ces modèles à des cas d’usage spécifiques. Cette démarche s’inscrit dans une volonté de maîtriser l’IA en environnement auto-hébergé, offrant ainsi une meilleure compréhension de la gestion des ressources, du fine-tuning des modèles et des défis liés à l’infrastructure. +## De l'expérimentation à l'auto-hébergement -Parallèlement, j’ai entrepris une spécialisation en Data Science et Intelligence Artificielle au sein de l’École 42, afin d’approfondir mes connaissances théoriques et pratiques dans ce domaine en perpétuelle évolution. Cette formation me permet d’aller encore plus loin dans l’analyse des algorithmes de machine learning et deep learning, d’explorer des approches avancées en traitement des données massives, et de perfectionner mes compétences en développement et intégration de solutions IA appliquées. +Rapidement, j'ai voulu sortir de la dépendance aux API propriétaires et comprendre ce qui se passe sous le capot. J'ai expérimenté des solutions d'**IA locale** avec **Ollama**, **LM Studio**, **Open WebUI**, en explorant le fine-tuning léger, l'ingénierie de prompts, et l'intégration de modèles dans des workflows métier. -### GrasBot — assistant intégré au site +Aujourd'hui, toute ma pile IA tourne sur **mon serveur personnel** : -Sur **fernandgrascalvet.com**, j’ai réalisé **GrasBot** : un assistant basé sur un **LLM local** (Qwen3 via Ollama), une API **FastAPI**, et une **base de connaissances** dérivée de ce vault (`vault-grasbot/`) avec retrieval **graph + BM25** (v3, sans embeddings). Le chat est disponible sur toutes les pages (FAB), avec **observabilité Langfuse** pour le débogage et l’amélioration continue. Les réponses visent la **fidélité aux sources** (prompt et troncatures documentés). Voir la fiche projet [[grasbot]] et la note technique [[grasbot-retrieval]]. +- **LLM locaux** (Qwen3, Llama, Mistral, modèles d'embedding), +- **observabilité** via **Langfuse** self-hosted, +- **recherche web privée** via **SearxNG** et **Firecrawl** pour alimenter des agents. -### Sur le site — rubrique compétence IA +Cette infrastructure me permet d'expérimenter **sans plafond de tokens**, **sans fuite de données**, et avec une compréhension fine du **coût** et de la **performance** de chaque modèle. -Les **réalisations** liées à cette compétence (entité Strapi `realisation-ia`) apparaissent en **vignettes** sur `/competences/ia` avec un détail `/competences/ia/` aligné sur les fiches portfolio. Cela permet de présenter GrasBot et d’autres travaux IA comme des **projets navigables**, pas seulement du texte statique. +## Une spécialisation formalisée à l'École 42 -Animé par une passion pour l’intelligence artificielle et ses innombrables possibilités, je continue de m’informer, d’expérimenter et d’appliquer ces technologies à des projets concrets. Mon objectif est d’acquérir une expertise approfondie pour concevoir des systèmes intelligents performants, adaptables et innovants, tout en restant à la pointe des avancées technologiques. +Parallèlement, je me spécialise en **Data Science et Intelligence Artificielle à l'École 42**, ce qui me permet d'approfondir les **fondations mathématiques** (régression, descente de gradient, fonctions de coût, métriques d'évaluation) plutôt que de rester au niveau de l'utilisation des bibliothèques de haut niveau. Les projets [[ft-linear-regression]] (premier modèle **from scratch**) et la [[piscine-python-data-science|Piscine Python for Data Science]] (5 modules) posent les briques essentielles avant les modèles plus complexes. + +## Mon angle + +Je privilégie trois axes : + +1. **Autonomie** — héberger moi-même pour comprendre réellement les contraintes, les coûts et les limites. +2. **Observabilité** — chaque appel LLM que je produis est tracé (Langfuse). On ne peut pas améliorer ce qu'on ne mesure pas. +3. **Utilité concrète** — pas d'IA pour l'IA : chaque projet résout un problème réel (newsletter automatisée, chatbot de portfolio, transcription vidéo…). + +## Réalisations IA exposées sur le site + +La rubrique `/competences/ia` présente ces travaux en **vignettes navigables** (entité Strapi `realisation-ia`) : + +- [[grasbot|GrasBot — chatbot IA du portfolio]] — RAG maison (graph + BM25) + Qwen3 local + Langfuse. +- [[newsletter-ia|Newsletter IA — Ollama + Listmonk + Directus]] — chaîne de publication auto-hébergée avec génération LLM ciblée. +- [[transcription-video|Transcription vidéo automatique]] — pipeline multimédia (décodage → segmentation → STT → post-processing). +- *Parcours / formation* : voir [[ft-linear-regression]] et [[piscine-python-data-science]]. --- @@ -66,6 +93,6 @@ Animé par une passion pour l’intelligence artificielle et ses innombrables po ## Liens - [[MOC-Competences]] — vue d'ensemble des compétences +- [[MOC-Ia]] — domaine *ia* - [[MOC-Algorithmique]] — domaine *algorithmique* - [[MOC-Ecole-42]] — domaine *ecole-42* -- [[MOC-Ia]] — domaine *ia* diff --git a/vault-grasbot/README.md b/vault-grasbot/README.md index 5c35cb8..56e8eb3 100644 --- a/vault-grasbot/README.md +++ b/vault-grasbot/README.md @@ -10,7 +10,7 @@ graph + BM25, sans embeddings. ## Structure - `00-MOC/` — Maps of Content (hubs thématiques) -- `10-Projets/` — 17 projets Strapi + **2 notes manuelles** (`10-Projets/grasbot.md`, `10-Projets/fernandgrascalvet-com.md`) +- `10-Projets/` — 17 projets Strapi + **6 notes manuelles** (`grasbot.md`, `newsletter-ia.md`, `transcription-video.md`, `fernandgrascalvet-com.md`, `ft-linear-regression.md`, `piscine-python-data-science.md`) - `20-Competences/` — 4 compétences extraites de Strapi - `30-Parcours/` — Parcours personnel, CV, bio (version curatée `source: manual`) - `40-Glossaire/` — Termes techniques (vide, à remplir manuellement ou depuis Strapi plus tard) diff --git a/vault-grasbot/TAXONOMIE.md b/vault-grasbot/TAXONOMIE.md index 4edee4e..9801aca 100644 --- a/vault-grasbot/TAXONOMIE.md +++ b/vault-grasbot/TAXONOMIE.md @@ -52,6 +52,21 @@ actuellement utilisés : | `concurrence` | Threads, mutex, synchronisation | | `docker` | Conteneurisation | | `makefile` | Build system GNU Make | +| `chatbot` | Assistants conversationnels | +| `ollama` | Serveur de LLM local | +| `fastapi` | API Python FastAPI | +| `langfuse` | Observabilité LLM | +| `nextjs` | Framework React Next.js | +| `strapi` | CMS headless Strapi | +| `portfolio` | Site portfolio personnel | +| `qwen3` | Modèle LLM Qwen3 | +| `listmonk` | Diffusion de newsletters open-source | +| `directus` | CMS headless Directus | +| `newsletter` | Chaîne de publication newsletter | +| `openwebui` | Open WebUI (front LLM) | +| `ovh` | OVHcloud AI Endpoints | +| `transcription` | Speech-to-text / sous-titres | +| `multimedia` | Traitement audio / vidéo | ## Aliases (`aliases:`)