银行 社区服务 每日签到 会员排行 网站地图
  • 1437阅读
  • 6回复

关于巫妖机器人的设置跟使用

楼层直达
级别: 三级士官
[棋中红钻1级]发帖数量≥10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
39
金币
20
威望
0
贡献值
0
乐币
0
主题
2
— 本帖被 英仙座 从 象棋引擎 移动到本区(2022-06-27) —

巫妖机器人
Python 构建 Python 测试


Lichess Bot API和机器人之间的桥梁。


如何安装
Mac/Linux:
注意:仅支持 Python 3.7 或更高版本!
将 repo 下载到 lichess-bot 目录中。
导航到 cmd/Terminal: 中的目录cd lichess-bot。
安装点子:apt install python3-pip.
安装虚拟环境:pip install virtualenv.
设置虚拟环境:apt install python3-venv。
python3 -m venv venv # If this fails you probably need to add Python3 to your PATH.
virtualenv venv -p python3 # If this fails you probably need to add Python3 to your PATH.
source ./venv/bin/activate
python3 -m pip install -r requirements.txt
复制config.yml.default到config.yml.
编辑变量:supported_variants和时间控制:根据需要supported_tc从config.yml文件中编辑。
视窗:
这是有关如何安装机器人的视频。或者您可以继续执行以下步骤。
注意:仅支持 Python 3.7 或更高版本!
如果你没有 Python,你可以在这里下载。安装时,启用“将 Python 添加到 PATH”,然后进行自定义安装(这可能不是必需的,但在某些计算机上否则将无法正常工作)并启用所有选项(尤其是“为所有用户安装”),除了最后。最好将 Python 安装在没有空格的路径中,例如“C:\Python”。
要键入命令,最好使用 PowerShell。转到“开始”菜单并键入“PowerShell”(您也可以使用“cmd”,但有时它可能不起作用)。
然后你可能需要升级 pip。python3 -m pip install --upgrade pip在 PowerShell 中执行。
将 repo 下载到 lichess-bot 目录中。
导航到 PowerShell 中的目录:(cd [folder's address]例如,cd C:\chess\lichess-bot)。
安装虚拟环境:pip install virtualenv.
设置虚拟环境:
python3 -m venv .venv # If this fails you probably need to add Python3 to your PATH.
./.venv/Scripts/Activate.ps1 # `.\.venv\Scripts\activate.bat` should work in cmd in administrator mode. This may not work on Windows, and in this case you need to execute "Set-ExecutionPolicy RemoteSigned" first and choose "Y" there (you may need to run Powershell as administrator). After you execute the script, change execution policy back with "Set-ExecutionPolicy Restricted" and pressing "Y".
pip install -r requirements.txt
复制config.yml.default到config.yml.
编辑变量:supported_variants和时间控件:根据需要supported_tc从config.yml文件中编辑(使用“#”禁用某些变量)。
Lichess OAuth
在Lichess.org上为您的机器人创建一个帐户。
注意:如果您之前在现有帐户上玩过游戏,您将无法将其用作机器人帐户。
创建帐户并登录后,创建个人 OAuth2 令牌,并选择“使用机器人 API 玩游戏”('bot:play')范围并添加描述。
将显示一个token(例如)。xxxxxxxxxxxxxxxx将此作为字段存储在config.yml文件中token。您还可以在环境变量中设置令牌$LICHESS_BOT_TOKEN。
注意:你不会再在 Lichess 上看到这个标记,所以一定要保存它。
设置引擎
在文件中config.yml:


engine: dir在字段中输入包含引擎可执行文件的目录。
在字段中输入可执行文件名称engine: name(在 Windows 中,您可能需要输入带有“.exe”的名称,例如“lczero.exe”)
如果您希望引擎在不同的目录中运行(例如,如果引擎需要在某个位置读取或写入文件),请在engine: working_dir字段中输入该目录。
如果此字段为空白或缺失,将使用当前目录。
将该weights字段留空或查看神经网络的LeelaChessZero 部分
作为可选的便利,engines在 lichess-bot 文件夹中有一个名为的文件夹,您可以在其中复制引擎及其所需的所有文件。这是文件中的默认可执行位置config.yml.default。


引擎配置
除了上述之外,还有许多可能的选项config.yml用于配置引擎以与 lichess-bot 一起使用。


protocol:指定您的引擎使用的协议。选择是
"uci"通用国际象棋界面
"xboard"用于 XBoard/WinBoard/ Chess Engine 通信协议
"homemade"如果你想在 lichess-bot 中用 Python 编写自己的引擎。请参阅下面的创建自制机器人。
ponder:指定您的机器人是否会思考——即,在机器人的对手选择移动时思考。
polyglot: 告诉 lichess-bot 你的机器人是否应该使用打开的书。可以为每个国际象棋变体指定多本书。
enabled: 是否完全使用这本书。
book: 嵌套的书籍列表。下一个缩进行应该列出一个国际象棋变体(standard、3check、horde等),然后是随后的缩进行以及书籍文件的路径。请参阅config.yml.default示例。
min_weight: 一个动作必须具备的最低重量或质量才能有机会被选中。如果找不到至少具有此权重的移动,则不会选择移动。
selection: 选择招式的方法。选择是:"weighted_random"具有较高权重/质量的移动被选择的概率更高,"uniform_random"所有具有足够质量的移动都有相同的机会被选择,并且"best_move"总是选择具有最高权重的移动。
max_depth:机器人在停止查阅书籍之前的最大移动次数。如果max_depth是 3,那么机器人将在第三步后停止查阅该书。
draw_or_resign:此部分允许您的机器人根据引擎的评估辞职或提供/接受抽奖。XBoard 引擎可以在不启用此功能的情况下辞职并提供/接受抽奖。
resign_enabled: 是否允许机器人根据评估辞职。
resign_score:引擎评估必须小于或等于resign_score机器人辞职。
resign_for_egtb_minus_two:如果为真,机器人将在 online_egtb 返回 -2 的 wdl 的位置辞职。
resign_moves:评估必须小于或等于机器人辞职resign_score的resign_moves移动量。
offer_draw_enabled:是否允许机器人根据评估提供/接受抽奖。
offer_draw_score:引擎评估的绝对值必须小于或等于offer_draw_score机器人提供/接受平局。
offer_draw_for_egtb_zero:如果为真,机器人将在 online_egtb 返回 wdl 为 0 的位置提供/接受平局。
offer_draw_moves:评估的绝对值必须小于或等于机器人提供/接受平局的移动量offer_draw_score。offer_draw_moves
offer_draw_pieces:机器人仅在位置小于或等于offer_draw_pieces棋子的情况下提供/接受平局。
online_moves:此部分让您的机器人可以访问各种在线资源,以选择打开书籍和残局表库等动作。这可以作为存储在您计算机上的国际象棋数据库的补充或替代。三个部分对应于三个不同的在线数据库:
chessdb_book:查询中国象棋位置数据库,该数据库还托管着象棋数据库。
lichess_cloud_analysis:查阅 Lichess 自己的位置分析数据库。
online_egtb:咨询由 Lichess 托管的在线 Syzygy 7 件式残局表库或上面列出的 chessdb。
所有人通用的配置:
enabled: 是否完全使用数据库。
min_time:允许查询在线数据库所需的游戏时钟上的最短时间(以秒为单位)。
仅在chessdb_book和中的配置lichess_cloud_analysis:
move_quality: "all"(chessdb_book仅)"good"、 或的选择"best"。
all:从所有合法移动中选择一个随机移动。
best:只选择得分最高的动作。
good:从顶部动作中随机选择。在lichess_cloud_analysis中,顶部移动列表由 控制max_score_difference。在chessdb_book中,顶部列表由在线源控制。
min_depth:要接受的数据库移动的移动评估的最小搜索深度。
配置仅在chessdb_book:
contribute:将当前棋盘位置发送到 chessdb 以供以后分析。
配置仅在lichess_cloud_analysis:
max_score_difference:当move_quality设置为 时"good",此选项指定得分最高的移动与构成随机选择移动的集合的任何其他移动之间的最大差异。如果此选项设置为 25,并且某个位置的最高移动得分为 100,则不会返回得分低于 75 的移动。
min_knodes:要搜索的最小千节点数。要搜索的最小节点数是该值乘以 1000。
配置仅在online_egtb:
max_pieces:当前棋盘中的最大棋子数,用于查询表库。
source:chessdb或之一lichess。Lichess 也有 atomic 和 antichess 的表库,而 chessdb 只有标准的表库。
engine_options:在启动时传递给引擎的命令行选项。例如,config.yml.default具有配置
  engine_options:
    cpuct: 3.1
--cpuct=3.1这将创建启动引擎时要使用的命令行选项,例如引擎 lc0: lc0 --cpuct=3.1。此处可以列出任意数量的选项,每个选项都有自己的命令行选项。


uci_options:启动后传递给 UCI 引擎的选项列表。不同的引擎有不同的选项,因此将选项config.yml.default视为模板而不是建议。当 UCI 引擎启动时,它们会打印一个配置列表,这些配置可以在接收到字符串“uci”后修改其行为。例如,要找出 Stockfish 13 支持的选项,请在终端中运行可执行文件,键入uci,然后按 Enter。在命令行运行时,引擎将打印以下内容:
id name Stockfish 13
id author the Stockfish developers (see AUTHORS file)


option name Debug Log File type string default
option name Contempt type spin default 24 min -100 max 100
option name Analysis Contempt type combo default Both var Off var White var Black var Both
option name Threads type spin default 1 min 1 max 512
option name Hash type spin default 16 min 1 max 33554432
option name Clear Hash type button
option name Ponder type check default false
option name MultiPV type spin default 1 min 1 max 500
option name Skill Level type spin default 20 min 0 max 20
option name Move Overhead type spin default 10 min 0 max 5000
option name Slow Mover type spin default 100 min 10 max 1000
option name nodestime type spin default 0 min 0 max 10000
option name UCI_Chess960 type check default false
option name UCI_AnalyseMode type check default false
option name UCI_LimitStrength type check default false
option name UCI_Elo type spin default 1350 min 1350 max 2850
option name UCI_ShowWDL type check default false
option name SyzygyPath type string default <empty>
option name SyzygyProbeDepth type spin default 1 min 1 max 100
option name Syzygy50MoveRule type check default true
option name SyzygyProbeLimit type spin default 7 min 0 max 7
option name Use NNUE type check default true
option name EvalFile type string default nn-62ef826d1a6d.nnue
uciok
option name可以列出以下任何名称uci_options以配置 Stockfish 引擎。


  uci_options:
    Move Overhead: 100
    Skill Level: 10
例外情况是选项uci_chess960、uci_variant、multipv和ponder。这些将在游戏开始后由 lichess-bot 处理,不应在config.yml. 另外,如果uci_options在引擎打印的列表中没有列出的选项,则在引擎启动时会导致错误,因为引擎无法理解该选项。后面的单词type表示选项的预期类型:string对于文本字符串,spin对于数值,check对于布尔 True/False 值。


最后一个选项是go_commands. go在此选项下,可以传递UCI 命令的参数。例如,


  go_commands:
    nodes: 1
    depth: 5
    movetime: 1000
将附加nodes 1 depth 5 movetime 1000到命令以开始考虑移动:go startpos e2e4 e7e5 ....


xboard_options:启动后传递给 XBoard 引擎的选项列表。不同的引擎有不同的选项,因此将选项config.yml.default视为模板而不是建议。当 XBoard 引擎启动时,它们会打印出可以修改其行为的配置列表。要查看这些配置,请在终端中运行引擎,输入xboard,按 Enter,输入protover 2,然后按 Enter。可配置选项将以feature option. 一些例子可能包括
feature option="Add Noise -check VALUE"
feature option="PGN File -string VALUE"
feature option="CPU Count -spin VALUE MIN MAX"`
可以在下面列出任何选项xboard_options以配置 XBoard 引擎。


  xboard_options:
    Add Noise: False
    PGN File: lichess_games.pgn
    CPU Count: 1
例外情况是选项multipv和ponder。这些将在游戏开始后由 lichess-bot 处理,不应在config.yml. 另外,如果xboard_options在引擎打印的列表中没有列出的选项,则在引擎启动时会导致错误,因为引擎不知道如何处理该选项。以连字符为前缀的单词表示选项的预期类型:-string对于文本字符串、-spin对于数值、-check对于布尔 True/False 值。


最后一个选项是go_commands. 在此选项下,go可以传递命令之前的命令。例如,


  go_commands:
    depth: 5
将在go命令之前开始思考sd 5。go_commands上面针对 UCI 引擎 (nodes和)的另一个列表movetime对 XBoard 引擎无效,并且会对它们的时间控制产生不利影响。


abort_time:由于对手不作为而中止游戏之前要等待多少秒。这仅适用于游戏的前六步。


fake_think_time:人为地减慢引擎以模拟一个人在思考一个动作。随着游戏的进行,思考的时间会减少。


rate_limiting_delay:对于极快的游戏,如果走得太快,lichess.org 服务器可能会响应错误。此选项通过在提交移动后暂停指定的毫秒数,然后再进行下一步移动来避免此问题。


move_overhead:为防止因网络延迟而失去准时,请从考虑每一步的时间中减去这么多毫秒。


correspondence这些选项控制引擎在通信游戏中的行为方式。


move_time: 每一步思考多少秒。
checkin_period:断开连接后重新连接游戏以检查新动作的频率(以秒为单位)。
disconnect_time: 机器人移动后等待对手移动的秒数。如果在等待期间没有移动,请断开游戏。
ponder:在上述等待期间,机器人是否应该思考。
challenge:控制机器人应该接受挑战的游戏类型。接受挑战必须满足以下所有选项。


concurrency:同时玩的最大游戏数。
sort_by: 是由评分最高/头衔最高的对手开始比赛"best"还是先到先发"first"。
accept_bot:是否接受其他机器人的挑战。
only_bot: 是否只接受其他机器人的挑战。
max_increment:时间增量的最大值。
min_increment:时间增量的最小值。
max_base:游戏的最长基准时间。
min_base:游戏的最短基准时间。
variants:机器人可以处理的国际象棋变体的缩进列表。
  variants:
    - standard
    - horde
    - antichess
    # etc.
time_controlsbullet:从到的可接受时间控制类型的缩进列表correspondence。
  time_controls:
    - bullet
    - blitz
    - rapid
    - classical
    - correspondence
modesrated:可接受的游戏模式(和/或casual)的缩进列表。
  modes:
    -rated
    -casual
greeting:通过聊天向机器人的对手发送消息。该字符串{me}将替换为机器人的 lichess 帐户名称。该字符串{opponent}将替换为对手的 lichess 帐户名称。大括号之间的任何其他单词都将被删除。如果您想在消息中放置一个大括号,请使用两个:{{或}}.
hello:在机器人迈出第一步之前发送给对手的消息。
goodbye:游戏结束后发送给对手的消息。
  greeting:
    hello: Hi, {opponent}! I'm {me}. Good luck!
    goodbye: Good game!
pgn_directory:将每场比赛的记录以 PGN 格式写入该目录下的文件中。每个机器人动作都将用机器人的计算分数和主要变化进行注释。分数是用一个形式的标签写的[%eval s,d],其中s是棋子的分数(正数表示白方有优势),d是搜索的深度。每个游戏都将被写入一个唯一命名的文件。
  pgn_directory: "game_records"
matchmaking:挑战随机机器人。
allow_matchmaking:是否挑战其他机器人。
challenge_variant: 挑战的变种。如果设置为random启用的变体中的变体,challenge.variants将随机选择。
challenge_timeout:机器人在发起挑战之前必须处于空闲状态的时间(以分钟为单位)。
challenge_initial_time:挑战的初始时间(以秒为单位)。
challenge_increment:挑战的增量(以秒为单位)。
challenge_days: 通信挑战的日子。如果启用此选项,即使启用,也会创建通信质询challenge_initial_time。
opponent_min_rating:对手机器人的最低评分。lichess的最低评分是600。
opponent_max_rating:对手机器人的最高评分。lichess 的最高评分为 4000。
challenge_mode: 可能的选项casual是rated和random。
matchmaking:
  allow_matchmaking: false
  challenge_variant: "random"
  challenge_timeout: 30
  challenge_initial_time: 60
  challenge_increment: 3
# challenge_days: 2
  opponent_min_rating: 600
  opponent_max_rating: 4000
  challenge_mode: "random"
Lichess 升级到 Bot 账户
警告:这是不可逆的。阅读有关升级到机器人帐户的更多信息。


运行python3 lichess-bot.py -u。
跑步
激活安装步骤中创建的虚拟环境(sourceLinux 和 Mac 的行或activateWindows 的脚本)后,运行


python3 lichess-bot.py
引擎执行的工作目录将是 lichess-bot 目录。如果您的引擎需要位于其他位置的文件,请确保它们由绝对路径指定或将文件复制到 lichess-bot 目录中的适当位置。


要输出更多信息(包括你的引擎的思考输出和调试信息),-v可以将选项传递给 lichess-bot:


python3 lichess-bot.py -v
退出
按CTRL+C。
退出可能需要一些时间。
LeelaChessZero:Mac/Linux
从这里下载你想玩的 id 的权重。
从 zip 存档中提取权重并将其重命名为latest.txt.
对于 Mac/Linux,请按照LeelaChessZero/lc0/README自己构建 lczero 二进制文件。
将这两个文件复制到engine.dir目录中。
将文件中的engine.nameandengine.engine_options.weights键更改为and 。config.ymllczeroweights.pb.gz
您也可以指定文件中的engine.uci_options.threads数量config.yml。
开始:python3 lichess-bot.py。
LeelaChessZero:Windows CPU 2021
对于 Windows 现代 CPU,请从最新的 Lc0 版本(例如lc0-v0.27.0-windows-cpu-dnnl.zip)下载 lczero 二进制文件。
解压缩该文件,它带有lc0.exe、dnnl.dll和一个权重文件示例703810.pb.gz(以及其他文件)。
所有三个主要文件都需要复制到引擎目录。
lc0.exe应该双击并清除有关它未签名的 Windows 安全搜索警告(小心并确保您拥有正版文件)。
将文件中的engine.name键更改为,无需编辑有关权重文件的文件,因为将使用同一文件夹中的任何内容(引擎目录中只有一个文件)。config.ymllc0.execonfig.ymllc0.exe*.pb.gz*pb.gz
开始:python3 lichess-bot.py。
LeelaChessZero:Docker 容器
使用https://github.com/vochicong/lc0-nvidia-docker在 Docker 容器中轻松运行 lc0 和 lichess-bot。


创建一个自制的机器人
作为创建整个国际象棋引擎和实现其中一个通信协议(UCI或XBoard)的替代方案,也可以通过使用单个方法编写单个类来创建机器人。这个search()新类中的方法将当前棋盘和游戏时钟作为参数,并且应该根据编码器所需的任何标准返回移动。


创建自制机器人的步骤:


执行如何安装中的所有步骤
在中config.yml,将引擎协议更改为homemade
在某个扩展的文件中创建一个类MinimalEngine(in strategies.py)。
查看strategies.py文件以查看一些示例。
如果您不知道要实现什么,请查看EngineWrapperorUCIEngine类。
您不必创建自己的引擎,即使它是“EngineWrapper”类。
这些例子只是实现search。
在 中config.yml,将名称从更改engine_name为您的班级名称
在这种情况下,您可以将其更改为:


name: "RandomMove"


提示与技巧
您可以使用参数指定不同的配置文件--config。
这是一个示例 systemd 服务定义:
[Unit]
Description=lichess-bot
After=network-online.target
Wants=network-online.target


[Service]
Environment="PYTHONUNBUFFERED=1"
ExecStart=/usr/bin/python3 /home/thibault/lichess-bot/lichess-bot.py
WorkingDirectory=/home/thibault/lichess-bot/
User=thibault
Group=thibault
Restart=always


[Install]
WantedBy=multi-user.target
关键词: 鳕鱼引擎
级别: 少校
[棋中红钻5级]发帖数量≥2000篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [棋中粉钻1级]贡献值数量≥1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
2404
金币
36
威望
0
贡献值
1
乐币
1
主题
0
只看该作者 一楼  发表于: 2022-06-20
关于巫妖机器人的设置跟使用没听说过
级别: 三级士官
[棋中红钻1级]发帖数量≥10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
39
金币
20
威望
0
贡献值
0
乐币
0
主题
2
只看该作者 二楼  发表于: 2022-06-21
看好的是上面对鳕鱼引擎的修改,如果你对书写引擎有一定的了解可以自己加入NN权重,希望大师们能根据鳕鱼魔改出更多的好免费引擎
xxx
级别: 首席版主
[棋中红钻5级]发帖数量≥2000篇 [棋中黄钻1级]金币数量≥100枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [棋中彩钻2级]精华帖数量≥2篇
发帖
2202
金币
766
威望
5
贡献值
0
乐币
26
主题
255

只看该作者 三楼  发表于: 2022-06-28
巫妖机器人是一款编程软件还是一款会下棋的机器人?不太懂,望科普一下
级别: 二级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
49
金币
277
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 4楼 发表于: 2022-08-12
感谢感谢!!感谢感谢感谢感谢感谢感谢,,,,
感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢
木木
级别: 少校
[棋中红钻4级]发帖数量≥1000篇 [棋中黄钻1级]金币数量≥100枚 [棋中蓝钻2级]乐币数量≥50枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
1898
金币
233
威望
1
贡献值
5
乐币
66
主题
17
只看该作者 5楼 发表于: 2022-08-12
不知道这些东西是干嘛用的
级别: 二级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
49
金币
277
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 6楼 发表于: 2022-08-15
没有使用过这个象棋软件
快速回复

限56 字节
请不要在回贴只采用字母:“ PP、asdfhjkl、HAO、OK、ddddddd ......”。  请不要在回贴过于简单的内容:“不错、顶、支持、厉害、呵呵、靠、晕........”
 
验证问题: 我们的论坛名字是?
上一个 下一个