V-MAGE-DEMO / utils /config.py
Fengx1n's picture
Initial DEMO
e53fda1
import os
import time
from utils import Singleton
from utils.file_utils import assemble_project_path, get_project_root
from utils.json_utils import load_json
from utils.dict_utils import kget
class Config(metaclass=Singleton):
# work_dir = './runs'
FPS = 30
"""
Configuration class.
"""
def load_env_config(self, env_config_path):
# Ensure env_config_path exists
if not os.path.exists(env_config_path):
raise FileNotFoundError(f"Level config path {env_config_path} does not exist.")
# 加载游戏参数
path = assemble_project_path(env_config_path)
# print(path)
self.env_config = load_json(path)
self.env_name = kget(self.env_config, 'env_name', default='')
self.env_short_name = kget(self.env_config, 'env_short_name', default='')
self.game_module = kget(self.env_config, 'game_module', default='')
self.game_class = kget(self.env_config, 'game_class', default='')
# self.work_dir = assemble_project_path(os.path.join(self.work_dir, str(time.time())))
self.use_instruction = kget(self.env_config, 'use_instruction', default='False') == "True"
if self.use_instruction:
self.instruction = []
for item in kget(self.env_config, 'instruction', default=[]):
instruction_content = {}
if "text" in item:
instruction_content["text"] = item["text"]
if "image" in item:
instruction_content["image"] = item["image"]
self.instruction.append(instruction_content)
self.use_history = kget(self.env_config, 'use_history', default='False') == "True"
if self.use_history:
self.history = []
for item in kget(self.env_config, 'history', default=[]):
history_content = {}
if "text" in item:
history_content["text"] = item["text"]
if "image" in item:
history_content["image"] = item["image"]
self.history.append(history_content)
self.use_sample_history = kget(self.env_config, "use_sample_history", default="False") == "True"
if self.use_sample_history:
self.sample_size = int(kget(self.env_config, "sample_size", default=0))
self.sample_histroy_template = kget(self.env_config, "sample_histroy_template", default={})
print("sample_histroy_template", self.sample_histroy_template)
self.prompt = kget(self.env_config, 'prompt', default='')
self.instruction_images = kget(self.env_config, 'instruction_images', default='Error')
def load_level_config(self, level_config_path):
# Ensure level_config_path exists
if not os.path.exists(level_config_path):
self.level_config = None
# raise FileNotFoundError(f"Level config path {level_config_path} does not exist.")
print("Level config path does not exist: ", level_config_path)
return
print("loading level config: ", level_config_path)
# 加载关卡参数
path = assemble_project_path(level_config_path)
# print(path)
self.level_config = load_json(path)
self.level_prompt = kget(self.level_config, 'level_prompt', default=None)