iOS 앱
PokerKit 게임 메커니즘과 결정 캡처를 갖춘 SwiftUI 인터페이스.
사례 연구
개발자가 사용할 수 있는 동일한 Pokerai API를 통해 다섯 명의 GTO 상대가 모든 핸드를 플레이하는 네이티브 6맥스, 100BB 훈련 테이블입니다. Counterplay는 모든 Hero 결정을 기록하고, 반환된 빈도에 따라 평가하며, 반복되는 편차를 전략적 약점 보고서로 그룹화하고, 관련 핸드를 검토 또는 선택적 근거 기반 코칭에 대비해 보관합니다.


01 / 아키텍처
Counterplay는 게임 메커니즘, 세션 상태 및 전략적 기준을 분리합니다. PokerKit은 6인 테이블을 진행하고, 트레이너 서비스는 순서가 있는 액션 라인, 유효 스택, 레인지 및 검토 컨텍스트를 보존하며, Pokerai API는 사전 풀이된 조회 또는 실시간 솔버 출력을 제공합니다. 동일한 응답으로 앱에 비공개 차트를 포함하지 않고도 상대 플레이, Hero 평가, 레인지 시각화 및 이후 코칭을 구동할 수 있습니다.
PokerKit 게임 메커니즘과 결정 캡처를 갖춘 SwiftUI 인터페이스.
FastAPI는 현재 핸드, 액션 라인, 레인지 및 검토 맥락을 보관합니다.
사전 풀이된 프리플랍 및 플롭 전략과 대기열 등록됨 상태의 턴 및 리버 풀이.
02 / 제품 루프
이 제품은 하나의 솔버 응답을 노출하는 데 그치지 않습니다. 개별 의사결정을 분석 보고서로 전환한 다음, 검토와 후속 학습을 위해 관련 핸드를 계속 이용할 수 있도록 유지합니다.
유사한 결정을 그룹화하고, 샘플 수와 평균 편차를 표시한 뒤, 반복되는 프리플랍 및 포스트플랍 패턴을 심각도순으로 정렬합니다.

핸드, 포지션 또는 카드로 검색하고 결과와 순 BB를 확인한 다음, 리포트의 정확한 의사결정 순서를 다시 엽니다.

빠른 사전 풀이된 조회 또는 정확한 실시간 풀이를 선택하고 팟과 포지션을 정한 다음, 결과를 집중적인 토론으로 이어가세요.

훈련 화면의 집중도를 유지하면서 플레이어가 로캘, 테이블 아이덴티티, 설명에 사용할 선택적 모델을 고를 수 있게 합니다.

03 / 엔드포인트 원장
실제 클라이언트에서 추적됨(메서드 → 엔드포인트 → 사용 위치):
/v1/gto/preflop빌런의 프리플랍 액션 + 히어로의 프리플랍 결정 평가
/v1/gto/preflop/range검토에 표시되는 13×13 레인지 그리드
/v1/gto/flop/tree플롭 스팟의 포스트플랍 의사결정 트리
/v1/gto/flop/node현재 플롭 노드의 전략(+ 채점)
/v1/gto/flop/projected-range플롭 액션 라인을 따라 레인지 업데이트
/v1/gto/range액션 라인에 대한 solver_results 구성
/v1/gto/turn/projected-range플롭 → 턴 레인지 전달
/v1/gto/solver실시간 풀이를 위해 턴/리버 상황 제출
/v1/gto/solver/tree풀이된 턴/리버 스팟의 결정 트리
/v1/gto/solver/node턴/리버 노드의 전략(+ 채점)
04 / 구현 증명
클라이언트는 차트나 솔버 출력을 내장하지 않습니다. 현재 스팟을 구성하고 인증된 요청을 전송한 후, 정규화된 전략 빈도를 트레이너에 반환합니다.
class GtoClient:
def __init__(self, settings):
self._headers = {"Authorization": f"Bearer {settings.gto_api_key}"}
async def preflop(self, hole_cards, hero_pos, preflop_actions):
body = {"hole_cards": hole_cards,
"positions": {"hero": hero_pos},
"preflop_actions": preflop_actions}
return _strategy_from(await self._post("/v1/gto/preflop", body))
async def flop_node(self, node_token, hole_cards=None):
body = {"node": node_token}
if hole_cards: body["hole_cards"] = hole_cards
return _strategy_from(await self._post("/v1/gto/flop/node", body))
# … + solver_schedule / solver_tree / solver_node, all one-liners over _post()05 / 의사결정 루프
카드, 포지션, 순서가 지정된 액션을 전송하고, 반환된 빈도를 플레이 및 평가에 사용합니다.
사전 풀이된 트리를 로드하고, 활성 노드를 확인하며, 각 액션 후 레인지를 투영합니다.
핸드 레인지를 실시간 솔버에 전달하고, 작업을 폴링한 다음, 결과 전략 노드를 읽습니다.
선택한 액션을 해당 액션 자체의 GTO 빈도로 측정하고 구조화된 컨텍스트를 선택적 코치에게 전달합니다.
Counterplay는 Pokerai API가 유지 관리하는 Pokerai API 제품 통합입니다. 제3자 고객 배포 사례로 제시되지 않습니다. 이 기술 기록은 iOS 트레이너 워크플로와 해당 워크플로에서 사용하는 공개 API 엔드포인트를 문서화합니다. 현재 제품은 6인 100BB 캐시 게임 훈련을 대상으로 하며, 히어로의 좌석을 무작위로 정하고, 전략 기반 상대 5명을 사용하며, 멀티웨이 포스트플랍 상황을 헤즈업 근사로 축소합니다. 코칭은 선택 사항입니다. Counterplay는 실제 현금 테이블에서 실시간 보조(RTA)를 활성화하지 않습니다. 이 페이지는 고객 도입, 다운로드, 벤치마크 성능, 상업적 파트너십 또는 외부 보증에 관해 어떠한 주장도 하지 않습니다.
동일한 API로 구축하기
무료 키로 시작해 프리플랍 호출을 한 번 실행한 다음, 여기서 사용하는 것과 동일한 공개 엔드포인트를 따르세요.