← すべてのガイド
このページの内容
チュートリアル GTO戦略 · 02/06 トレーナー 18 分 中級

パート 1:最初の戦略呼び出し

制御されたトレーニングシナリオまたは完了したハンドから、GTOポーカートレーナーの中核を構築します。これはCounterplayを支えるものと同種の戦略レイヤーです。このパートでは、実際のプリフロップ戦略呼び出しを行い、検証可能なミックス頻度を読み取り、レビュー後に意思決定を評価します。

更新日 メンテナンス担当 Pokerai API

1 · 最初の呼び出し 2 · レンジグリッド 3 · ポストフロップツリー 4 · ターン/リバーの解析

必要なもの

無料のAPIキー(こちらから取得)とcurlまたはPython 3。キーを環境変数として設定します:

export POKERAI_API_KEY="gto_your_key_here"

ステップ 1 · 最初の呼び出し

自分が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 ベットです:9bb に、100% の頻度でレイズします。situationは送信したアクションから導出されます(ここでは、1 回のレイズに直面 = "Raise")。

ステップ 2 · 頻度を読む

重要な点:APIは、各アクションのGTO frequencyであるミックス戦略を返します。単一の「推奨」アクションではありません。ほとんどのハンドは純粋(1つのアクションが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 として正しいです。常にフォールドする、または常にレイズするプレイヤーは、個々のハンドにおいて "間違って" いるわけではありません — しかし多くのハンドを通じては均衡ミックスから逸脱します。これはまさにトレーナーが測定するものです。

ステップ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 · 意思決定を採点する

ここがトレーナーの核心です。ヒーローのアクションを、選択したアクションの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)
これは Counterplay の採点方法そのものです。重大度は選択したアクション自体の頻度に基づくため、低頻度の混合アクションは罰せられません。(ケーススタディを参照してください。)

作成したもの

機能する戦略レイヤー:文書化されたトレーニングスポットについてGTO頻度を取得し、プレイヤーの完了済みの意思決定を均衡戦略と照らして評価します。Pokerai API は決定論的な戦略に関する事実を提供します。コーチやLLMは返された頻度を説明できますが、ソルバーの代わりにはなりません。このループ、すなわちスポット → 戦略 → 評価が、ストリートごとに進めるトレーナーのすべてです。

許容される利用

制御されたトレーニングシナリオまたはすでに終了したハンドからの入力のみを受け付けます。影響の大きい採点、コーチング、またはプロダクト出力は、人間がレビューできる状態に保ちます。Pokerai API は、トレーニング、コーチング、ハンドレビュー、学習、研究のためのものです。リアルマネーテーブルでのリアルタイム支援は禁止されています。

次へ — パート 2:13×13 レンジグリッド

1 回の呼び出しでレンジ全体を取得して、レンジページのように表示します。近日公開。

関連リソース