Que fait architecte-pipeline-recsys ?
Une compétence de spécification et d'échafaudage pour construire des pipelines de recommandation, classement et flux composables. Elle encode le modèle en six étapes — Source → Hydrator → Filtre → Scoreur → Sélecteur → Effet secondaire — popularisé par l'algorithme open source For You de xAI (Apache 2.0). Cette compétence est une réimplémentation indépendante du modèle (MIT) — aucun code copié de l'original.
Amont : https://github.com/mturac/recsys-pipeline-architect
Quand l'utiliser
- L'utilisateur souhaite construire tout système qui sélectionne « les K meilleurs éléments pour un utilisateur/contexte »
- L'utilisateur demande « comment classer X » ou décrit un problème de flux/personnalisation
- L'utilisateur dispose d'une fonction de score et a besoin de la plomberie du pipeline autour
- L'utilisateur souhaite passer d'un score de pertinence unique à une prédiction multi-action avec des poids ajustables
- L'utilisateur encapsule un scoreur LLM/ML et a besoin de filtres, d'hydrateurs, d'effets secondaires et d'un échafaudage exécutable dans sa pile (TypeScript / Go / Python)
- Déclencheurs : « système de recommandation », « algorithme de flux », « pipeline de classement », « pour vous », « pipeline de candidats », « recommandateur de contenu », « architecture de pipeline pour système de recommandation », « reranker de récupération RAG »
Quand NE PAS l'utiliser
- Travail d'architecture de modèle (conception de transformeur, récupération à deux tours, entraînement d'embedding) — cette compétence est une plomberie autour du modèle, pas le modèle lui-même
- Pipelines d'entraînement ML purs — la fonction de score est la responsabilité de l'utilisateur
- Exploitation d'un pipeline déployé (surveillance, mise à l'échelle automatique) — hors scope
Le cadre en six étapes
| # | Étape | Travail | Parallèle ? |
|---|---|---|---|
| 1 | Source | Récupérer les candidats depuis une ou plusieurs origines | Oui — plusieurs sources s'exécutent en parallèle |
| 2 | Hydrator | Enrichir chaque candidat avec les métadonnées nécessaires au filtrage et au score | Oui — les hydrateurs indépendants s'exécutent en parallèle |
| 3 | Filtre | Supprimer les candidats qui ne doivent jamais être affichés (bloqués, expirés, doublons, inéligibles) | Séquentiel — chaque filtre voit moins d'éléments |
| 4 | Scoreur | Attribuer un ou plusieurs scores à chaque candidat survivant | Séquentiel — les scoreurs ultérieurs voient les scores précédents |
| 5 | Sélecteur | Trier par score final, retourner les K premiers | Opération unique |
| 6 | Effet secondaire | Mettre en cache les IDs servis, journaliser les impressions, émettre des événements, mettre à jour les compteurs | Asynchrone — ne doit jamais bloquer la réponse |
Pourquoi cet ordre exact
- Sources avant hydratation : savoir quels candidats existent avant de payer pour les enrichir
- Hydratation avant filtrage : de nombreux filtres nécessitent des métadonnées que la source n'a pas fournies
- Filtrage avant score : le score est l'étape coûteuse ; éliminer d'abord les inéligibles
- Chaîne de scoreurs (pas un seul scoreur) : les systèmes réels composent le score ML + le reranking de diversité + les règles métier
- Sélecteur après score : maintient le score déterministe et mis en cache
- Effets secondaires en dernier et asynchrones : les effets secondaires ne doivent jamais bloquer la réponse utilisateur
Workflow lors de l'invocation
Guider l'utilisateur à travers ces huit étapes :
- Clarifier le cas d'usage (un tour, trois questions) : éléments classés ? contexte d'entrée ? langage/environnement ?
- Identifier les sources de candidats : généralement en réseau (suivis/possédés/abonnés) + hors réseau (récupération ML / tendances / similaires-à-aimés)
- Lister les hydratations nécessaires : pour chaque filtre et scoreur, de quelles données a-t-il besoin que la source n'a pas fournies ?
- Lister les filtres : doublon, soi-même, âge, bloc/muet, déjà servi, éligibilité. L'ordre compte : pas cher avant cher.
- Concevoir la chaîne de scoreurs : principal (ML) → combineur (multi-action avec poids) → diversité → règles métier
- Sélecteur : tri descendant par score final, prendre les K premiers (ou mélange stratifié pour en réseau/hors réseau)
- Effets secondaires : mettre en cache les IDs servis, émettre des événements d'impression, mettre à jour les compteurs, journaliser les analytiques — tout en « fire-and-forget »
- Générer l'échafaudage dans la pile de l'utilisateur
Compromis clés à exposer (ne pas les défauter silencieusement)
1. Score unique vs prédiction multi-action
- Score unique : entraîner un modèle pour prédire la pertinence. Pour changer le comportement → réentraîner.
- Multi-action : prédire
P(action)pour plusieurs actions (lire, aimer, partager, ignorer, signaler), combiner avec des poids au moment du service. Pour changer le comportement → changer les poids. Pas de réentraînement.
Le système X For You utilise multi-action avec des poids positifs et négatifs. Recommander multi-action lorsque l'utilisateur s'attend à ajuster fréquemment.
2. Isolation des candidats lors du score
- Isolé : chaque candidat est noté indépendamment. Déterministe, mis en cache.
- Conjoint : les candidats s'influencent mutuellement pendant le score (par exemple, transformeur sur le lot). Plus expressif mais non déterministe entre les lots.
Par défaut, isolé. Conjoint seulement s'il y a une raison spécifique (par exemple, diversité explicite tenant compte du lot).
3. En ligne vs hors ligne
- Au moment de la requête (en ligne) : le pipeline s'exécute à chaque requête. Budget de latence : 100–300 ms. Par défaut.
- Pré-calculé (batch hors ligne) : le pipeline s'exécute périodiquement, résultats en cache. Latence plus faible, fraîcheur plus faible.
- Hybride : récupération des candidats hors ligne, classement en ligne.
Règles strictes
- Ne pas inventer de chiffres de référence. « Combien plus rapide ? » → « dépend de la charge de travail, testez-le vous-même. »
- Discipline d'attribution. Lorsque le modèle est référencé, attribuer comme « popularisé par l'algorithme open source For You de xAI » /
github.com/xai-org/x-algorithm(Apache 2.0). - Pas d'utilisation de marque déposée. Ne pas nommer l'artefact de l'utilisateur « de type X » ou utiliser la marque « For You ». Le modèle est libre ; la marque ne l'est pas. Suggestion de nom : « pipeline de candidats », « pipeline de flux », « pipeline de classement », « pipeline de système de recommandation ».
- Exposer les compromis. Multi-action vs unique, isolé vs conjoint, en ligne vs hors ligne — ne jamais défauter silencieusement.
- L'échafaudage généré doit s'exécuter. Pas de pseudocode présenté comme du code.
- L'ordre des filtres compte. Pas cher avant cher. Universel avant spécifique à l'utilisateur.
- Les effets secondaires ne bloquent jamais. Envelopper dans des motifs fire-and-forget (goroutines / promesses sans await / tâches asyncio).
Anti-patrons
- Score avant filtrage (gaspille du calcul sur des candidats qui seront de toute façon supprimés)
- Effets secondaires synchrones (écritures de cache / émissions d'impressions bloquant la réponse)
- Un score unique de « pertinence » alors que le produit doit ajuster plusieurs objectifs (engagement vs sécurité vs diversité vs publicités)
- Score conjoint par défaut (non déterministe, plus difficile à mettre en cache, ne se compose pas avec des étapes de reranking)
- Générer du pseudocode « pour illustrer » — l'échafaudage doit réellement s'exécuter
Contenu amont
Le dépôt amont à https://github.com/mturac/recsys-pipeline-architect contient :
SKILL.mdcomplet avec le workflow complet en 8 étapes- 5 documents de référence chargés à la demande : interfaces dans 4 langages (TS/Go/Python/Rust), modèle de score multi-action, isolation des candidats, livre de recettes des filtres (12 patrons), livre de recettes des scoreurs (somme pondérée, MMR, pénalité de diversité, débiais de position)
- 3 échafaudages d'exemple exécutables, tous verts sur leur suite de tests :
- Plugin Strapi v5 (TypeScript / Jest — 3/3 passent)
- Pipeline compatible Zentra (Go avec génériques — 3/3 passent)
- Priorisateur de tâches PMAI (Python / FastAPI / pytest — 3/3 passent)
- Version v0.1.0 taggée
- Licence MIT ; modèle attribué à l'algorithme X For You de xAI (Apache 2.0)
Installation via skills.sh : npx skills add mturac/recsys-pipeline-architect