| import sys | |
| sys.path.insert(0, '.') | |
| from fleet_train import parse_action_from_text, reward_fn | |
| # Test parser | |
| print('=== PARSER TEST ===') | |
| tests = [ | |
| '{"action_type": "intervene", "worker_id": "worker_2", "reason": "budget low"}', | |
| 'intervene worker_2', | |
| '{"action": "monitor", "worker": "worker_1"}', | |
| ] | |
| for t in tests: | |
| result = parse_action_from_text(t) | |
| print(f'Input: {t[:60]}') | |
| print(f'Output: {result}') | |
| print() | |
| # Test reward | |
| print('=== REWARD TEST ===') | |
| # Mocking task_id because reward_fn is usually inside train_grpo but I might have moved it or need to mock the environment it expects | |
| try: | |
| # If reward_fn is now global or we can call it | |
| rewards = reward_fn(['intervene on worker_2 because flag is 1']) | |
| print(f'Reward for intervene on worker_2: {rewards[0]}') | |
| rewards2 = reward_fn(['{"action_type": "intervene", "worker_id": "worker_2", "reason": "flag detected"}']) | |
| print(f'Reward for JSON intervene on worker_2: {rewards2[0]}') | |
| except Exception as e: | |
| print(f'Reward test failed (likely because task_id not defined): {e}') | |