mirror of
https://github.com/open-compass/opencompass.git
synced 2025-05-30 16:03:24 +08:00

* support supergpqa * remove unnecessary code * remove unnecessary code * Add Readme * Add Readme * fix lint * fix lint * update * update --------- Co-authored-by: mkj3085003 <mkj3085003@gmail.com> Co-authored-by: MaiziXiao <xxllcc1993@gmail.com>
89 lines
2.5 KiB
Python
89 lines
2.5 KiB
Python
import yaml
|
|
|
|
|
|
class ConfigWrapper:
|
|
|
|
def __init__(self, config_path):
|
|
self._config = {}
|
|
with open(config_path, 'r') as file:
|
|
self._config = yaml.safe_load(file)
|
|
for key, value in self._config.items():
|
|
setattr(self, key, value)
|
|
|
|
def __setattr__(self, key, value):
|
|
if key.startswith('_'):
|
|
super().__setattr__(key, value)
|
|
else:
|
|
self._config[key] = value
|
|
super().__setattr__(key, value)
|
|
|
|
def __getattr__(self, key):
|
|
if key in self._config:
|
|
return self._config[key]
|
|
raise AttributeError(
|
|
f"'ConfigWrapper' object has no attribute '{key}'")
|
|
|
|
def get_id(self, data):
|
|
if isinstance(self._config.get('id_key'), str):
|
|
return data.get(self._config.get('id_key'), None)
|
|
elif isinstance(self._config.get('id_key'), list):
|
|
return '_'.join([
|
|
str(data[key]) for key in self._config.get('id_key')
|
|
if key in data
|
|
])
|
|
|
|
def print_all_keys(self):
|
|
print('config keys:')
|
|
for key, value in self._config.items():
|
|
print(f' - {key}: {value}')
|
|
|
|
|
|
config_wrapper = None
|
|
|
|
|
|
def initialize_config(config_path):
|
|
global config_wrapper
|
|
config_wrapper = ConfigWrapper(config_path)
|
|
|
|
|
|
def get_config_wrapper():
|
|
global config_wrapper
|
|
if config_wrapper is None:
|
|
raise RuntimeError(
|
|
'ConfigWrapper not initialized. Call initialize_config first.')
|
|
return config_wrapper
|
|
|
|
|
|
if __name__ == '__main__':
|
|
config_path = 'config/config.yaml'
|
|
initialize_config(config_path)
|
|
data = {
|
|
'idx':
|
|
'50',
|
|
'step':
|
|
21,
|
|
'question':
|
|
'Ciphertext: "17,156,4,54,213,17,23,84,228,54,281"\n\n'
|
|
'Please provide the decrypted answer, encapsulated in double square'
|
|
' brackets. For example, the format should be: [[decrypted answer]].',
|
|
'answer':
|
|
'[[P]]',
|
|
'category':
|
|
'Decryption',
|
|
'rule_id':
|
|
'23',
|
|
'input':
|
|
'Ciphertext: "17,156,4,54,213,17,23,84,228,54,281"',
|
|
'steps_num':
|
|
23,
|
|
'description':
|
|
'For a number c=228 in the ciphertext:\n'
|
|
'Calculate z = c^e mod n. Here ^ means multiplication.\nz is 80.'
|
|
'\nBased on the decimal number represented by z, use the ascii '
|
|
'code to find the corresponding letter as the plaintext letter p.'
|
|
'\nPlease give the letter p in [[...]] format.\n',
|
|
'atom':
|
|
80,
|
|
}
|
|
print(config_wrapper.get_id(data))
|