Spaces:
Build error
Build 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) | |