与ChatGPT下棋?它最多能下几步呢?

前言

过去的国庆节中难得整理完自己的事情之后可以休息一下,闲来无事学了点国际象棋,感觉还挺有意思的,与中国象棋还是有些许差别的,看着手里的ChatGPT,想着可不可以整一点好玩的?

简单讲一下国际象棋的规则与符号术语吧,照顾一下没时间又想学的同学们

国际象棋规则与符号术语

国际象棋是一款两人对战游戏,双方各有16个棋子,包括一个国王(王)、一个王后(后)、两个主教(象)、两个骑士(马)、两个战车(车)和八个兵(兵)‌,目标是将对方的国王将死(即没有任何合法走法能拯救国王)。

棋子和走法:
  • 国王(K):每次走一格,任意方向。
  • 皇后(Q):任意方向,任意格数。
  • 车(R):直线(横或竖),任意格数。
  • 象(B):对角线,任意格数。
  • 马(N):走“日”字,跳过其他棋子。
  • 兵(P):直走一格(首次可走两格),斜吃对方棋子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

特殊情况:
  • 将军:你的棋子攻击对方国王。
  • 将死:对方国王被攻击且无路可逃,胜利。
  • 和棋:双方无法取胜时平局。

游戏中白棋先走,双方需要通过使用不同棋子的走法来保护自己的国王,并试图将死对方国王。

在国际象棋中,PGN(Portable Game Notation)是用来记录棋局的一种标准格式。以下是解释一些常见的国际象棋符号和术语:

棋子符号:
  • N:骑士(Knight)。在国际象棋中,“N”代表骑士,因为“K”已经用于国王(King)
  • B:象(Bishop)
  • R:车(Rook)
  • Q:皇后(Queen)
  • K:国王(King)
移动方式:

例如,Nc6表示骑士(N)移到c6这个格子。
Bh4表示主教(B)移到h4这个格子。
只有d4格子,则默认为兵的行动。
O-O:短易位(Kingside castling),国王向右(王翼)移动两格,然后车子越过国王放在国王旁边。
O-O-O:长易位(Queenside castling),国王向左(后翼)移动两格,然后车子越过国王放在国王旁边。
g8=Q:兵升变,白兵走到 g8 并升变为皇后(Queen),当一个兵走到对方棋盘的最后一排(对黑棋来说是第1行,对白棋来说是第8行)时,它可以升变为其他棋子,通常是皇后,因为皇后是最强的棋子,能最大化提升实力。不过,玩家也可以选择将兵升变为车(Rook)、象(Bishop)或马(Knight)。

特殊符号:

#:代表"将死"(checkmate)。例如,Qe7# 表示皇后移动到e7格,结束棋局,将死对方国王。

+:代表"将军"(check)。这个符号表示对方的国王被将军,但还没有将死。

其他符号:

dxc4:表示用d线上的兵吃掉c4格上的棋子。“x"表示"吃子”(capture)。所以dxc4表示d线的兵移动并吃掉c4格上的棋子。

如何让LLM下棋?

如果是尝试通过简单的聊天让 ChatGPT 下棋,那可能会与预想有差别。因为该模型只在内存中保存大约十步棋,而且经常做出非法动作。

为了使像 ChatGPT 这样的语言模型 (LLM) 正常工作,我们需要利用它的一个特性:它以统计方式再现了它在训练期间学到的东西。

在国际象棋中,有一种称为"PGN"(便携式游戏符号)的格式,它是一种长文本,包括一个包含有关游戏的一般信息(结果、玩家、ELO 等)的标题和一个包含一系列所走棋步的正文,也就是我们上面说的符号术语

通过提供 PGN 文件的开头并要求 LLM 生成后续内容,它可以更连贯地下棋。

使用"bresse"库进行实验

Bresse 是一个用于国际象棋 AI 等 LLM(大型语言模型)的库。该库利用了 LLM 可以重现表示国际象棋游戏的格式(称为 PGN)这一事实。

可以利用各种工具来促进实验、推理过程中的 PGN 修改以及各种有用的信息。

该第三库可以允许 LLM 使用该chess库下棋。
而该库是怎么促进移动生成的呢?

  • 处理棋谱文件(PGN)

国际象棋的棋局通常记录在PGN文件中,里面详细记录了每一步棋的走法。

我们需要先对这些文件进行处理,以便让人工智能模型更好地理解它们。因为现有的棋库(chess library)主要是给人和程序员用的,不是专门为AI模型设计的。

  • 优化棋步的合法性:

在让AI选择下一步棋的时候,我们可以用一种“温度”的概念。这就像是让AI尝试一些变化的可能性,而不是总是选择最明显的一步。

然后,我们可以让AI尝试多个走法,看看它最常推荐哪一步。这样就能提高选出的棋步的准确性,确保AI走的棋更符合规则。

  • 选择使用的AI模型

我们可以选择不同的AI模型来帮忙,比如OpenAI、HuggingFaceHub或MistralAI。这就像是选择不同的工具,每个工具在性能和特点上都有不同。

  • 了解使用这些模型的成本

使用这些AI模型通常是按生成的数据量收费的。

比如,我们可以计算出用这些模型花1美元能生成多少次预测,这样我们就能知道使用这些模型的费用大概是多少。

  • 检测非法的走法

即使AI建议了一些走法,我们也需要用棋库来检查这些走法是否合法。就像一个裁判一样,确保每一步棋都符合国际象棋的规则。

如果AI给出了非法的走法,棋库就会指出来,这样我们就可以再调整AI的预测,直到得到符合规则的走法。

与 ChatGPT 下棋

以下是使用该库让用户与 ChatGPT 进行游戏的示例代码:

import os 
from dotenv import load_dotenvfrom bresse import generate_pgn, game_play_san 
from bresse.models import OpenAIModel 

# 加载环境变量
load_dotenv() 

# 生成 PGN 游戏
game = generate_pgn( 
    white= "Alpha Zero" , 
    black= "Stockfish"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ztop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值