
本文的目的
公开五子棋AI实验中使用的源代码。只有展开文件时才会加载代码。
使用的模型
- VLM:用Hugging Face上的Qwen3-VL-8B-Instruct下了25,413手对局着法。现在服务器以默认值Qwen3-VL-2B-Instruct运行。同时提供棋盘图像和文字棋盘,接收"row col"两个数字。
- LoRA:peft,r=8,alpha=16。只收集获胜一方的着法进行训练。在MPS上以fp16运行,损失变成了NaN。
- 本地AI:Qt应用中的C++ AiPlayer和网页上的ai.ts。这是一个先看获胜着法和必须挡住的着法,其余情况把四个方向的分数相加来选择的启发式。
- 引擎:黑白相同的禁手(三三、长连为禁手,四四允许),只有正好5子才算获胜。
文件夹结构
- src:Qt6/C++五子棋引擎、本地AI、棋盘界面、与VLM服务器通信的TCP客户端
- 根目录下的.py:VLM推理服务器(vlm_pva_server.py)、把日志转换为训练数据的dataset_omook.py、LoRA训练train_vlm.py、模型下载
- scripts:VLM坐标确认和文字棋盘客户端
- omook-web:Next.js网页对局界面、引擎(board.ts)、本地AI(ai.ts)、棋谱保存(db.ts)、VLM连接
服务器部署设置、监控与自动化脚本、对局日志和棋谱数据库、模型权重都不在公开范围内。广告和其他游戏列表等网站运营代码、配置文件也被去掉了,所以部分import指向的是未公开的文件。
完整源代码
38 个文件 · 8,212 行 — 展开文件夹后点击文件即可加载代码。
项目根目录
CMakeLists.txt
正在加载代码…
dataset_omook.py
正在加载代码…
download_qwen3vl.py
正在加载代码…
requirements.txt
正在加载代码…
train_vlm.py
正在加载代码…
TRAINING.md
正在加载代码…
vlm_pva_server.py
正在加载代码…
omook-web/
omook-web/app/api/game/[code]/route.ts
正在加载代码…
omook-web/app/api/game/route.ts
正在加载代码…
omook-web/app/api/vlm/move/route.ts
正在加载代码…
omook-web/app/globals.css
正在加载代码…
omook-web/app/layout.tsx
正在加载代码…
omook-web/app/page.tsx
正在加载代码…
omook-web/app/play/page.tsx
正在加载代码…
omook-web/app/play/play.module.css
正在加载代码…
omook-web/components/OmokBoard.module.css
正在加载代码…
omook-web/components/OmokBoard.tsx
正在加载代码…
omook-web/lib/ai.ts
正在加载代码…
omook-web/lib/board.ts
正在加载代码…
omook-web/lib/db.ts
正在加载代码…
omook-web/lib/gameTypes.ts
正在加载代码…
omook-web/lib/guest.ts
正在加载代码…
omook-web/lib/omk3Client.ts
正在加载代码…
omook-web/lib/renderBoardPng.ts
正在加载代码…
omook-web/lib/vlmClient.ts
正在加载代码…
scripts/
scripts/probe_vlm_coords.py
正在加载代码…
scripts/vlm_text_client.py
正在加载代码…
src/
src/aiplayer.cpp
正在加载代码…
src/aiplayer.h
正在加载代码…
src/boardmodel.cpp
正在加载代码…
src/boardmodel.h
正在加载代码…
src/boardwidget.cpp
正在加载代码…
src/boardwidget.h
正在加载代码…
src/main.cpp
正在加载代码…
src/mainwindow.cpp
正在加载代码…
src/mainwindow.h
正在加载代码…
src/tcpvlmclient.cpp
正在加载代码…
src/tcpvlmclient.h
正在加载代码…
COMMENTS · CHAPTER 05
完整源代码与使用的模型 评论 0
还没有评论。阅读时有疑问或想补充的内容,欢迎留言。
发表评论前,请用 Google 开始并登记昵称和邮箱。
用 Google 开始