
Objetivo deste post
Publicamos o código-fonte usado nos experimentos da IA de sudoku. O código só é carregado quando você abre um arquivo.
Modelos usados
- Qwen3-VL-2B-Instruct: usado no primeiro treino (lora_stoku), no treino por tentativa e erro (lora_move), na busca de casas certas (lora_cell) e nas versões 2B da leitura de tabuleiro e do julgamento do número 1.
- Qwen3-VL-8B-Instruct: treinado para leitura de tabuleiro (lora_board_read_8b) e para casas proibidas por número (lora_digit1_illegal_8b). A resolução do post 4 usou o adaptador de 15 ciclos, e a importação por foto usa o adaptador de leitura de tabuleiro.
- LoRA: peft, r=8, alpha=16. Todos os adaptadores usam a mesma configuração.
- Qwen2.5-1.5B-Instruct: decide se uma mensagem do chat na web é um pedido de jogada.
- Gemma 4 (31B, E4B, mlx 4bit): testado apenas para ver se conseguia ler as coordenadas do tabuleiro.
- Jogada na web: hoje é escolhida apenas por código, sem o VLM.
Estrutura de pastas
- dataset_*.py na raiz: geração de dados de treino
- *_train_loop.py e train_vlm.py na raiz: treino LoRA e repetição de ciclos
- sudoku_engine.py, sudoku_human_solver.py, vlm_digit_strategy.py: geração de quebra-cabeças, resolução no estilo humano, busca de jogadas certas
- human_judge_*.py: a demonstração de julgamento do post 4
- sudoku_vlm_server.py, chat_bridge_server.py: servidor de VLM e servidor de chat
- main.py, main_window.py, photo_board_*.py: app em PyQt6 e importação por foto
- web: tela do sudoku na web em Next.js, registros de resolução (db.ts), painel de chat com a IA
- solve.md: documento que descreve como as pessoas resolvem
As configurações de implantação do servidor, os scripts de monitoramento e automação, os dados de treino e logs e os pesos dos modelos ficaram de fora da publicação. O código de operação da web, como anúncios e a lista de outros jogos, e os arquivos de configuração também foram retirados, por isso alguns imports apontam para arquivos não publicados.
Código-fonte completo
75 arquivos · 19.630 linhas — abra uma pasta e clique em um arquivo para carregar o código.
Raiz do projeto
board_read_demo.py
Carregando o código…
chat_bridge_server.py
Carregando o código…
dataset_digit_illegal.py
Carregando o código…
dataset_experience.py
Carregando o código…
dataset_human_solver.py
Carregando o código…
dataset_sudoku_coords.py
Carregando o código…
dataset_sudoku_read.py
Carregando o código…
dataset_sudoku.py
Carregando o código…
human_judge_one_game.py
Carregando o código…
human_judge_solve_cycle.py
Carregando o código…
main_window.py
Carregando o código…
main.py
Carregando o código…
make_board_snapshot.py
Carregando o código…
photo_board_prep.py
Carregando o código…
photo_board_read.py
Carregando o código…
README.md
Carregando o código…
requirements-train.txt
Carregando o código…
requirements-vlm.txt
Carregando o código…
requirements.txt
Carregando o código…
solve.md
Carregando o código…
sudoku_engine.py
Carregando o código…
sudoku_human_solver.py
Carregando o código…
sudoku_vlm_server.py
Carregando o código…
sudoku_vlm_solver.py
Carregando o código…
train_vlm.py
Carregando o código…
vlm_agent.py
Carregando o código…
vlm_board_read_sim.py
Carregando o código…
vlm_board_read_train_loop.py
Carregando o código…
vlm_board.py
Carregando o código…
vlm_cell_train_loop.py
Carregando o código…
vlm_coord_probe_gemma.py
Carregando o código…
vlm_coord_sim.py
Carregando o código…
vlm_curriculum_loop.py
Carregando o código…
vlm_diag.py
Carregando o código…
vlm_digit_illegal_sim.py
Carregando o código…
vlm_digit_illegal_train_loop.py
Carregando o código…
vlm_digit_strategy.py
Carregando o código…
vlm_experience.py
Carregando o código…
vlm_human_probe.py
Carregando o código…
vlm_human_train_loop.py
Carregando o código…
vlm_human.py
Carregando o código…
vlm_loader.py
Carregando o código…
vlm_play_sim.py
Carregando o código…
vlm_play_train_loop.py
Carregando o código…
vlm_prompt.py
Carregando o código…
vlm_protocol.py
Carregando o código…
vlm_qwen8b_base_probe.py
Carregando o código…
vlm_stage_sim.py
Carregando o código…
web/
web/next.config.mjs
Carregando o código…
web/package.json
Carregando o código…
web/postcss.config.mjs
Carregando o código…
web/src/app/api/chat/route.ts
Carregando o código…
web/src/app/api/session/move/route.ts
Carregando o código…
web/src/app/api/session/route.ts
Carregando o código…
web/src/app/globals.css
Carregando o código…
web/src/app/layout.tsx
Carregando o código…
web/src/app/page.tsx
Carregando o código…
web/src/components/AiChatPanel.tsx
Carregando o código…
web/src/components/BottomNav.tsx
Carregando o código…
web/src/components/GameScreen.tsx
Carregando o código…
web/src/components/HomeScreen.tsx
Carregando o código…
web/src/components/Logo.tsx
Carregando o código…
web/src/components/NumberPad.tsx
Carregando o código…
web/src/components/SettingsScreen.tsx
Carregando o código…
web/src/components/SudokuApp.tsx
Carregando o código…
web/src/components/SudokuBoard.tsx
Carregando o código…
web/src/lib/db.ts
Carregando o código…
web/src/lib/device-id.ts
Carregando o código…
web/src/lib/move-kinds.ts
Carregando o código…
web/src/lib/notes.ts
Carregando o código…
web/src/lib/sudoku.ts
Carregando o código…
web/src/lib/types.ts
Carregando o código…
web/src/types/node-sqlite.d.ts
Carregando o código…
web/tailwind.config.ts
Carregando o código…
web/tsconfig.json
Carregando o código…
COMMENTS · CHAPTER 06
O código-fonte completo e os modelos usados 0 comentários
Ainda não há comentários. Deixe uma pergunta ou algo que queira acrescentar.
Para publicar um comentário, comece com o Google e registre um apelido e um e-mail.
Começar com o Google