完成大量美化
This commit is contained in:
109
generate_test_chats.py
Normal file
109
generate_test_chats.py
Normal file
@@ -0,0 +1,109 @@
|
||||
"""
|
||||
为测试角色生成测试聊天记录
|
||||
"""
|
||||
import json
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
def create_test_chat(character_name, first_mes, chat_name="默认聊天"):
|
||||
"""
|
||||
为角色创建测试聊天记录
|
||||
|
||||
Args:
|
||||
character_name: 角色名称
|
||||
first_mes: 开场白
|
||||
chat_name: 聊天名称
|
||||
"""
|
||||
# 聊天文件路径
|
||||
chat_dir = Path(f"data/characters/{character_name}/chats")
|
||||
chat_dir.mkdir(parents=True, exist_ok=True)
|
||||
chat_file = chat_dir / f"{chat_name}.jsonl"
|
||||
|
||||
# 如果文件已存在,跳过
|
||||
if chat_file.exists():
|
||||
print(f"跳过已存在的聊天: {character_name}/{chat_name}")
|
||||
return
|
||||
|
||||
# 生成header
|
||||
header = {
|
||||
"user_name": "User",
|
||||
"character_name": character_name,
|
||||
"integrity": str(uuid.uuid4()),
|
||||
"chat_id_hash": str(uuid.uuid4()),
|
||||
"note_prompt": "",
|
||||
"note_interval": 0,
|
||||
"note_position": 0,
|
||||
"note_depth": 0,
|
||||
"note_role": 0,
|
||||
"extensions": {},
|
||||
"timedWorldInfo": {},
|
||||
"variables": {},
|
||||
"tainted": False,
|
||||
"lastInContextMessageId": -1
|
||||
}
|
||||
|
||||
# 生成AI开场白消息(floor 1)
|
||||
ai_message = {
|
||||
"name": character_name,
|
||||
"is_user": False,
|
||||
"is_system": False,
|
||||
"floor": 1,
|
||||
"send_date": str(int(datetime.now().timestamp() * 1000)),
|
||||
"mes": first_mes,
|
||||
"extra": {},
|
||||
"swipes": [],
|
||||
"swipe_id": 0
|
||||
}
|
||||
|
||||
# 写入文件
|
||||
with open(chat_file, 'w', encoding='utf-8') as f:
|
||||
f.write(json.dumps(header, ensure_ascii=False) + '\n')
|
||||
f.write(json.dumps(ai_message, ensure_ascii=False) + '\n')
|
||||
|
||||
print(f"✓ 已创建聊天: {character_name}/{chat_name}")
|
||||
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
characters_dir = Path("data/characters")
|
||||
|
||||
if not characters_dir.exists():
|
||||
print("错误: characters目录不存在")
|
||||
return
|
||||
|
||||
print("开始为测试角色生成聊天记录...\n")
|
||||
|
||||
for char_folder in characters_dir.iterdir():
|
||||
if not char_folder.is_dir():
|
||||
continue
|
||||
|
||||
char_name = char_folder.name
|
||||
char_json = char_folder / "character.json"
|
||||
|
||||
if not char_json.exists():
|
||||
print(f"跳过 {char_name}: 没有character.json文件")
|
||||
continue
|
||||
|
||||
try:
|
||||
# 读取角色信息
|
||||
with open(char_json, 'r', encoding='utf-8') as f:
|
||||
char_data = json.load(f)
|
||||
|
||||
first_mes = char_data.get('first_mes', '')
|
||||
|
||||
if not first_mes:
|
||||
print(f"跳过 {char_name}: 没有开场白")
|
||||
continue
|
||||
|
||||
# 创建测试聊天
|
||||
create_test_chat(char_name, first_mes)
|
||||
|
||||
except Exception as e:
|
||||
print(f"处理 {char_name} 时出错: {e}")
|
||||
|
||||
print("\n完成!")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user