全面更换orjson

This commit is contained in:
雅诺狐
2025-08-26 14:20:26 +08:00
parent bfabf896b5
commit 4a44ba9866
45 changed files with 991 additions and 1279 deletions

View File

@@ -1,4 +1,4 @@
import json
import orjson
import os
import hashlib
import time
@@ -109,7 +109,7 @@ class Individuality:
"personality_side": personality_side,
"compress_personality": global_config.personality.compress_personality,
}
personality_str = json.dumps(personality_config, sort_keys=True)
personality_str = orjson.dumps(personality_config, option=orjson.OPT_SORT_KEYS).decode('utf-8')
personality_hash = hashlib.md5(personality_str.encode("utf-8")).hexdigest()
# 身份配置哈希
@@ -117,7 +117,7 @@ class Individuality:
"identity": identity,
"compress_identity": global_config.personality.compress_identity,
}
identity_str = json.dumps(identity_config, sort_keys=True)
identity_str = orjson.dumps(identity_config,option=orjson.OPT_SORT_KEYS).decode('utf-8')
identity_hash = hashlib.md5(identity_str.encode("utf-8")).hexdigest()
return personality_hash, identity_hash
@@ -173,8 +173,8 @@ class Individuality:
if os.path.exists(self.meta_info_file_path):
try:
with open(self.meta_info_file_path, "r", encoding="utf-8") as f:
return json.load(f)
except (json.JSONDecodeError, IOError) as e:
return orjson.loads(f.read())
except (orjson.JSONDecodeError, IOError) as e:
logger.error(f"读取meta_info文件失败: {e}, 将创建新文件。")
return {}
return {}
@@ -184,7 +184,9 @@ class Individuality:
try:
os.makedirs(os.path.dirname(self.meta_info_file_path), exist_ok=True)
with open(self.meta_info_file_path, "w", encoding="utf-8") as f:
json.dump(meta_info, f, ensure_ascii=False, indent=2)
f.write(orjson.dumps(
meta_info, option=orjson.OPT_INDENT_2).decode('utf-8')
)
except IOError as e:
logger.error(f"保存meta_info文件失败: {e}")
@@ -193,8 +195,8 @@ class Individuality:
if os.path.exists(self.personality_data_file_path):
try:
with open(self.personality_data_file_path, "r", encoding="utf-8") as f:
return json.load(f)
except (json.JSONDecodeError, IOError) as e:
return orjson.loads(f.read())
except (orjson.JSONDecodeError, IOError) as e:
logger.error(f"读取personality_data文件失败: {e}, 将创建新文件。")
return {}
return {}
@@ -204,7 +206,9 @@ class Individuality:
try:
os.makedirs(os.path.dirname(self.personality_data_file_path), exist_ok=True)
with open(self.personality_data_file_path, "w", encoding="utf-8") as f:
json.dump(personality_data, f, ensure_ascii=False, indent=2)
f.write(orjson.dumps(
personality_data, option=orjson.OPT_INDENT_2).decode('utf-8')
)
logger.debug(f"已保存personality数据到文件: {self.personality_data_file_path}")
except IOError as e:
logger.error(f"保存personality_data文件失败: {e}")

View File

@@ -1,5 +1,5 @@
from typing import Dict, List
import json
import orjson
import os
from dotenv import load_dotenv
import sys
@@ -158,7 +158,7 @@ class PersonalityEvaluatorDirect:
end_idx = ai_response.rfind("}") + 1
if start_idx != -1 and end_idx != 0:
json_str = ai_response[start_idx:end_idx]
scores = json.loads(json_str)
scores = orjson.loads(json_str)
# 确保所有分数在1-6之间
return {k: max(1, min(6, float(v))) for k, v in scores.items()}
else:
@@ -296,14 +296,18 @@ def main():
# 保存简化的结果
with open(save_path, "w", encoding="utf-8") as f:
json.dump(simplified_result, f, ensure_ascii=False, indent=4)
f.write(orjson.dumps(
simplified_result, option=orjson.OPT_INDENT_2).decode('utf-8')
)
print(f"\n结果已保存到 {save_path}")
# 同时保存完整结果到results目录
os.makedirs("results", exist_ok=True)
with open("results/personality_result.json", "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=2)
f.write(orjson.dumps(
result, option=orjson.OPT_INDENT_2).decode('utf-8')
)
if __name__ == "__main__":

View File

@@ -1,4 +1,4 @@
import json
import orjson
import os
from typing import Any
@@ -14,7 +14,7 @@ def load_scenes() -> dict[str, Any]:
json_path = os.path.join(current_dir, "template_scene.json")
with open(json_path, "r", encoding="utf-8") as f:
return json.load(f)
return orjson.loads(f.read())
PERSONALITY_SCENES = load_scenes()