Ranges

La strategia del solver esatto per 22 mani al river accanto alle mosse scelte da Claude Haiku e Claude Sonnet: uno fa check con quasi ogni mano, l'altro punta sempre forte

Panoramica

Uno studio di computer vision e teoria dei giochi: un assistente per macOS che legge un tavolo di poker dalle catture dello schermo e suggerisce la mossa.

Stack

Python, Rust, visione di Gemini, Claude (solo benchmark), cattura dello schermo su macOS

Cosa ho realizzato

  • Cattura dello schermo calibrata: le zone del tavolo vengono ritagliate, unite in un'unica immagine e inviate a un modello di visione che restituisce lo stato del tavolo in JSON.
  • Controlli locali su ciò che il modello legge: dorso delle carte, bottone del dealer e piatto vengono verificati dai pixel prima di decidere qualsiasi cosa.
  • Decisioni preflop esatte da tabelle del solver in cache, consultate invece che calcolate.
  • Spot postflop heads-up risolti da un solver Rust a versione fissata, con un server remoto opzionale per gli spot più pesanti.
  • Benchmark offline che confrontano Claude Haiku e Sonnet con il solver esatto, con le chiamate a pagamento ai modelli disattivate di default.

Scelte chiave

  • La prima versione chiedeva la mossa al modello, e non ha funzionato. Messi a confronto con un solver esatto, Claude Haiku e Sonnet si riducevano ad azioni quasi costanti: in uno spot al river uno faceva check con 21 mani su 22 e l'altro puntava con tutte e 22, e su 100 casi coincidevano con il solver solo tra il 57 e il 61% delle volte.
  • Così ora il modello legge soltanto il tavolo, e la mossa è calcolata da dati del solver verificati. In modalità strict nessun modello linguistico viene mai interpellato per la mossa.
  • Fail closed: quando uno spot non è supportato o è solo approssimato, lo dice invece di tirare a indovinare.

Un progetto di studio, non pensato per partite vere, dove le regole delle sale vietano qualsiasi aiuto.