
Objetivo de esta entrada
Publicamos el código fuente que usamos en los experimentos de la IA de sudoku. El código solo se carga cuando abres un archivo.
Modelos utilizados
- Qwen3-VL-2B-Instruct: se usó para el primer entrenamiento (lora_stoku), el entrenamiento por ensayo y error (lora_move), la búsqueda de casillas seguras (lora_cell) y las versiones 2B de la lectura del tablero y del juicio del número 1.
- Qwen3-VL-8B-Instruct: se entrenó para la lectura del tablero (lora_board_read_8b) y las casillas imposibles por número (lora_digit1_illegal_8b). La resolución de la entrada 4 se hizo con el adaptador de 15 ciclos, y la importación desde foto usa el adaptador de lectura del tablero.
- LoRA: peft, r=8, alpha=16. Todos los adaptadores usan la misma configuración.
- Qwen2.5-1.5B-Instruct: distingue si un mensaje del chat web es una petición de jugada.
- Gemma 4 (31B, E4B, mlx 4bit): solo se probó si podía leer las coordenadas del tablero.
- Jugadas en la web: por ahora se eligen las jugadas seguras solo con código, sin el VLM.
Estructura de carpetas
- dataset_*.py en la raíz: generación de datos de entrenamiento
- *_train_loop.py y train_vlm.py en la raíz: entrenamiento LoRA y repetición de ciclos
- sudoku_engine.py, sudoku_human_solver.py, vlm_digit_strategy.py: generación de sudokus, resolución al estilo humano y búsqueda de jugadas seguras
- human_judge_*.py: la demo de juicios de la entrada 4
- sudoku_vlm_server.py, chat_bridge_server.py: servidor de VLM y servidor de chat
- main.py, main_window.py, photo_board_*.py: app de PyQt6 e importación desde foto
- web: pantalla del sudoku web en Next.js, registros de resolución (db.ts) y panel de chat con la IA
- solve.md: documento que describe cómo resuelven las personas
La configuración de despliegue del servidor, los scripts de monitorización y automatización, los datos de entrenamiento y los registros, y los pesos de los modelos quedan fuera de lo publicado. También se omitieron el código de operación web, como los anuncios y la lista de otros juegos, y los archivos de configuración, por lo que algunos import apuntan a archivos no publicados.
Código fuente completo
75 archivos · 19.630 líneas — abre una carpeta y haz clic en un archivo para cargar su código.
Raíz del proyecto
board_read_demo.py
Cargando el código…
chat_bridge_server.py
Cargando el código…
dataset_digit_illegal.py
Cargando el código…
dataset_experience.py
Cargando el código…
dataset_human_solver.py
Cargando el código…
dataset_sudoku_coords.py
Cargando el código…
dataset_sudoku_read.py
Cargando el código…
dataset_sudoku.py
Cargando el código…
human_judge_one_game.py
Cargando el código…
human_judge_solve_cycle.py
Cargando el código…
main_window.py
Cargando el código…
main.py
Cargando el código…
make_board_snapshot.py
Cargando el código…
photo_board_prep.py
Cargando el código…
photo_board_read.py
Cargando el código…
README.md
Cargando el código…
requirements-train.txt
Cargando el código…
requirements-vlm.txt
Cargando el código…
requirements.txt
Cargando el código…
solve.md
Cargando el código…
sudoku_engine.py
Cargando el código…
sudoku_human_solver.py
Cargando el código…
sudoku_vlm_server.py
Cargando el código…
sudoku_vlm_solver.py
Cargando el código…
train_vlm.py
Cargando el código…
vlm_agent.py
Cargando el código…
vlm_board_read_sim.py
Cargando el código…
vlm_board_read_train_loop.py
Cargando el código…
vlm_board.py
Cargando el código…
vlm_cell_train_loop.py
Cargando el código…
vlm_coord_probe_gemma.py
Cargando el código…
vlm_coord_sim.py
Cargando el código…
vlm_curriculum_loop.py
Cargando el código…
vlm_diag.py
Cargando el código…
vlm_digit_illegal_sim.py
Cargando el código…
vlm_digit_illegal_train_loop.py
Cargando el código…
vlm_digit_strategy.py
Cargando el código…
vlm_experience.py
Cargando el código…
vlm_human_probe.py
Cargando el código…
vlm_human_train_loop.py
Cargando el código…
vlm_human.py
Cargando el código…
vlm_loader.py
Cargando el código…
vlm_play_sim.py
Cargando el código…
vlm_play_train_loop.py
Cargando el código…
vlm_prompt.py
Cargando el código…
vlm_protocol.py
Cargando el código…
vlm_qwen8b_base_probe.py
Cargando el código…
vlm_stage_sim.py
Cargando el código…
web/
web/next.config.mjs
Cargando el código…
web/package.json
Cargando el código…
web/postcss.config.mjs
Cargando el código…
web/src/app/api/chat/route.ts
Cargando el código…
web/src/app/api/session/move/route.ts
Cargando el código…
web/src/app/api/session/route.ts
Cargando el código…
web/src/app/globals.css
Cargando el código…
web/src/app/layout.tsx
Cargando el código…
web/src/app/page.tsx
Cargando el código…
web/src/components/AiChatPanel.tsx
Cargando el código…
web/src/components/BottomNav.tsx
Cargando el código…
web/src/components/GameScreen.tsx
Cargando el código…
web/src/components/HomeScreen.tsx
Cargando el código…
web/src/components/Logo.tsx
Cargando el código…
web/src/components/NumberPad.tsx
Cargando el código…
web/src/components/SettingsScreen.tsx
Cargando el código…
web/src/components/SudokuApp.tsx
Cargando el código…
web/src/components/SudokuBoard.tsx
Cargando el código…
web/src/lib/db.ts
Cargando el código…
web/src/lib/device-id.ts
Cargando el código…
web/src/lib/move-kinds.ts
Cargando el código…
web/src/lib/notes.ts
Cargando el código…
web/src/lib/sudoku.ts
Cargando el código…
web/src/lib/types.ts
Cargando el código…
web/src/types/node-sqlite.d.ts
Cargando el código…
web/tailwind.config.ts
Cargando el código…
web/tsconfig.json
Cargando el código…
COMMENTS · CHAPTER 06
El código fuente completo y los modelos utilizados 0 comentarios
Todavía no hay comentarios. Deja una pregunta o algo que quieras añadir.
Para publicar un comentario, empieza con Google y registra un apodo y un correo.
Empezar con Google