Như những người khác đã nói, UCI là API bạn muốn. Thông số kỹ thuật đầy đủ của giao thức có tại đây (tệp zip trích xuất thành tệp văn bản): http://doad.shredderchess.com/div/uci.zip
Nó thực sự rất đơn giản và đơn giản, một công cụ UCI phải trả lời và trả lời bằng văn bản đơn giản thông qua stdin, stdout và stderr. Trong thực tế, bạn sẽ có thể khởi chạy nhị phân thực thi của bất kỳ công cụ UCI nào trên nền tảng của bạn và phát hành các lệnh UCI theo cách thủ công.
UCI tạo điều kiện cho các hướng dẫn từ GUI hoặc công cụ khác yêu cầu công cụ cụ thể làm bất cứ điều gì bạn muốn làm, bao gồm phân tích một tệp PGN cụ thể (việc tải nó thông qua GUI hoặc giao diện người dùng tương tự, các bước di chuyển thô sau đó được đưa vào động cơ ở dạng đại số mở rộng, chẳng hạn như e4 trở thành e2e4). Điểm thứ hai và thứ ba trong các yêu cầu của bạn là tiêu chuẩn với UCI, nhưng tùy thuộc vào mỗi nhà phát triển động cơ để hỗ trợ họ (do các yêu cầu đó nghiêng như thế nào, nên là hầu hết trong số đó).
Đây là một ví dụ về UCI hoạt động trên dòng lệnh:
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$
Các lệnh tôi đã ban hành là uci, đã sẵn sàng và thoát.
Để sử dụng các lệnh UCI, về cơ bản bạn có hai lựa chọn chính; bạn có thể sử dụng giao diện hiện có (ví dụ: ChessX, Arena và một loạt các giao diện khác) hoặc bạn có thể viết mã của riêng mình để đưa ra hướng dẫn cho động cơ hoặc nhóm động cơ. Tôi tin rằng có thể đã có các trình bao bọc Python để truy cập các công cụ UCI, nhưng tôi cần kiểm tra lại. Chắc chắn có python-Chess (cờ nhập khẩu) và pychess (nhập khẩu pychess), tôi chỉ không thể nhớ lại phạm vi chức năng của chúng. Tôi không thể nhớ nơi pychess đang ẩn nấp (có thể là mã github hoặc google), nhưng python-Chess có thể được cài đặt bằng pip.