다른 사람들이 말했듯이 UCI는 원하는 API입니다. 프로토콜의 전체 사양은 다음과 같습니다 (zip 파일은 텍스트 파일로 추출) : http://download.shredderchess.com/div/uci.zip
실제로 매우 간단하고 간단합니다. UCI 엔진은 stdin, stdout 및 stderr를 통해 일반 텍스트로 응답하고 응답해야합니다. 실제로, 플랫폼에서 UCI 엔진의 실행 가능 바이너리를 시작하고 UCI 명령을 수동으로 발행 할 수 있어야합니다.
UCI는 GUI 또는 다른 엔진의 지시를 통해 특정 PGN 파일 분석을 포함하여 특정 엔진에 원하는 모든 작업을 수행하도록 지시합니다. 그런 다음 e4가 e2e4가되는 것과 같이 확장 된 대수 형태로 엔진에 공급됩니다. 요구 사항의 두 번째 및 세 번째 지점은 UCI에서 표준이지만 요구 사항을 지원하는 것은 각 엔진 개발자의 몫입니다.
다음은 명령 행에서 작동중인 UCI의 예입니다.
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$
내가 발행 한 명령은 uci, isready 및 quit입니다.
UCI 명령을 사용하려면 기본적으로 두 가지 주요 선택 사항이 있습니다. 기존 인터페이스 (예 : ChessX, Arena 및 기타 호스트)를 사용하거나 고유 코드를 작성하여 엔진 또는 엔진 그룹에 명령을 실행할 수 있습니다. UCI 엔진에 액세스하기위한 Python 래퍼가 이미 있다고 생각하지만 다시 확인해야합니다. python-chess (import chess)와 pychess (import pychess)가 분명히 있습니다. 그들의 기능의 범위를 기억할 수는 없습니다. pyches가 숨어있는 곳 (아마도 github 또는 Google 코드)을 기억할 수는 없지만 python-chess는 pip로 설치할 수 있습니다.