"""AutoGen backend — uses microsoft/autogen for multi-agent conversation.""" def check_installed(): try: import autogen # noqa return True except ImportError: return False def run(scenario_path: str, config: dict): if not check_installed(): print("AutoGen is not installed. Run:\n pip install meeting-room[autogen]") return [] import yaml import autogen from meeting_room.api_client import init_providers from meeting_room.scenario_loader import load_scenario scenario = load_scenario(scenario_path) init_providers(config) roles = config["roles"] participants = scenario.get("participants", list(roles.keys())) llm_configs = {} for prov_name, prov_cfg in config["providers"].items(): llm_configs[prov_name] = { "base_url": prov_cfg["base_url"], "api_key": prov_cfg["api_key"], } agents = [] for role_id in participants: role = roles[role_id] prov = role["provider"] llm_cfg = dict(llm_configs[prov]) llm_cfg["model"] = role["model"] agent = autogen.ConversableAgent( name=role["name"], system_message=role["system_prompt"].strip(), llm_config={"config_list": [llm_cfg], "temperature": role.get("temperature", 0.7)}, human_input_mode="NEVER", ) agents.append(agent) groupchat = autogen.GroupChat( agents=agents, messages=[], max_round=scenario.get("max_rounds", config["defaults"]["max_rounds"]), ) manager = autogen.GroupChatManager( groupchat=groupchat, llm_config={"config_list": [llm_configs[participants[0]]]}, ) agents[0].initiate_chat(manager, message=scenario["problem"]) return groupchat.messages