glass_bridge / examples /example_usage.py
viirii's picture
Upload folder using huggingface_hub
467a609 verified
from __future__ import annotations
import argparse
import json
from glass_bridge.client import OpenEnvGlassBridgeClient
from glass_bridge.models import AgentAction, ResetRequest, StepRequest
from glass_bridge.policies import build_tournament_glass_bridge_population
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--base-url", default="http://127.0.0.1:8000")
parser.add_argument("--seed", type=int, default=7)
parser.add_argument("--initial-players", type=int, default=16)
parser.add_argument("--first-round-steps", type=int, default=18)
parser.add_argument("--max-rounds", type=int, default=25)
parser.add_argument("--max-turns", type=int, default=9600)
parser.add_argument(
"--adaptation-kind",
choices=["none", "truth_scaled_by_reputation"],
default="truth_scaled_by_reputation",
)
args = parser.parse_args()
client = OpenEnvGlassBridgeClient(base_url=args.base_url)
try:
reset_response = client.reset(
ResetRequest(
seed=args.seed,
initial_players=args.initial_players,
first_round_num_steps=args.first_round_steps,
max_rounds=args.max_rounds,
share_rates=[0.0, 0.25, 0.5, 0.75, 1.0],
truth_rates=[0.0, 0.25, 0.5, 0.75, 1.0],
llm_model_pool=["qwen3.5"],
)
)
result = reset_response.result
policies = build_tournament_glass_bridge_population(
result.info.strategy_profiles,
seed=args.seed,
adaptation_config={"kind": args.adaptation_kind},
)
turn_idx = 0
while not result.done and turn_idx < args.max_turns:
actions = {}
for agent_name, observation in result.observations.items():
policy_action = policies[agent_name].select_action(observation.model_dump(mode="python"))
actions[agent_name] = AgentAction.from_policy_output(policy_action)
step_response = client.step(StepRequest(session_id=reset_response.session_id, actions=actions))
result = step_response.result
turn_idx += 1
if not result.done:
raise RuntimeError(f"Environment did not terminate within {args.max_turns} turns")
payload = {
"session_id": reset_response.session_id,
"turns": turn_idx,
"winner": result.info.winner,
"winner_strategy": result.info.winner_strategy,
"rounds_played": result.info.round_idx,
"events": result.info.events,
"final_phase": result.info.phase,
"active_agents": result.info.active_agents,
}
print(json.dumps(payload, indent=2))
finally:
client.close()
if __name__ == "__main__":
main()