← 全部指南
本页内容
指南 GTO 策略 · 04/06 求解器应用 16 分钟 高级

如何安全地运行一次 GTO solver API 求解?

将一次实时求解视为短生命周期:调度、轮询 tree 直到可查询,然后只读取该 tree 返回的 token。

更新于 维护者 Pokerai API

直接答案:POST /v1/gto/solver 发送必填局面字段,保存返回的 solve handle,再轮询 POST /v1/gto/solver/tree 直到 spot_statusqueryable。把返回的 node token 传给 POST /v1/gto/solver/node。本页只说明调度、轮询和读取,不讨论 solver 选型或研究 tree 设计。

核心事实

调度POST /v1/gto/solver 必填 boardoop_rangeip_rangepoteffective_stackhero
异步信号调度 status 可为 computingqueryablebusy;tree 的 spot_status 才是读取就绪信号。
读取作用域仅把 solve handle 用于其 tree/release 调用;只把该 tree 返回的 token 作为 /v1/gto/solver/nodenode 输入。
配额只有新触发求解时才会出现 solve_quota。tree、node 与可选 release 操作在公开文档中标为免费。
结果边界可读取 node 可含 strategy,或 actionsrange_strategy;不可读取状态不是策略。

1. 调度并保存 handle

提交完整、自包含的自定义翻牌、转牌或河牌局面。board 长度决定街道。保存返回的 solve handle;后续 tree 与 release 请求都用它作为标识。

curl -s https://pokerai.bet/v1/gto/solver \
+  -H "Authorization: Bearer $POKERAI_API_KEY" \
+  -H "Content-Type: application/json" \
+  -d '{"board":"2c2h2s","oop_range":"AA,KK","ip_range":"QQ,JJ","pot":6,"effective_stack":100,"hero":"OOP"}'

调度响应可能为 computingqueryable。若为 busy,则没有可轮询的 solve handle;应将其视为 solver 容量状态而不是已完成求解。公开 contract 不承诺等待时间或可用性等级。

2. 读取策略前先轮询 tree

使用 handle 调用 POST /v1/gto/solver/tree。对于 flop solve,turn_card 可选;river_card 也可选,并在需要消歧时与 turn_card 配对。不要为其他 solve 虚构这些字段。

curl -s https://pokerai.bet/v1/gto/solver/tree \
+  -H "Authorization: Bearer $POKERAI_API_KEY" \
+  -H "Content-Type: application/json" \
+  -d '{"solve":"<solve handle>"}'

只有 spot_statusqueryable 才继续。computing 不是策略结果。no_nodes 是所查询 round 或 runout 的终态,应停止轮询。expired 表示 handle 已不能继续使用,必须重新调度该局面。

3. 用 tree token 读取节点

可查询的 tree 返回节点,字段包括 nodeis_herostatustoken。将该 token 作为 node 传入;它既不能替代 API key,也不是可复用的 solve handle。不要在客户端日志中记录 handle 或 token。

curl -s https://pokerai.bet/v1/gto/solver/node \
+  -H "Authorization: Bearer $POKERAI_API_KEY" \
+  -H "Content-Type: application/json" \
+  -d '{"node":"<token from this solve tree>"}'

Hero node 可返回 strategy。Villain node,或不带 hole_cards 的请求,可返回 actionsrange_strategy。若节点响应的 node_statuscomputingexpirederror,不得将其展示为策略;error 可能带有 message

4. 只解读可读取节点

可读取的 hero node 可含 strategy。Villain node,或不带 hole_cards 的请求,可含 actionsrange_strategy。这些字段只描述返回的 node,不代表不同 tree、局面或游戏格式的承诺。

若 tree 为 computingno_nodesexpired,请按文档停止或重新调度,不要展示结果。若要在 hosted API 与桌面 solver 间选择研究工具,请看透明对比

仅限训练和复盘

将此生命周期用于离线训练、教学、手牌复盘、学习和研究。它只管理已提交 solve 的状态,不代表实时牌局行动交付,也不构成策略质量、延迟或性能声明。

Pokerai API 禁止在真实资金牌桌上提供实时辅助。不要把 solver 调度、轮询、节点策略或 release 流程接入 live-table automation 或牌局中的行动提示。

生命周期端点映射

这三个操作足以完成本页描述的生命周期;仅消费当前 OpenAPI contract 已文档化的字段。

端点生命周期角色文档化输入或信号
POST /v1/gto/solver调度必填局面字段;保存 solve,检查 status 和可选的 solve_quota
POST /v1/gto/solver/tree轮询发送 solve;等待 spot_status: queryable 并选择返回的 token
POST /v1/gto/solver/node读取将对应 tree token 作为 node 发送;可选 hole_cards 会收窄 hero 策略读取。

相关资源