A package to play chess with ChatGPT
Project description
ChatChess
A simple python package to play chess with ChatGPT
Installation
pip install chatchess
Usage
Import the package:
from ChatChess import ChatChess
First a Game
object needs to be decalerd as follows:
bot = ChatChess.Game("OPENAI_API_KEY")
Additional parameters
self.model = "gpt-3.5-turbo"
: ChatGPT model to be used. 3.5-turbo recommended, see models and pricing here: https://openai.com/pricingbot.maxTokens = 10
: Set max_tokens passed to ChatGPT on each movebot.maxFails = 5
: Amount of times to retry sending prompt to ChatGPT when invalid move is returnedbot.maxTime = 5
: Maximum amount of seconds to wait for ChatGPT answer before timing outbot.prompt = {"normal" : "", "failed" : "", "start" : ""}
: The prompts to send to ChatGPT at each game statebot.board = chess.Board()
: Chess board objectbot.printDebug = False
: Print debug info - occaisonaly useful
Output
move = bot.move["ChatGPT"]["uci"]
: Returns the last move of given player (ChatGPT / input) in the given format (uci / san)message = bot.message
: Returns the move into after each GPT move
Functions
Main functions
move = bot.play("e4")
: Plays the player's move, then ChatGPT's response - returns ChatGPT's movemove = getGPTMove()
: Plays ChatGPT's move in the current position - returns ChatGPT's move
Other functions
bot.pushPlayerMove("e4")
: Push a move without ChatGPT respondingprompt = bot.createPrompt()
: Creates prompt to send to ChatGPT based on current position and previous fails - returns promptresponse = bot.askGPT(prompt)
: Queries ChatGPT prompt based on set parameters, times out afterbot.maxTime
secondsmove = bot.handleResponse(response, player)
: Searches for chess move in string - adds it to self.move as player
Errors
MoveLimitError
: Move fail limit reachedBadInputMoveError
: Move inputted can't be played
Examples
Simple player vs ChatGPT game
from ChatChess import ChatChess
bot = ChatChess.Game("OPENAI_API_KEY") # Set API key
while True:
print(bot.board) # Print the board
bot.play(input("Make a move: ")) # Ask player to make a move, then ChatGPT responds
if bot.board.is_game_over(): # Break if game over
break
Simple ChatGPT vs ChatGPT game
from ChatChess import ChatChess
import chess.pgn
from datetime import date
bot = ChatChess.Game("OPENAI_API_KEY") # Set API key
while True:
bot.getGPTMove() # Ask ChatGPT to make a move
print(bot.message) # Print move and info
if bot.board.is_game_over(): # Break if game over
game = chess.pgn.Game.from_board(bot.board) # Create PGN from game
game.headers["Event"] = "ChatChess test"
game.headers["Date"] = date.today().strftime("%d.%m.%Y")
game.headers["White"] = "ChatGPT"
game.headers["Black"] = "ChatGPT"
print(game)
break
Function for returning ChatGPT moves as FEN from a set position (eg. for a Lichess bot)
from ChatChess import ChatChess
import chess
bot = ChatChess.Game("OPENAI_API_KEY") # Set API key
def getGPTMove():
bot.board = chess.Board() # Pass board to ChatChess
bot.getGPTMove() # Ask ChatGPT to make a move
return bot.move["ChatGPT"]["FEN"].fen() # Return FEN move
When setting the board for bot.board
, make sure that the board is not simply from a set position, but has the moves in pgn format to increase chatgpt move success rate
Info
Uses
- python-chess - https://github.com/niklasf/python-chess
- openai-python - https://github.com/openai/openai-python
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
chatchess-1.1.9.tar.gz
(17.0 kB
view details)
Built Distribution
chatchess-1.1.9-py3-none-any.whl
(17.0 kB
view details)
File details
Details for the file chatchess-1.1.9.tar.gz
.
File metadata
- Download URL: chatchess-1.1.9.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ea327d95b69db559694cfde6d840ab805d61b57375887fbd23079d5caf0679b |
|
MD5 | a6b2e53de49fd3957524e1623c9a28c9 |
|
BLAKE2b-256 | a250d4de92296030fa3c77879e30dba8a27b32f50ce5e3c57909919848b73423 |
File details
Details for the file chatchess-1.1.9-py3-none-any.whl
.
File metadata
- Download URL: chatchess-1.1.9-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 885e2c53d9262f1399fb35621feff62154eddb61dab8edcf918b60dd41ed5b56 |
|
MD5 | 7934f87ec95eb9b24bc9f4c434510459 |
|
BLAKE2b-256 | fdacf773f544939532ecfaabc8b01e4c5c16b9da3f6835a39b3d4e4ae8cb8c00 |