E se a gente colocasse o ChatGPT para jogar poker?
Há um tempo atrás eu vi um estudante sendo expulso de Columbia por usar cheats em entrevistas, ele criou o https://cluely.com/, depois eu notei uma proposta parecida na https://www.perssua.com/p, e se a IA pode ver o que você vê então ela pode ter ajudar com seus cash games de $2 cents.
Para fazer isso eu construí uma aplicação que une visão computacional, inteligência artificial e teorias de jogos para criar um assistente em tempo real. O sistema analisa a mesa e dá recomendações ótimas baseadas em múltiplas abordagens de IA.
A aplicação utiliza uma arquitetura baseada no Model Context Protocol (MCP), que permite comunicação estruturada entre diferentes componentes de IA:
- Vision AI Module: Processa imagens da mesa de poker
- LLM Integration: Análise contextual com GPT-4 e Gemini
- GTO Engine: Cálculos de estratégia com Game Theory Optimal
Como funciona o fluxo de dados?
O interessante de entender aqui é que cada step do pipeline tem sua própria responsabilidade e eles se comunicam através do protocolo MCP. Deixe me quebrar isso melhor:
Screenshot → Vision AI → Data Extraction → Parallel Analysis (GTO + LLM) → Final Decision → Database → Visualization
1. Screenshot Capture: O usuário tira um screenshot da mesa (controle 100% manual - nada automático aqui). A imagem é redimensionada inteligentemente para 384-768px para otimizar velocidade vs qualidade.
2. Vision AI Processing: Em vez de usar OCR tradicional que quebra com qualquer mudança de interface, o GPT-4o olha para a imagem como um humano olharia. Ele extrai:
- Posição do jogador na mesa
- Cartas hole (As, Kh, etc)
- Community cards se houver
- Pot size atual
- Stack sizes
- Betting round (preflop, flop, turn, river)
- Ações dos oponentes
3. Data Extraction: Os dados são estruturados em JSON e validados. Se algo estiver inconsistente, o sistema aplica defaults sensatos (ex: se não conseguir determinar posição, assume BTN).
4. Parallel Analysis: Aqui roda duas engines simultaneamente:
- GTO Engine: Calcula a estratégia matematicamente ótima baseada na situação
- LLM Analysis: Considera fatores exploitativos, reads de oponentes, histórico da sessão
5. Final Decision: Um algoritmo combina as duas recomendações. Por padrão, 60% peso para GTO e 40% para LLM, mas isso pode ser ajustado.
6. Database Storage: Tudo é persistido no SQLite - a mão, as análises, métricas de performance, etc.
7. Visualization: Interface Streamlit atualiza em tempo real com gráficos de P&L, distribuição de ações, latência, etc.
Ferramentas MCP Disponíveis para a IA
O protocolo MCP é o que permite ao LLM enxergar e manipular diferentes partes do sistema - ela não apenas analisa, ela pode acessar dados históricos, calcular estratégias, e até simular cenários.
Analysis Tools
analyze_poker_table
: Processa imagens com Vision AIcalculate_gto_strategy
: Computa estratégias matematicamente ótimasevaluate_hand_strength
: Avalia força relativa das cartasassess_position_advantage
: Analisa benefícios posicionais
Database Tools
save_hand_data
: Persiste informações das mãosretrieve_player_stats
: Busca histórico de performanceexport_session_data
: Gera relatórios de sessãocleanup_old_data
: Mantém banco otimizado
Mas no final das contas como a IA interage?
A interação é muito mais sofisticada do que parece. O LLM não é apenas uma calculadora - ele é um jogador virtual no melhor dos casos que considera contexto, história, e psicologia.
1. Captura de Contexto
- O LLM recebe dados estruturados da mesa de poker
- Informações incluem: posição, cartas, pot size, stack sizes, ações dos oponentes
- Mas também: Histórico da sessão, tendências dos oponentes, meta-game
2. Análise Contextual
- Utiliza ferramentas MCP para acessar dados históricos: "Esse oponente já foldou para 3-bet 8 das últimas 10 vezes"
- Considera reads dos oponentes e tendências de jogo: "Villain está jogando mais tight depois de perder big pot"
- Aplica conhecimento de poker adaptado ao contexto específico: "Em posição tardia com stack profundo, posso ser mais agressivo"
3. Tomada de Decisão Híbrida
- Camada GTO: Base matemática sólida - "Com AKs em posição CO, frequência de 3-bet é 65%"
- Camada Exploitative: Adaptações baseadas em reads - "Mas esse oponente é passivo, posso diminuir para 40%"
- Camada Psicológica: Considera table image e meta-game - "Estou visto como tight, posso bluffar mais"
4. Feedback Loop Inteligente
- Resultados das decisões são salvos no banco de dados
- LLM aprende com outcomes para melhorar recomendações futuras: "3-bet funcionou 85% das vezes contra esse tipo de oponente"
- Sistema evolui continuamente através do uso
Input: Mesa com AA em posição BTN, pot de €12, villain fez raise
↓
MCP Tools: analyze_poker_table() + calculate_gto_strategy() + retrieve_player_stats()
↓
GTO Analysis: "3-bet 85% das vezes com AA, sizing 3.5x"
LLM Analysis: "GTO sugere 3-bet, mas histórico mostra villain fold 90% para 3-bet + ele está em tilt"
↓
Final Decision: 3-bet de €35 com 94% confidence + "exploiting villain's tight image"
O que torna isso interessante: O LLM pode usar as ferramentas MCP para "investigar" situações. Por exemplo, se vê um 4-bet, pode chamar retrieve_player_stats()
para ver quantas vezes esse oponente 4-betta, qual o sizing padrão, etc. É como ter um HUD infinitamente flexível.
Por que Vision AI em vez de OCR?
Eu até testei um OCR tradicional como o easyOCR mas a visão computacional consegue entender o contexto complexo com muita facilidade e é mais adaptável a várias interfaces.
O GPT-4o literalmente "vê" a mesa como um humano veria e extrai informações semanticamente. É como ter um humano olhando para a tela e te falando o que está acontecendo.
Eaí, funciona?
Bem, eu não cheguei a testar em mesas de cash games reais contra outros jogadores, por todas as questões que você pode imaginar. Até por isso vale a pena compartilhar essa ideia! Então eu desenvolvi um sistema de dados mockados que simula 100 mãos realistas de poker para validar todas as funcionalidades:
Geração de Dados Realistas
- Distribuição por Posições: BTN (20%), CO (18%), BB/SB (15% cada)
- Ranges de Cartas: Posições tardias com ranges mais amplos (BTN pode jogar 65% das mãos vs UTG com 15%)
- Pot Sizes: Variação realista baseada na street (preflop → river com multiplicadores 1x → 6x)
- Stack Sizes: 30bb a 250bb simulando diferentes cenários (short-stack vs deep-stack dynamics)
Simulação de Análises
- GTO Strategy: Baseada na força da mão e posição usando ranges simplificados mas realistas
- LLM Decisions: 70% concordância com GTO (spots óbvios), 30% adaptações exploitativas (spots marginais)
- Resultados: Simulados baseados na confidence da decisão (higher confidence = higher win rate)
Resultados dos Testes
Performance Metrics:
- ⚡ Latência: 50-500ms por análise (lembre-se que estávamos testando local)
- 🎯 Acurácia: 92% de confidence média nas recomendações
- 💰 ROI: €988.47 profit total em 100 mãos simuladas
- 📊 Consistência: Padrões coerentes entre diferentes posições
Validação Estratégica:
- Posições Tardias: Maior aggressividade e win rate (BTN 67% win rate vs UTG 45%)
- Blinds: Estratégias mais defensivas (BB com call frequency 23% vs BTN bet frequency 34%)
- GTO vs Exploitative: Balanço efetivo entre teoria e adaptação
Dados Interessantes dos Mocks:
- Mãos que seguiram 100% GTO: 62% win rate
- Mãos com adaptação LLM: 58% win rate (mas maior variance)
- Profit médio por posição: BTN (+€15.2), CO (+€12.1), BB (-€2.3), SB (-€4.8)
Otimizações e Lições Aprendidas
Performance Evolution:
- Versão 1: ~33s por análise (inviável para jogo ao vivo)
- Versão 2: ~10s com prompt otimizado
- Versão 3: ~4s com modos de velocidade (8x improvement!)
Prompt Engineering foi crucial:
- Inicial: 2000 tokens, instruções verbosas
- Final: 200 tokens, instruções ultra-concisas
- Key insight: "JSON only" + exemplos específicos > explicações longas
Alguns adendos
em média gastamos 900 tokens por imagem analisada, com uma média de 10000ms para analisar imagens inicialmente. E sem dúvidas não chegamos ao estado da arte, porque não integramos nosso MCP com uma aplicação GTO robusta como GTO+, por exemplo.
Mas, o sistema demonstra que é possível criar assistentes de IA úteis, mantendo controle total do usuário sobre quando e como as análises são realizadas.
Eu não acho uma boa ideia compartilhar o repo, para evitar dor de cabeça, mas se você quiser muito, deixa seu comentário ai!
minhas referencias para construir esse app
https://openai.github.io/openai-agents-python/mcp/
https://modelcontextprotocol.io/quickstart/server