Skip to main content

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/pricing
  • bot.maxTokens = 10: Set max_tokens passed to ChatGPT on each move
  • bot.maxFails = 5: Amount of times to retry sending prompt to ChatGPT when invalid move is returned
  • bot.maxTime = 5: Maximum amount of seconds to wait for ChatGPT answer before timing out
  • bot.prompt = {"normal" : "", "failed" : "", "start" : ""}: The prompts to send to ChatGPT at each game state
  • bot.board = chess.Board(): Chess board object
  • bot.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 move
  • move = getGPTMove(): Plays ChatGPT's move in the current position - returns ChatGPT's move

Other functions

  • bot.pushPlayerMove("e4"): Push a move without ChatGPT responding
  • prompt = bot.createPrompt(): Creates prompt to send to ChatGPT based on current position and previous fails - returns prompt
  • response = bot.askGPT(prompt): Queries ChatGPT prompt based on set parameters, times out after bot.maxTime seconds
  • move = bot.handleResponse(response, player): Searches for chess move in string - adds it to self.move as player

Errors

  • MoveLimitError: Move fail limit reached
  • BadInputMoveError: 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

Project details


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)

Uploaded Source

Built Distribution

chatchess-1.1.9-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

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

Hashes for chatchess-1.1.9.tar.gz
Algorithm Hash digest
SHA256 0ea327d95b69db559694cfde6d840ab805d61b57375887fbd23079d5caf0679b
MD5 a6b2e53de49fd3957524e1623c9a28c9
BLAKE2b-256 a250d4de92296030fa3c77879e30dba8a27b32f50ce5e3c57909919848b73423

See more details on using hashes here.

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

Hashes for chatchess-1.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 885e2c53d9262f1399fb35621feff62154eddb61dab8edcf918b60dd41ed5b56
MD5 7934f87ec95eb9b24bc9f4c434510459
BLAKE2b-256 fdacf773f544939532ecfaabc8b01e4c5c16b9da3f6835a39b3d4e4ae8cb8c00

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page