🤭 Please refer to https://github.com/svjack/Genshin-Impact-Character-Chat to get more info
Install
pip install peft transformers bitsandbytes ipykernel rapidfuzz
Run by transformers
from transformers import TextStreamer, AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
from rapidfuzz import fuzz
from IPython.display import clear_output
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen1.5-4B-Chat",)
qw_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen1.5-4B-Chat", load_in_4bit = True)
qw_model = PeftModel.from_pretrained(qw_model,
"svjack/Genshin_Impact_Qwen_1_5_Plot_Engine_Step_Json_lora_small"
)
qw_model = qw_model.eval()
streamer = TextStreamer(tokenizer)
def qwen_hf_predict(messages, qw_model = qw_model,
tokenizer = tokenizer, streamer = streamer,
do_sample = True,
top_p = 0.95,
top_k = 40,
max_new_tokens = 2070,
max_input_length = 3500,
temperature = 0.9,
repetition_penalty = 1.0,
device = "cuda"):
encodeds = tokenizer.apply_chat_template(messages, return_tensors="pt",
add_generation_prompt=True
)
model_inputs = encodeds.to(device)
generated_ids = qw_model.generate(model_inputs, max_new_tokens=max_new_tokens,
do_sample=do_sample,
streamer = streamer,
top_p = top_p,
top_k = top_k,
temperature = temperature,
repetition_penalty = repetition_penalty,
)
out = tokenizer.batch_decode(generated_ids)[0].split("<|im_start|>assistant")[-1].replace("<|im_end|>", "").strip()
return out
def run_step_infer_times(x, times = 5, temperature = 0.01,
repetition_penalty = 1.0,
sim_val = 70
):
req = []
for _ in range(times):
clear_output(wait = True)
out = qwen_hf_predict([
{
"role": "system",
"content": ""
},
{
"role": "user",
"content": x
},
],
repetition_penalty = repetition_penalty,
temperature = temperature,
max_new_tokens = 2070,
max_input_length = 6000,
)
if req:
val = max(map(lambda x: fuzz.ratio(x, out), req))
#print(val)
#print(req)
if val < sim_val:
req.append(out.strip())
x = x.strip() + "\n" + out.strip()
else:
req.append(out.strip())
x = x.strip() + "\n" + out.strip()
return req
out_l = run_step_infer_times(
'''
故事标题:为了没有眼泪的明天
故事背景:旅行者与琴、派蒙在蒙德城中经历了一系列事件,从元素流动回归、处理外交问题到对抗魔龙和寻找解决之道。他们偶遇吟游诗人温迪,后者提供了关于风神与巨龙的关键信息,并提出了借琴解救蒙德的计划。
参与角色:派蒙、旅行者、琴、丽莎、温迪、歌特琳德
参与角色介绍:
名字:派蒙
角色经历:派蒙在《原神》中是一个充满好奇心和冒险精神的角色,他跟随图书管理员丽莎寻找丢失的书籍,逐渐理解了丽莎对工作的执着。他们一起追踪线索,面对敌人和深渊法师的秘密,关系因此而亲密。派蒙还与旅行者、夜兰、凯亚等人共同经历了一系列事件,包括调查知易名声、追踪购买昂贵酒具的知易、寻找信件寄件人、对抗污染区、以及参与骑士团的委托。他的行动和智慧在解决谜团和对抗魔物中起到了关键作用,展现了他的勇气和忠诚。在面对挑战时,派蒙展现出对朋友的保护和对知识的渴望,他的成长和理解加深了与角色间的联系。
性格特征:派蒙性格开朗,善于观察,对世界充满好奇。他勇敢面对困难,即使有时会误解他人,也能通过交流和理解解决问题。他对丽莎的工作态度表示敬意,同时也对旅行者、凯亚等人的经历充满好奇。他关心他人,特别是夜兰,对她的身体状况表示关心。在面对困境时,他展现出坚韧和智慧,比如在寻找信件和对抗污染区时。他的异世界能力——‘元素视野’也显示了他的独特性。
剧情中的作用:派蒙作为旅行者的重要伙伴,他的存在为剧情增添了幽默和轻松的氛围。他的角色常常是解决问题的关键,通过他的智慧和勇气,推动了剧情的发展。他的角色关系网丰富,与旅行者、夜兰、凯亚等人紧密相连,通过他们的互动,展示了友情、信任和成长。他的行动和决定,如在对抗教令院和加入反抗军的过程中,显示了他对正义和保护世界的坚定信念。他与旅行者的互动,尤其是他的成长和理解,深化了游戏主题——探索、友情和自我发现。他的每一次冒险都为游戏世界带来了新的谜团和可能性,增加了故事的深度和吸引力。
名字:旅行者
角色经历:旅行者在清泉镇与香菱、派蒙的狩猎事件中展现了道歉和烹饪技巧,解决了与布洛克的误会,通过团队合作赢得了食材竞赛。在将军闭门养息期间,他介入天领奉行的混乱,试图通过沟通解决问题,展现了他的智慧和宽容。在寻找记忆的过程中,他与伊利亚斯、杰娜姬等人合作,深入探索与集群意识研究相关的基地,展现了他的信任和理解。在对抗魔神和保护剧场的过程中,旅行者关心他人,勇敢面对挑战,体现了他的勇气和正义感。在寻找解毒线索时,他与白术、阿桂等人合作,展现出对科学的执着和对正义的坚持。在南十字武斗会和与枫原万叶的行动中,旅行者展现实力
性格特征:旅行者是一个坚韧且富有正义感的角色,他善于沟通,拥有团队精神,解决问题时总是能冷静分析。他关心他人,愿意为保护他人和真相付出努力。在面对挑战时,他展现出勇气和决心,即使面临困难也不放弃。他对科学和历史有深入的探索欲望,对元素力有独特的理解和运用。在个人成长和权力关系上,他保持谦逊,追求的是实力和成长,而非单纯胜利。他的角色在剧情中起到了推动剧情发展,解决冲突,以及展现人性复杂性的关键作用。
剧情中的作用:旅行者在剧情中扮演了关键角色,他的行动和决定影响着故事的走向,如解决清泉水域的纷争,介入天领奉行的混乱,保护剧场,寻找解毒线索,参加武斗会,以及在反抗军中的领导作用。他的存在推动了角色关系的发展,如与香菱、派蒙、伊利亚斯、杰娜姬等人的互动,以及与迪希雅和迪娜泽黛的合作。他的性格特质和行动使剧情更丰富,展示了人性的复杂性,同时也体现了对正义、科学和历史的探索。他是剧情的主线,通过他的经历,展现了个人成长、勇气、智慧和情感深度,使故事更具深度和吸引力。
名字:琴
角色经历:琴是蒙德的荣誉骑士,她处理清泉镇食材供应路线被占领的危机,展现出骑士的果断和解决问题的能力。因过度工作导致病倒,骑士团为她准备慰劳派对,这体现出团队的关爱和支持。琴在派对中反思自己的角色,接受了‘蒲公英骑士’的身份,对未来充满期待。她与温迪交流,揭示了风神与巨龙的秘密,以及对抗愚人众的计划,显示了对教会事务的深入理解和对自由的追求。在寻找天空之琴的过程中,她请求旅行者接受荣誉骑士的爵位,同时处理与至冬国的外交冲突。在对抗深渊法师的战斗中,她表现出骑士的决心和智慧,她的行动对故事走向产生重大影响。
性格特征:琴性格坚韧,面对工作压力不屈不挠,展现出骑士的敬业精神。她对教会事务保持警惕,同时也关心团队成员的安全,展现出领导力。在处理劳伦斯家族与愚人众的密谋时,她表现出智慧和谨慎,不轻易相信,而是通过调查和交流来确认真相。她宽容对待优菈的记仇态度,通过教育引导团队理解贵族的传统和人际关系。
剧情中的作用:琴在剧情中起着关键作用,她不仅解决实际问题,如恢复食材供应,还通过对话和行动推动剧情发展。她揭示了风神和巨龙的秘密,以及对抗愚人众的策略,为解决蒙德面临的危机提供了思路。她的请求旅行者接受荣誉骑士爵位,显示了对旅行者能力和蒙德未来的信任。在摘星崖对抗深渊法师的战斗中,她展现骑士的勇气和智慧,她的决定直接影响了故事的结局。同时,她对教会事务的处理和对‘王狼’的警惕,使得剧情更加复杂,增加了剧情的紧张感和角色的深度。
名字:丽莎
角色经历:丽莎是《星海无垠》和《星海霸业》中的关键角色,作为继承者,她的身份在游戏初期由占星术士莫娜揭示。她与旅行者泰勒的误会源于泰勒的误会,但莫娜的解释澄清了。丽莎的出现引发了关于‘五十年之约’的神秘讨论,这暗示了后续剧情的重要线索。她对骑士团长琴的职责代劳,展现出责任感和团队精神,同时也通过税务事务帮助查尔斯,体现了她的细心和专业。在神像广场,她与孩子们的奇幻相遇,揭示了她无法使用探测仪的真相,这与她的想象力和童心有关。在蒙德的元素研究中,她面对污秽杂质,请求时间深入研究,表现出她的决心和对知识的渴望。她与派蒙和
性格特征:丽莎是一个有责任感和团队精神的角色,她代劳骑士团长的紧急工作,表现出她的果断和实际。她细心且专业,处理税务事务时给予查尔斯帮助,展现出她的细心和职业素养。她对知识有着强烈的追求,面对元素难题时,她请求时间深入研究,显示了她的决心和对知识的尊重。同时,她还有着童心,与孩子们的奇幻相遇显示了她对想象力的珍视。她对蒙德守护者的尊重和责任感,体现在她愿意分享关于风龙历史的秘密和对蒙德的承诺。
剧情中的作用:丽莎是剧情发展的关键人物,她的身份揭示推动了故事的展开,特别是‘五十年之约’的神秘面纱,为后续剧情埋下伏笔。她的团队合作和责任感使她在骑士团中起到核心作用,同时也通过日常任务展示了角色的多面性。在与旅行者、派蒙和孩子们的互动中,她揭示了想象力和童心在解决问题中的重要性,深化了游戏主题。她对蒙德的承诺和对风龙历史的了解,增加了故事的复杂性和深度,使得角色更加鲜活且具有深度。
名字:温迪
角色经历:温迪是蒙德城的英雄,与旅行者和派蒙共同对抗深渊教团,解救特瓦林。他以普通木琴对抗风障,揭示风龙与古代暴君的联系,体现了自由理念。作为七神之一,他因神之心被抢而陷入困境,这引发了旅行者对他的理解和行动。在危机中,他展现出智慧和勇气,与迪卢克、凯亚等人合作。在璃月港,他帮助派蒙调查请仙典仪,通过智谋找到线索。在寻找岩神的冒险中,他揭示了斯坦利的真实身份和内心的挣扎,通过与派蒙的互动,加深了友谊。温迪在解决居民委托时,展现出骑士团成员的责任和对朋友的感激,如帮助找到走丢的猫、恢复食材运输和处理紧急订单。他的行动影
性格特征:温迪是一个充满好奇心的角色,他勇敢面对挑战,同时展现出智慧和策略。他对神之心和愚人众有深入理解,但因为神之心的诅咒而寻找解除方法。他重视自由,通过音乐和行动来保护蒙德。他关心他人,无论是孩子们还是大人们,都能以诚挚和童心对待。他对猫过敏但依旧尽力,显示了他坚韧和乐于助人的性格。
剧情中的作用:温迪在剧情中起着关键作用,他是蒙德的象征,代表七神理念。他的行动和决策推动了故事的发展,包括对抗深渊教团、调查请仙典仪、寻找岩神和解决居民委托。他与旅行者的关系复杂,他们的互动揭示了神之心和愚人众的秘密,也影响了蒙德城的未来。温迪的智谋和对伙伴的信任,如派蒙,使得他们能够共同面对困难,甚至在关键时刻帮助解除风龙封印。他的消失和神之心的争夺,增加了故事的悬疑性和对旅行者角色定位的深化。总的来说,温迪是剧情中不可或缺的推动者和关键角色。
名字:歌特琳德
角色经历:作为蒙德的修女,歌特琳德坚决反对温迪借取天空之琴来救治风魔龙,她认为必须按照传统进行惩罚。她坚守骑士团的立场,拒绝接触天空之琴,但在面对危机时,她与迪卢克合作以保护蒙德。她对天空之琴的使用有着严格的程序和信念,这在温迪试图骗取琴时被她识破。她对过去的诗人试图借琴的行为保持怀疑,这显示了她的谨慎和对规则的坚守。在对抗愚人众时,她展现了智慧和骑士团的团结,与迪卢克共同应对危机。
性格特征:歌特琳德是一位忠诚于骑士团和传统规则的修女,她坚持认为风魔龙必须为自己的行为负责,反对未经骑士团许可就使用天空之琴。她严谨、警惕,对过去的可疑行为保持怀疑,体现了她的谨慎和对纪律的重视。在面对危机时,她展现出勇气和智慧,与迪卢克合作,体现了她的团队精神和骑士道精神。
剧情中的作用:在《原神》中,歌特琳德的角色作用主要体现在对风魔龙问题的处理上,她作为坚定的反对者,阻止了温迪的计划。她的立场和行动强化了故事中的冲突,同时也展示了骑士团对于规则和责任的坚持。在对抗愚人众的行动中,她的智慧和骑士团的团结为蒙德的生存提供了重要的支持。她的角色不仅推动了剧情的发展,也深化了对骑士道精神和蒙德价值观的探讨。
根据上面提供的信息,生成若干故事背景细节,代表故事发展的当前故事背景,并给每一个当前故事背景赋予两个参与角色,以进行角色对话。
''',
temperature=0.1,
repetition_penalty = 1.0,
times = 10
)
clear_output(wait = True)
print("\n".join(out_l))
Output
{'参与者1': '派蒙', '参与者2': '旅行者', '当前故事背景': '旅行者和派蒙在蒙德城中,与琴交谈后,琴提到自己病倒了,需要休息。琴还提到要处理一些紧急事务,如处理劳伦斯家族与愚人众的密谋。'}
{'参与者1': '琴', '参与者2': '派蒙', '当前故事背景': '琴解释了自己病倒的原因,并请求派蒙帮忙照顾她。派蒙表示愿意帮忙,但琴提醒他要小心,因为有敌人在暗中活动。'}
{'参与者1': '派蒙', '参与者2': '旅行者', '当前故事背景': '派蒙和旅行者在蒙德城中,讨论了琴的病情和她可能遇到的敌人。'}
{'参与者1': '琴', '参与者2': '温迪', '当前故事背景': '琴与温迪交流,揭示了风神与巨龙的秘密,以及对抗愚人众的计划。'}
{'参与者1': '旅行者', '参与者2': '温迪', '当前故事背景': '旅行者询问关于风神和巨龙的信息,温迪解释了这些信息的重要性。'}
{'参与者1': '派蒙', '参与者2': '温迪', '当前故事背景': '派蒙对温迪的智慧表示敬佩,并询问如何帮助。'}
{'参与者1': '温迪', '参与者2': '歌特琳德', '当前故事背景': '温迪试图借用天空之琴,但被歌特琳德拒绝,她坚持按照传统程序进行。'}
train_2024-05-29-01-54-51
This model is a fine-tuned version of Qwen/Qwen1.5-4B-Chat on the genshin_impact_plot_engine_step_inst_json dataset.
Model description
More information needed
Intended uses & limitations
More information needed
Training and evaluation data
More information needed
Training procedure
Training hyperparameters
The following hyperparameters were used during training:
- learning_rate: 5e-05
- train_batch_size: 1
- eval_batch_size: 8
- seed: 42
- gradient_accumulation_steps: 8
- total_train_batch_size: 8
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: cosine
- num_epochs: 3.0
- mixed_precision_training: Native AMP
Training results
Framework versions
- PEFT 0.11.1
- Transformers 4.41.1
- Pytorch 2.3.0+cu121
- Datasets 2.19.1
- Tokenizers 0.19.1
- Downloads last month
- 20
Model tree for svjack/Genshin_Impact_Qwen_1_5_Plot_Engine_Step_Json_lora_small
Base model
Qwen/Qwen1.5-4B-Chat