Initial commit: Meeting Room v0.1.0
Multi-agent discussion framework: - Custom/AutoGen/CrewAI backends - Multi-provider API (role→model binding) - Tools system (files, web, commands) - Markdown scenarios with YAML frontmatter - Workspace init (meeting-room init) - Session save (--save)
This commit is contained in:
60
meeting_room/backends/autogen/run.py
Normal file
60
meeting_room/backends/autogen/run.py
Normal file
@@ -0,0 +1,60 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user