1부: 첫 전략 호출
통제된 훈련 시나리오 또는 완료된 핸드에서 GTO 포커 트레이너의 핵심을 구축하세요 — Counterplay를 구동하는 것과 동일한 종류의 전략 계층입니다. 이 파트에서는 실제 프리플랍 전략 호출을 수행하고, 검증 가능한 혼합 빈도를 읽으며, 검토 후 결정을 평가합니다.
필요한 것
무료 API 키(여기에서 발급받기)와 curl 또는 Python 3. 키를 환경 변수로 설정하세요:
export POKERAI_API_KEY="gto_your_key_here"
1단계 · 첫 호출
Hero가 MP에서 A♥K♥를 들고 있고 UTG가 레이즈했을 때 GTO 전략을 요청하세요:
curl 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_actions": [
{ "position": "SB", "action": "small blind", "amount": 0.5 },
{ "position": "BB", "action": "big blind", "amount": 1 },
{ "position": "UTG", "action": "raise", "amount": 3 }
]
}'
응답:
{
"hole_cards": "AhKh",
"situation": "Raise",
"strategy": [
{ "action": "raise", "frequency": 1, "amount_bb": 9, "sizing_pot": 0.8 }
]
}
UTG 오픈에 맞서는 AKs는 순수한 3베팅입니다. 항상 100% 레이즈하여 9bb로 만듭니다. situation은 전송한 액션에서 파생됩니다(여기서는 한 번의 레이즈에 맞섬 = "Raise").
2단계 · 빈도 읽기
핵심은 다음과 같습니다. API는 혼합 전략, 즉 각 액션의 GTO frequency를 반환하며, 단일 "권장" 액션을 반환하지 않습니다. 대부분의 핸드는 순수합니다(한 액션이 100%). 하지만 많은 핸드는 혼합됩니다. 예를 들어 UTG에서 A2s를 오픈하는 경우:
{ "action": "raise", "frequency": 0.296 } # raise 29.6% of the time
{ "action": "fold", "frequency": 0.704 } # fold 70.4% of the time
3단계 · 코드에서
작은 타입 지정 클라이언트 — Counterplay가 사용하는 것과 동일한 형태(app/gto/client.py):
import os, httpx
class Pokerai:
def __init__(self):
self.h = {"Authorization": f"Bearer {os.environ['POKERAI_API_KEY']}"}
self.c = httpx.Client(base_url="https://pokerai.bet", timeout=15)
def preflop(self, hole_cards, hero, actions):
r = self.c.post("/v1/gto/preflop", headers=self.h, json={
"hole_cards": hole_cards,
"positions": {"hero": hero},
"preflop_actions": actions,
})
r.raise_for_status()
return {s["action"]: s["frequency"] for s in r.json()["strategy"]}
gto = Pokerai()
strat = gto.preflop("AhKh", "MP", [{"position":"UTG","action":"raise","amount":3}])
print(strat) # {'raise': 1.0}
4단계 · 결정 채점
이것이 트레이너의 핵심입니다. Hero의 액션을 선택한 액션의 GTO 빈도에 따라 평가하세요 — 가장 빈도가 높은 액션과의 차이로 평가하는 것이 아닙니다. 빈도가 14%인 레이즈는 실수가 아닌 괜찮은 혼합 플레이입니다:
def grade(chosen_action, strategy):
freq = strategy.get(chosen_action, 0.0)
if freq >= 0.10: return "ok" # a real part of the GTO mix
if freq >= 0.005: return "minor" # rare, but not a blunder
return "major" # ~never played → a real leak
grade("raise", {"raise": 0.296, "fold": 0.704}) # "ok" (A2s raise)
grade("raise", {"fold": 1.0}) # "major" (raising 32o UTG)
만든 것
작동하는 전략 레이어: 문서화된 훈련 스팟의 GTO 빈도를 가져오고, 플레이어가 완료한 결정을 균형 전략과 비교해 평가합니다. Pokerai API는 결정론적인 전략 정보를 제공하며, 어떤 코치나 LLM도 반환된 빈도를 설명할 수 있지만 솔버를 대체하지는 않습니다. 그 루프 — 스팟 → 전략 → 평가 — 가 바로 한 스트리트씩 이루어지는 전체 트레이너입니다.
허용되는 사용
통제된 훈련 시나리오 또는 이미 종료된 핸드에서만 입력을 받으세요. 영향력이 큰 평가, 코칭 또는 제품 결과물은 사람이 검토할 수 있도록 유지하세요. Pokerai API는 훈련, 코칭, 핸드 리뷰, 학습 및 연구용입니다. 실제 현금 테이블에서의 실시간 보조(RTA)는 금지됩니다.
한 번의 호출로 전체 레인지를 가져와 레인지 페이지처럼 렌더링합니다. 곧 제공됩니다.
관련 리소스
- 개발자 문서 — 인증, 할당량, 오류 및 엔드포인트 동작
- 대화형 API 참조 — 모든 엔드포인트의 온라인 참조
- OpenAPI 명세 — 기계가 읽을 수 있는 영어 API 계약
- GTO 포커 솔버 API 가이드 — 전략 API를 선택하고 호출하는 방법에 관한 주요 답변 페이지
- 세션 후 핸드 검토 가이드 — 통제된 시나리오가 아닌 플레이에서 트레이너 입력이 나온 경우 완료된 핸드 검토
- llms.txt — Pokerai API를 위한 간결한 LLM 진입점