Seperti yang orang lain katakan, UCI adalah API yang Anda inginkan. Spesifikasi lengkap protokol ada di sini (file zip diekstraksi ke file teks): http://download.shredderchess.com/div/uci.zip
Ini sebenarnya sangat lurus ke depan dan sederhana, mesin UCI harus merespons dan membalas dalam teks biasa melalui stdin, stdout dan stderr. Bahkan, Anda harus dapat meluncurkan biner yang dapat dieksekusi dari mesin UCI di platform Anda dan mengeluarkan perintah UCI secara manual.
UCI memfasilitasi instruksi dari GUI atau mesin lain untuk memberi tahu mesin spesifik untuk melakukan apa pun yang Anda inginkan, termasuk menganalisis file PGN tertentu (pemuatannya melalui GUI atau front-end serupa, gerakan mentah kemudian diumpankan ke mesin dalam bentuk aljabar yang diperpanjang, seperti e4 menjadi e2e4). Poin kedua dan ketiga dari persyaratan Anda adalah standar dengan UCI, tetapi terserah masing-masing pengembang mesin untuk mendukungnya (mengingat seberapa ramping persyaratan tersebut, itulah yang seharusnya sebagian besar dari mereka).
Berikut adalah contoh tindakan UCI di baris perintah:
bash-3.2$ ./stockfish-5-64
Stockfish 5 64 by Tord Romstad, Marco Costalba and Joona Kiiski
uci
id name Stockfish 5 64
id author Tord Romstad, Marco Costalba and Joona Kiiski
option name Write Debug Log type check default false
option name Write Search Log type check default false
option name Search Log Filename type string default SearchLog.txt
option name Book File type string default book.bin
option name Best Book Move type check default false
option name Contempt Factor type spin default 0 min -50 max 50
option name Mobility (Midgame) type spin default 100 min 0 max 200
option name Mobility (Endgame) type spin default 100 min 0 max 200
option name Pawn Structure (Midgame) type spin default 100 min 0 max 200
option name Pawn Structure (Endgame) type spin default 100 min 0 max 200
option name Passed Pawns (Midgame) type spin default 100 min 0 max 200
option name Passed Pawns (Endgame) type spin default 100 min 0 max 200
option name Space type spin default 100 min 0 max 200
option name Aggressiveness type spin default 100 min 0 max 200
option name Cowardice type spin default 100 min 0 max 200
option name Min Split Depth type spin default 0 min 0 max 12
option name Threads type spin default 1 min 1 max 128
option name Hash type spin default 32 min 1 max 16384
option name Clear Hash type button
option name Ponder type check default true
option name OwnBook 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 Emergency Move Horizon type spin default 40 min 0 max 50
option name Emergency Base Time type spin default 60 min 0 max 30000
option name Emergency Move Time type spin default 30 min 0 max 5000
option name Minimum Thinking Time type spin default 20 min 0 max 5000
option name Slow Mover type spin default 80 min 10 max 1000
option name UCI_Chess960 type check default false
uciok
isready
readyok
quit
bash-3.2$
Perintah yang saya keluarkan adalah uci, sudah dan berhenti.
Untuk memanfaatkan perintah UCI Anda pada dasarnya memiliki dua pilihan utama; Anda dapat menggunakan antarmuka yang ada (misalnya ChessX, Arena, dan sejumlah lainnya) atau Anda dapat menulis kode Anda sendiri untuk mengeluarkan instruksi ke mesin atau sekelompok mesin. Saya percaya mungkin sudah ada pembungkus Python untuk mengakses mesin UCI, tapi saya perlu memeriksa ulang. Pasti ada python-catur (impor catur) dan pychess (impor pychess), saya hanya tidak bisa mengingat sejauh mana fungsinya. Saya tidak ingat di mana pychess bersembunyi (mungkin kode github atau google), tetapi python-catur dapat diinstal dengan pip.