iOSアプリ
PokerKit のゲームメカニクスと意思決定の記録を備えた SwiftUI インターフェース。
ケーススタディ
開発者が利用できるのと同じ Pokerai API を通じて、5 人の GTO 相手がすべてのハンドをプレイするネイティブの 6-max、100BB トレーニングテーブルです。Counterplay はヒーローのすべての意思決定を記録し、返された頻度に照らして評価し、繰り返される逸脱をリークレポートにまとめ、基礎となるハンドをレビューや任意の根拠に基づくコーチングに備えて保持します。


01 / アーキテクチャ
Counterplay はゲームメカニクス、セッション状態、戦略上の真実を分離します。PokerKit が 6 人テーブルを進行させ、トレーナーサービスが順序付けられたアクションライン、有効スタック、レンジ、レビューコンテキストを保持し、Pokerai API が事前解析済みの検索結果またはリアルタイムのソルバー出力を提供します。同じレスポンスで、アプリに非公開のチャートを埋め込むことなく、相手のプレイ、ヒーローの評価、レンジの可視化、後のコーチングを実現できます。
PokerKit のゲームメカニクスと意思決定の記録を備えた SwiftUI インターフェース。
FastAPI が現在のハンド、アクションライン、レンジ、レビューコンテキストを保持します。
事前解析済みのプリフロップとフロップの戦略に加え、キューに入れたターンとリバーの解析。
02 / プロダクトループ
このプロダクトは、単一のソルバー応答を公開するだけではありません。個々の意思決定を解析レポートに変換し、その元となるハンドをレビューと継続的な学習に使えるよう維持します。
類似する意思決定をグループ化し、サンプル数と平均偏差を表示したうえで、繰り返されるプリフロップおよびポストフロップのパターンを深刻度でランク付けします。

ハンド、ポジション、またはカードで検索し、結果と純 BB を確認してから、レポートの元となった正確な意思決定シーケンスを再度開きます。

迅速な事前解析済み検索または正確なライブ解析を選び、ポットとポジションを設定して、その結果を焦点を絞った議論に活用します。

プレイヤーがロケール、テーブル識別情報、説明に使用する任意のモデルを選択できる一方で、トレーニング画面の焦点を維持します。

03 / エンドポイント一覧
実際のクライアントから追跡(メソッド → エンドポイント → 使用箇所):
/v1/gto/preflop相手のプリフロップアクション + ヒーローのプリフロップ意思決定を評価
/v1/gto/preflop/rangeレビューに表示される13×13のレンジグリッド
/v1/gto/flop/treeフロップ場面のポストフロップ意思決定ツリー
/v1/gto/flop/node現在のフロップノードにおける戦略(+ 評価)
/v1/gto/flop/projected-rangeフロップのアクションラインに沿ってレンジを更新
/v1/gto/rangeアクションラインの solver_results を組み立てる
/v1/gto/turn/projected-rangeフロップ → ターンのレンジ引き継ぎ
/v1/gto/solverターン/リバーの場面をリアルタイム解析のために送信
/v1/gto/solver/tree解析済みのターン/リバースポットの意思決定ツリー
/v1/gto/solver/nodeターン/リバーの意思決定ノードにおける戦略(+ グレーディング)
04 / 実装の証明
クライアントはチャートや解析結果を埋め込みません。現在のスポットを整形し、認証済みリクエストを送信して、正規化した戦略頻度をトレーナーに返します。
class GtoClient:
def __init__(self, settings):
self._headers = {"Authorization": f"Bearer {settings.gto_api_key}"}
async def preflop(self, hole_cards, hero_pos, preflop_actions):
body = {"hole_cards": hole_cards,
"positions": {"hero": hero_pos},
"preflop_actions": preflop_actions}
return _strategy_from(await self._post("/v1/gto/preflop", body))
async def flop_node(self, node_token, hole_cards=None):
body = {"node": node_token}
if hole_cards: body["hole_cards"] = hole_cards
return _strategy_from(await self._post("/v1/gto/flop/node", body))
# … + solver_schedule / solver_tree / solver_node, all one-liners over _post()05 / 意思決定ループ
カード、ポジション、順序付きアクションを送信し、返された頻度をプレイと評価に使用します。
事前解析済みツリーを読み込み、アクティブなノードを解析し、各アクション後のレンジを投影します。
ハンドレンジをリアルタイムソルバーに渡し、ジョブをポーリングしてから、生成された戦略ノードを読み取ります。
選択したアクションをその GTO 頻度で評価し、構造化されたコンテキストを任意のコーチに渡します。
Counterplay は Pokerai API が保守する Pokerai API の製品統合です。第三者顧客による導入事例として提示されているものではありません。 この技術記録は、iOS トレーナーのワークフローと、そのワークフローで使用される公開 API エンドポイントを記録しています。 現在の製品は、6人制100BBキャッシュゲームのトレーニングを対象とし、ヒーローの席をランダム化し、戦略に基づく5人の相手を使用し、マルチウェイのポストフロップスポットをヘッズアップの近似に簡略化します。コーチングは任意です。Counterplay はリアルマネーテーブルでのリアルタイム支援を有効にしません。このページは、顧客導入、ダウンロード数、ベンチマーク性能、商業パートナーシップ、または外部からの支持について、いかなる主張もしていません。
同じ API で構築する
無料キーから始めて、プリフロップの呼び出しを 1 回行い、ここで使用されている同じ公開エンドポイントを利用してください。