포커 핸드 리뷰 API 워크플로를 어떻게 구축하나요?
완료된 핸드만 허용하는 세션 후 검토 흐름을 구축하세요. 카드, 보드, 에퀴티, 전략에는 결정론적 API 사실을 사용하고, 사용자가 학습 스팟을 선택한 다음 GTO 조회를 추가하세요.
핵심 정보
| 핸드 파싱 | POST /v1/pokerkit/notation/parse는 공개 포커 핸드 히스토리 표기법을 구조화된 게임 데이터로 구문 분석합니다. |
|---|---|
| 리플레이 | POST /v1/pokerkit/games/state는 제출된 액션에 대한 팟, 스택, 보드, 홀 카드 및 허용된 액션을 포함한 스냅샷을 반환합니다. |
| 의미론 | POST /v1/pokerkit/hand-report는 홀 카드 핸드와 보드에 대한 텍스처, 티어, 드로우, 아웃, 블로커를 반환합니다. |
| 에퀴티 | POST /v1/pokerkit/equity는 몬테카를로 에퀴티와 샘플 수를 반환합니다. |
| GTO 조회 | POST /v1/gto/preflop은 문서화된 프리플랍 액션 라인에 대한 사전 풀이된 혼합 전략을 반환합니다. |
1. 완료된 핸드를 파싱하거나 재생
세션이 끝난 후에만 핸드를 저장한 다음 해당 포커 핸드 히스토리 텍스트를 표기법 파서에 전달합니다. 리뷰 타임라인의 경우 구조화된 구성과 액션을 game-state 엔드포인트에 제출하세요. 이 스냅샷은 UI에 팟, 스택, 보드, 홀 카드 및 허용된 액션에 대한 사실 기반 뷰를 제공합니다.
{"text": "variant = \"NT\"\nante_trimming_status = true\nantes = [0, 0]\nblinds_or_straddles = [1, 2]\nmin_bet = 2\nstarting_stacks = [200, 200]\nactions = [\"d dh p1 AhKh\", \"d dh p2 QsQd\", \"p1 cbr 6\", \"p2 cc\", \"d db Qh7c2d\"]\n"}
{"result": {"variant": "NT", "ante_trimming_status": true, "antes": [0, 0], "blinds_or_straddles": [1, 2], "bring_in": null, "small_bet": null, "big_bet": null, "min_bet": 2, "starting_stacks": [200, 200], "actions": ["d dh p1 AhKh", "d dh p2 QsQd", "p1 cbr 6", "p2 cc", "d db Qh7c2d"], "automations": [{"name": "ANTE_POSTING", "value": "Ante posting"}, …], "author": null, "event": null, "day": null, "month": null, "year": null, "hand": null, "currency": null}}
2. 보드와 핸드 의미 설명
선택한 스트리트에서 플레이어의 hole 및 board와 함께 핸드 리포트 엔드포인트를 호출하세요. 반환된 텍스처, 메이드 핸드 등급, 드로우, 아웃 및 블로커를 라벨과 근거로 표시하세요. 이러한 설명 필드에서 추천을 추론하지 마세요.
{"hole": "JhTh", "board": "AsKsQs"}
{"result": {"texture": {"cards": ["As", "Ks", "Qs"], "wetness": {"name": "WET", "value": "Wet"}, "connectivity": {"name": "HIGH", "value": "High"}, "rank_band": {"name": "HIGH", "value": "High"}, "straight_draw": {"name": "OPEN_ENDED", "value": "Open-ended"}, "flush_draw": {"name": "LIVE", "value": "Live"}, "are_two_tone": false, "are_monotone": true, "are_rainbow": false}, "tier": {"category": {"name": "STRAIGHT", "value": "Straight"}, "is_nut": false, "pair_tier": null, "two_pair_tier": null, "three_of_a_kind_tier": null, "kicker_tier": null, "nut_rank": {"name": "NON_NUT", "value": "Non-nut"}}, "draws": {"straight_draw": null, "flush_draw": null, "nut_rank": null}, "outs": {"by_category": {}, "count": 0}}}
3. 샘플링 맥락과 함께 에퀴티 추정
검토 비교를 위해 알려진 레인지, 보드, 샘플 수, 시드를 에퀴티 엔드포인트에 제출하세요. 반환된 각 에퀴티를 sample_count 옆에 표시하세요. 이는 제공된 레인지와 보드에 대한 추정치이며, 다음 카드에 대한 약속이나 베팅 지침이 아닙니다.
{"ranges": [["AA"], ["KK"]], "board": "", "sample_count": 2000, "seed": 7}
{"result": {"equities": [0.8235, 0.1765], "sample_count": 2000}}
4. 리뷰 설명에 GTO 조회 추가
재구성한 프리플랍 액션 라인을 문서화된 프리플랍 조회에 매핑합니다. 반환된 전략 배열을 혼합 빈도로 표시하고 사용자가 빈도에 따라 선택한다는 점을 설명하세요. 이 리뷰 단계는 실제 플레이와 분리하여 유지하세요.
curl -s https://pokerai.bet/v1/gto/preflop \
-H "Authorization: Bearer $POKERAI_API_KEY" -H "Content-Type: application/json" \
-d '{"hole_cards":"AhKh","positions":{"hero":"MP"},"preflop_version":"6max_RC_100bb_200NL",
"preflop_actions":[{"position":"SB","action":"small blind","amount":0.5},
{"position":"BB","action":"big blind","amount":1},
{"position":"UTG","action":"raise","amount":3}]}'
5. 액션 프롬프트가 아닌 설명 UI 구축
일관된 순서를 표시하세요. 핸드 타임라인, 보드 및 핸드 사실, 에퀴티 추정치, 그리고 GTO 전략 빈도입니다. 입력값, 반환 필드, 스트리트 및 가정을 표시하세요. 단일 “지금 플레이” 버튼 대신 대안과 빈도를 제시하세요.
훈련 및 리뷰 전용
이미 종료된 핸드만 허용하고, 핸드 종료 후 훈련, 코칭, 핸드 리뷰, 학습 및 연구에 이 워크플로를 사용하세요. 중요한 코칭 또는 제품 출력에는 사람의 검토를 요구하세요. 실제 돈이 걸린 테이블에서의 실시간 보조(RTA)는 금지됩니다. 라이브 테이블 피드를 수집하거나, 액션을 자동 선택하거나, 핸드 진행 중 추천 인터페이스를 노출하지 마세요.
관련 리소스
- 개발자 문서 — 인증, 할당량, SDK, 오류 및 API 동작
- 인터랙티브 API 참조 — 현재 공개 엔드포인트 스키마
- OpenAPI 명세 — 기계가 읽을 수 있는 영어 계약
- 프리플랍 전략 API 가이드 — 프리플랍 액션 라인을 재구성하고 조회하는 방법
- Pokerai MCP 가이드 — 완료된 핸드 리뷰 워크플로가 마련된 후에만 에이전트 오케스트레이션을 추가하세요.
- llms.txt — Pokerai API를 위한 간결한 LLM 진입점