Skip to content

Latest commit

 

History

History
85 lines (67 loc) · 3.89 KB

File metadata and controls

85 lines (67 loc) · 3.89 KB

Project Meta — P5 Moteur de Réponse Support Adaptatif

Document interne au portfolio. Non visible sur GitHub. Dernière mise à jour : 2026-06-07


1. Vue d'ensemble

Type d'agent : Learning (Russell & Norvig) Problème métier : Les équipes support envoient des réponses standardisées sans contexte. Pas d'amélioration mesurée. Format : API + Dashboard + Docker Compose

2. Walking Skeleton

Validé le 2026-06-06. Script minimal walking-skeleton.py qui :

  1. Définit 6 tickets de test (3 techniques, 3 émotionnels)
  2. Boucle Performance → Critic → Learning → Problem Generator sur 5 epochs
  3. Stocke les poids dans SQLite
  4. Affiche la progression : "Epoch 5/5 → avg: 3.25 (+0.61 vs epoch 1)"

Résultats : +0.61/5 (+21%) sur 6 tickets, +0.67/5 (+25%) sur holdout jamais vu.

3. Architecture Decisions

Décision Alternative Raison
Gemini pour Performance Element OpenAI GPT-4o Gemini 2.5 Flash plus rapide et moins cher pour la génération
OpenAI pour Critic Gemini response_format={"type": "json_object"} fiable uniquement sur OpenAI
SQLite (dev) / PostgreSQL (prod) MongoDB Relationnel suffit pour poids + historique ; pas de documents complexes
Pas de vector DB (pgvector) pgvector, Chroma Embedding + similarité cosinus en Python suffit pour < 1000 épisodes
Sélection proportionnelle pondérée Top-K greedy Garantit l'exploration des instructions moins utilisées
Critic sévère (moyenne < 3.0) Critic neutre Crée la variance de scores nécessaire à l'apprentissage tabulaire
Episode bonus catégorie ×1.2 Pas de bonus Améliore le retrieval intra-catégorie sans durcir le seuil
Prompt history en SQLite MongoDB Simple, pas de requêtes complexes, joint à l'historique des réponses

4. Limitations (internes)

  • Pas de RLHF humain : le Critic est automatique uniquement
  • Embedding fait via API Gemini (pas local) : latence ~500ms par épisode
  • Pas de vector DB : le retrieval scan les 20 meilleurs épisodes et calcule la similarité en Python
  • Le Problem Generator n'est pas appelé automatiquement (appel manuel via l'API)
  • Pas d'évaluation automatique de la courbe d'apprentissage (détermination de convergence)
  • Le multi-LLM routing ne supporte que 2 providers (Gemini + OpenAI)

5. Couverture Coverage Matrix

  • Type agent : Learning ✅ (Russell & Norvig)
  • BDD : SQLite, PostgreSQL
  • Providers : Gemini, OpenAI
  • Patterns : Learning loop (4 composants), Memory hierarchy, Eval framework, Explainable AI
  • Compétences : Prompt engineering, Embeddings, Feedback loop design, Learning architecture, Eval framework design

6. Build

pytest tests/          # 5 tests → OK
cd dashboard && npm run build  # tsc + vite → OK

7. Structure des fichiers

agents/p5-support/
├── walking-skeleton.py      # Démo autonome (zéro infra)
├── src/
│   ├── main.py              # FastAPI app
│   ├── router.py            # 14 endpoints API
│   ├── domain.py            # Dataclasses (Ticket, EvalResult, etc.)
│   ├── config.py            # Constantes (API keys, learning rate)
│   ├── db.py                # SQLite + PostgreSQL adapter
│   ├── performance.py       # Performance Element (Gemini)
│   ├── critic.py            # Critic (OpenAI)
│   ├── learning.py          # Learning Element (poids tabulaires)
│   ├── problem_gen.py       # Problem Generator (nouvelles instructions)
│   ├── memory.py            # Mémoire épisodique (embeddings)
│   ├── routing.py           # Multi-LLM routing
│   └── prompt_history.py    # Snapshots de prompts
├── dashboard/               # React + Vite + TypeScript
├── tests/                   # pytest (6 tests)
├── Dockerfile
├── docker-compose.yml
└── README.md