Un agent IA qui joue au poker, à visage découvert.
Bluffy est un joueur de No-Limit Hold'em autonome, engagé sur l'Arena poker de dev.fun. À chaque main, un modèle de langage lit la table, pèse les cotes, choisit son action et écrit en une ligne pourquoi. Rien n'est scripté, et tout se regarde en direct. Un projet interne zKorp, conçu et développé de bout en bout.

Le tableau de bord public : la table en direct, le fil de réflexion de l'agent main après main, et sa courbe de jetons.
Un modèle qui improvise perd de l'argent
Le réflexe, pour faire jouer une IA au poker, c'est de donner toute la table à un modèle de langage et de lui demander quoi faire. C'est rapide à construire et ça perd des jetons. Une bonne partie du poker relève de mathématiques déjà résolues, et un modèle qui invente ses mises face à un adversaire compétent lui offre son argent. Le bot entièrement scripté a le défaut inverse. Il joue correctement, mais personne ne peut dire pourquoi il a misé.
La recherche conseille, le modèle décide.
Bluffy sépare les rôles. Une couche de recherche prépare le dossier de la main : ranges préflop chiffrées, texture du tableau, historique des adversaires. Elle le remet au modèle sous forme de chiffres, pas d'un prompt vague. Le modèle tranche seul, et une seule vérification peut encore corriger son coup, celle de la légalité. Chaque décision reste explicable, parce qu'elle est écrite au moment où elle est prise.
Un noyau Monte-Carlo écrit en Rust chiffre les équités préflop, environ 500 fois plus vite que notre première version en Python. S'y ajoutent la texture du tableau et un historique de comportement sur chaque adversaire.
Le modèle reçoit ce dossier et joue la main : action, taille de mise, et une ligne d'explication. Il dispose de toute l'horloge d'action, moins une demi-seconde réservée à l'envoi du coup.
Si le modèle dépasse le temps, qu'un service tombe ou qu'une réponse est illisible, une heuristique déterministe prend le relais et ne joue qu'un coup sûr : suivre à bon prix, sinon passer. Jamais de relance à l'aveugle.

Rejouer une main terminée : chaque décision, la lecture de l'adversaire et le plan qui l'a motivée.
Quatre runtimes, une seule boucle de décision.
Un superviseur Bun et TypeScript, seul serveur du projet. Il assemble le contexte de la main, appelle le modèle, valide le coup et archive tout dans SQLite. Il tient plusieurs compétitions en parallèle, un processus par table.
Un binaire Rust qui échantillonne les équités préflop en Monte-Carlo. Le runtime de décision, en Python et bibliothèque standard uniquement, s'y branche et retombe sur une version pure Python si le binaire est absent.
Un tableau de bord React en lecture seule : la table en direct, le fil de réflexion, les statistiques de saison, la courbe de jetons et le replay de chaque main. Les cartes de l'agent restent face cachée jusqu'à l'abattage, pour ne rien donner aux adversaires.

Un agent qui manipule de l'argent ne s'autorise rien.
Bluffy ne s'assoit jamais à une table sans démarrage explicite, ne quitte jamais un siège en cours de partie, ne dépense jamais d'argent réel de sa propre initiative (seules les recaves gratuites sont automatiques) et ne laisse rien fuiter : les cartes des adversaires ne sont jamais stockées, les siennes restent cachées jusqu'à l'abattage. Ces règles sont dans le code, pas dans une note d'intention.
Des agents autonomes sous contraintes de production.
Le poker n'est qu'un tableau de score particulièrement direct : décider juste, dans un délai dur, en restant fiable quand une dépendance tombe, face à des adversaires qui cherchent à vous battre. C'est exactement ce qu'on demande aux agents qu'on met en production chez zKorp, d'Hydra à nos intégrations métier.
Découvrir notre expertise IA agentique →