教程
GTO 策略 · 02/06
训练器
18 分钟
中级
第一篇:你的第一次策略调用
用受控训练场景或已结束手牌搭一个 GTO 扑克陪练的核心——和驱动 过招 的是同一类策略层。本篇会发一次真实的翻前策略调用、读可验证的混合频率,并在复盘后给决策评级。
1 · 首次调用
2 · 范围网格
3 · 翻后决策树
4 · 转/河牌求解
准备什么
一个免费 API Key(在这里拿)以及 curl 或 Python 3。把 Key 设成环境变量:
export POKERAI_API_KEY="gto_your_key_here"
Step 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 }
]
}
AKs 面对 UTG 开局是纯 3bet:100% 加注,到 9bb。situation 由你发的动作推导(这里面对一个加注 = "Raise")。
Step 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
这里加注和弃牌 A2s 都是 GTO 正确的。总是弃、或总是加,单手不算「错」——但长期偏离了均衡混合。陪练要衡量的正是这个。
Step 3 · 写进代码
一个极小的类型化客户端——和过招用的同构(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}
Step 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 提供确定性的策略事实;任何 coach 或 LLM 可以解释返回的频率,但不能替代 solver。这个循环——局面 → 策略 → 评级——就是整个陪练,一街一街来。
使用边界
只接受受控训练场景或已经结束的牌局作为输入。高影响的评级、教学或产品输出必须可供人工审核。Pokerai API 用于训练、教学、手牌复盘、学习和研究。禁止在真实资金牌桌上提供实时辅助。
下一篇 · 第二篇:13×13 范围网格
一次调用取整段范围并渲染,像范围页那样。即将上线。
相关资源
- 开发者文档 — 鉴权、配额、错误和端点行为
- 在线 API reference — 覆盖所有端点的实时 reference
- OpenAPI 规范 — 机器可读的中文 API 契约
- GTO 扑克 solver API 指南 — 选择和调用策略 API 的主答案页
- 牌局结束后的手牌复盘指南 — 当陪练输入来自实战而非受控场景时,复盘一手已结束牌局
- llms.txt — Pokerai API 的精简 LLM 入口