DEV Community

Cover image for J'ai construit un conseiller gaming IA qui connaît vraiment votre collection
e5k1m0
e5k1m0

Posted on

J'ai construit un conseiller gaming IA qui connaît vraiment votre collection

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
Enter fullscreen mode Exit fullscreen mode
  • 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
  }
}
Enter fullscreen mode Exit fullscreen mode

On le construit à partir de 3 analyses :

  1. Genres préférés : distribution pondérée extraite de sa collection
  2. Plateformes : ses consoles actives, triées par nombre de jeux
  3. 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

  1. 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.

  2. 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.

  3. Un 70B quantifié bat un 8B full precision pour du tool calling. La quantification 4-bit est un excellent compromis qualité/performance.

  4. 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)