Les chatbots IA génériques ne connaissent rien à votre bibliothèque de jeux. Ils hallucinent des titres, inventent des prix, et recommandent des jeux sans savoir ce que vous possédez déjà.
J'ai voulu faire l'inverse : un assistant qui connaît votre collection, comprend vos goûts, et donne des prix réels , pas des estimations.
Voici comment j'ai construit VoxBot, le conseiller IA de VoxGaming, une plateforme communautaire française dédiée aux jeux vidéo.
Le problème
Sur VoxGaming, les membres gèrent leur collection (30 000+ références, de la Master System à la PS5), consultent la cote argus des jeux vidéo, et achètent/vendent sur la marketplace. Mais naviguer dans un catalogue aussi dense, c'est fastidieux.
L'idée : un chatbot qui comprend le contexte du joueur et lui répond comme un pote passionné le ferait.
L'architecture en 30 secondes
Navigateur → Serveur de streaming (SSE) → Llama 3.3 (vLLM) → Backend PHP/MySQL
- Frontend : interface chat intégrée au site, streaming Server-Sent Events
- Serveur local : RTX 4090 dédiée, héberge le modèle et relaie le flux token par token
- LLM : Llama 3.3 70B, quantifié en 4-bit (AWQ) pour tenir en VRAM, servi via vLLM
- Backend : PHP natif, MySQL
Pourquoi un serveur local ? On voulait garder le contrôle total sur le modèle et les coûts. Une RTX 4090 avec Llama 3.3 quantifié revient bien moins cher que les API cloud sur le long terme, et on maîtrise la latence.
Le truc clé : le profil joueur
Avant chaque conversation, on construit un profil du membre à partir de sa collection. Voici à quoi ressemble le contexte injecté dans le prompt système :
{
"member": {
"genres": { "RPG": 0.45, "Action": 0.30, "Aventure": 0.15, "Sport": 0.10 },
"platforms": ["PS5", "Switch", "Game Boy", "SNES"],
"behavior": "collector",
"collection_size": 127,
"wishlist_size": 23
}
}
On le construit à partir de 3 analyses :
- Genres préférés : distribution pondérée extraite de sa collection
- Plateformes : ses consoles actives, triées par nombre de jeux
- Comportement : ratio jeux possédés vs wishlist → joueur ou collectionneur
L'IA sait immédiatement à qui elle parle. Quand un membre demande "un bon RPG", elle ne recommande pas Skyrim à quelqu'un qui le possède déjà.
Tool calling : donner des yeux à l'IA
L'IA ne se contente pas de discuter. Elle a accès à plusieurs outils pour interroger la base en temps réel :
- Recherche catalogue : trouver un jeu par nom, genre ou plateforme
- Fiche détaillée : récupérer la cote, les avis, l'historique de prix d'un jeu
- Vérification collection : savoir si le membre possède déjà un jeu avant de le recommander
- Classements communautaires : consulter les tier lists créées par la communauté
- Modération : escalader automatiquement les contenus sensibles
L'outil de vérification de collection est critique : avant de recommander un jeu, l'IA vérifie systématiquement si le membre le possède, l'a mis en wishlist, ou l'a déjà noté. Ça évite le classique "Tu devrais essayer Zelda !" à quelqu'un qui y a mis 200 heures.
Le choix du modèle : un parcours du combattant
On a testé plusieurs configurations. Llama 3.1 8B était trop limité - il ignorait les instructions multi-étapes et sautait les vérifications de collection. Llama 3.1 70B en full precision ne tenait pas en VRAM sans sacrifier le batch size.
Le sweet spot : Llama 3.3 70B quantifié en 4-bit (AWQ), servi via vLLM. Il tient sur la 4090, le tool calling fonctionne nativement, et le TTFT (Time to First Token) tourne autour de 1-2 secondes. La génération complète d'une réponse avec tool calls prend 8-12 secondes au total.
La leçon : pour du conversationnel, un 70B quantifié bat un 8B full precision. La perte de qualité due à la quantification est négligeable comparée au gain en capacité de raisonnement.
Rate limiting et monétisation
Même en self-hosted, le GPU a un coût. On limite l'usage :
- Gratuit : quelques conversations/jour
- Premium (abonnés) : quota élargi
- Bêta-testeurs : accès étendu pour feedback
Chaque appel est loggé (tokens générés, outils appelés, temps de réponse). On monitore la charge GPU pour ajuster les quotas.
Un bug mémorable
Premier jour en prod : un membre demande "J'ai Zelda sur SNES ?". L'IA répond "Non" alors qu'il possède A Link to the Past. Le problème : le matching se faisait par titre exact. "The Legend of Zelda: A Link to the Past" ≠ "Zelda" dans la question.
Fix : matching par slug avec normalisation (retrait des sous-titres, articles, parenthèses). Les jeux cross-platform sont maintenant correctement identifiés.
Ce que j'ai appris
Le profil utilisateur change tout. Un LLM sans contexte donne des réponses génériques. Avec un profil structuré injecté dans le prompt, il devient pertinent.
Le streaming SSE est non-négociable pour un chat. Personne n'attend 10 secondes devant un spinner. Token par token, l'expérience est fluide.
Un 70B quantifié bat un 8B full precision pour du tool calling. La quantification 4-bit est un excellent compromis qualité/performance.
Le tool calling doit être défensif. Si l'IA peut skip une vérification, elle le fera un jour. Il faut que le workflow l'oblige à vérifier.
Stack
- Site : VoxGaming - plateforme communautaire gaming (collection, argus retrogaming, marketplace)
- API : Voxsoft - infrastructure technique (cotation, recherche, données)
- Wrapper PHP : e5k1m0/voxsoft-api - client open source pour l'API
- LLM : Llama 3.3 70B (self-hosted, vLLM, AWQ 4-bit)
- Hardware : RTX 4090 + SSE streaming
Si vous hésitez entre API cloud et self-hosted pour votre propre projet, je détaille les coûts et les compromis dans les commentaires.
VoxBot tourne en production depuis début 2026, ouvert à tous les membres. Si vous êtes curieux, créez un compte sur VoxGaming et posez-lui une question sur votre prochain jeu.
Des questions sur l'approche ? Je suis dans les commentaires.
Top comments (0)