Spaces:
Runtime error
Runtime error
| import asyncio | |
| import logging | |
| from typing import List | |
| # from agentverse.agents import Agent | |
| from agentverse.agents.simulation_agent.conversation import BaseAgent | |
| from agentverse.environments import BaseEnvironment | |
| from agentverse.initialization import load_agent, load_environment, prepare_task_config | |
| openai_logger = logging.getLogger("openai") | |
| openai_logger.setLevel(logging.WARNING) | |
| class Simulation: | |
| def __init__(self, agents: List[BaseAgent], environment: BaseEnvironment): | |
| self.agents = agents | |
| self.environment = environment | |
| def from_task(cls, task: str, tasks_dir: str): | |
| """Build an AgentVerse from a task name. | |
| The task name should correspond to a directory in `tasks` directory. | |
| Then this method will load the configuration from the yaml file in that directory. | |
| """ | |
| # Prepare the config of the task | |
| task_config = prepare_task_config(task, tasks_dir) | |
| # Build the agents | |
| agents = [] | |
| for agent_configs in task_config["agents"]: | |
| agent = load_agent(agent_configs) | |
| agents.append(agent) | |
| # Build the environment | |
| env_config = task_config["environment"] | |
| env_config["agents"] = agents | |
| environment = load_environment(env_config) | |
| return cls(agents, environment) | |
| def run(self): | |
| """Run the environment from scratch until it is done.""" | |
| self.environment.reset() | |
| while not self.environment.is_done(): | |
| asyncio.run(self.environment.step()) | |
| self.environment.report_metrics() | |
| def reset(self): | |
| self.environment.reset() | |
| for agent in self.agents: | |
| agent.reset() | |
| def next(self, *args, **kwargs): | |
| """Run the environment for one step and return the return message.""" | |
| return_message = asyncio.run(self.environment.step(*args, **kwargs)) | |
| return return_message | |
| def update_state(self, *args, **kwargs): | |
| """Run the environment for one step and return the return message.""" | |
| self.environment.update_state(*args, **kwargs) | |