Spaces:
Build error
Build error
File size: 2,115 Bytes
01523b5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
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
@classmethod
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)
|