1616 render_board ,
1717 unwrap_move ,
1818)
19+ from art .guided_completion import get_guided_completion_params
1920
2021load_dotenv ()
2122
@@ -36,7 +37,7 @@ async def get_agent_move(
3637 game : TicTacToeGame ,
3738 player_state : PlayerState ,
3839 model : art .Model ,
39- shadowmaster : art .Model | None = None ,
40+ teacher : art .Model | None = None ,
4041 predestined_move : str | None = None ,
4142) -> str :
4243 assert isinstance (model .config , ModelConfig )
@@ -46,21 +47,20 @@ async def get_agent_move(
4647
4748 messages = player_state .trajectory .messages ()
4849 try :
49- if shadowmaster and not predestined_move :
50- assert isinstance (shadowmaster .config , ModelConfig )
51- shadowmaster_client = shadowmaster .openai_client ()
52- shadowmaster_completion = await shadowmaster_client .chat .completions .create (
53- model = shadowmaster .get_inference_name (),
50+ guided_choice = None
51+ if teacher and not predestined_move :
52+ assert isinstance (teacher .config , ModelConfig )
53+ teacher_client = teacher .openai_client ()
54+ teacher_completion = await teacher_client .chat .completions .create (
55+ model = teacher .get_inference_name (),
5456 messages = messages ,
5557 max_completion_tokens = 2000
56- if shadowmaster .config .requires_reasoning
58+ if teacher .config .requires_reasoning
5759 else 100 ,
58- reasoning_effort = "low"
59- if shadowmaster .config .requires_reasoning
60- else None ,
60+ reasoning_effort = "low" if teacher .config .requires_reasoning else None ,
6161 temperature = 1.0 ,
6262 )
63- predestined_move = shadowmaster_completion . choices [ 0 ]. message . content
63+ guided_choice , _ , _ = get_guided_completion_params ( teacher_completion )
6464
6565 client = model .openai_client ()
6666 completion = await client .chat .completions .create (
@@ -69,7 +69,7 @@ async def get_agent_move(
6969 max_completion_tokens = 2000 if model .config .requires_reasoning else 100 ,
7070 reasoning_effort = "low" if model .config .requires_reasoning else None ,
7171 temperature = 1.0 ,
72- extra_body = {"guided_choice" : [ predestined_move ] }
72+ extra_body = {"guided_choice" : guided_choice }
7373 if predestined_move and model .trainable
7474 else None ,
7575 )
@@ -102,8 +102,8 @@ def record_first_move_metrics(trajectory: art.Trajectory, square: str) -> None:
102102class TicTacToeScenario (BaseModel ):
103103 step : int
104104 split : str
105- x_shadowmaster : art .Model | None = None
106- o_shadowmaster : art .Model | None = None
105+ x_teacher : art .Model | None = None
106+ o_teacher : art .Model | None = None
107107 initial_move : str | None = None
108108
109109
@@ -154,16 +154,14 @@ async def rollout(
154154 for symbol in ["x" , "o" ]:
155155 model = x_model if symbol == "x" else o_model
156156 player_state = player_states [symbol ]
157- shadowmaster = (
158- scenario .x_shadowmaster if symbol == "x" else scenario .o_shadowmaster
159- )
157+ teacher = scenario .x_teacher if symbol == "x" else scenario .o_teacher
160158
161159 try :
162160 square = await get_agent_move (
163161 game = game ,
164162 player_state = player_state ,
165163 model = model ,
166- shadowmaster = shadowmaster ,
164+ teacher = teacher ,
167165 predestined_move = scenario .initial_move
168166 if move_number == 0
169167 else None ,
@@ -214,9 +212,7 @@ async def rollout(
214212 messages = messages [:- 1 ]
215213
216214 model = x_model if symbol == "x" else o_model
217- shadowmaster = (
218- scenario .x_shadowmaster if symbol == "x" else scenario .o_shadowmaster
219- )
215+ teacher = scenario .x_teacher if symbol == "x" else scenario .o_teacher
220216 try :
221217 reported_win = (
222218 trajectory .metrics ["win" ] if "win" in trajectory .metrics else - 1
@@ -236,7 +232,7 @@ async def rollout(
236232 "reward" : str (trajectory .reward ),
237233 "invalid_move" : str (player_state .invalid_move ),
238234 "symbol" : symbol ,
239- "shadowmaster " : shadowmaster .name if shadowmaster else "" ,
235+ "teacher " : teacher .name if teacher else "" ,
240236 "initial_move" : unwrap_move (scenario .initial_move )
241237 if scenario .initial_move
242238 else "" ,
0 commit comments