text: wait=tenacity.wait_none(),  # No waiting time between retries    retry=tenacity.retry_if_exception_type(ValueError),    before_sleep=lambda retry_state: print(        f"ValueError occurred: {retry_state.outcome.exception()}, retrying..."    ),    retry_error_callback=lambda retry_state: 0,)  # Default value when all retries are exhausteddef ask_for_bid(agent) -> str:    """    Ask for agent bid and parses the bid into the correct format.    """    bid_string = agent.bid()    bid = int(bid_parser.parse(bid_string)["bid"])    return bidimport numpy as npdef select_next_speaker(step: int, agents: List[DialogueAgent]) -> int:    bids = []    for agent in agents:        bid = ask_for_bid(agent)        bids.append(bid)    # randomly select among multiple agents with the same bid    max_value = np.max(bids)    max_indices = np.where(bids == max_value)[0]    idx = np.random.choice(max_indices)    print("Bids:")    for i, (bid, agent) in enumerate(zip(bids, agents)):        print(f"\t{agent.name} bid: {bid}")        if i == idx:            selected_name = agent.name    print(f"Selected: {selected_name}")    print("\n")    return idxMain Loopâ€‹characters = []for character_name, character_system_message, bidding_template in zip(    character_names, character_system_messages,