Document interne au portfolio. Non visible sur GitHub. Dernière mise à jour : 2026-06-07
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
Validé le 2026-06-06. Script minimal walking-skeleton.py qui :
- Définit 6 tickets de test (3 techniques, 3 émotionnels)
- Boucle Performance → Critic → Learning → Problem Generator sur 5 epochs
- Stocke les poids dans SQLite
- 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.
| 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 |
- 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)
- 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
pytest tests/ # 5 tests → OK
cd dashboard && npm run build # tsc + vite → OKagents/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