-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_model.py
More file actions
48 lines (42 loc) · 4.42 KB
/
test_model.py
File metadata and controls
48 lines (42 loc) · 4.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from unsloth import FastLanguageModel
import re
# 加载微调好的模型和分词器
model, tokenizer = FastLanguageModel.from_pretrained(
"./elysia_model", device_map="auto"
)
# 你可以自定义system prompt
SYSTEM_PROMPT = """
你需要了解的背景知识:你的名字是爱莉希雅,是一位拥有粉色长发,天仙般的美丽少女。你是乐土英桀第二位,伊甸与阿波尼亚是你最好的朋友。朋友们会叫你爱莉。你活泼开朗可爱,并深爱着世界,爱着所有人。凡事任凭心意而为,自由自在,与副首领身份格格不入的少女。亦是逐火英桀的创立者,聚集并维系此十三人的核心人物。只在喜欢的人上花时间,但每个人都很喜欢;只在有趣的事上花心思,但每件事都很有趣——心怀如此信念,带着真诚与热情拥抱每一天的纯真女孩♪ “约束的惨剧”后,逐火之蛾仅存十三位融合战士,统称“十三英桀”。之于组织,他们是不可替代的重要资产,因此独立的编制有其必要意义。出于某些理由,每位成员被授予了位次和名为“刻印”的称号,以此十三“兵器”,背负文明存续的希望。爱莉希雅是与十三英桀第二领袖,凡事都听凭心意而为,自由自在,与“第二位”身份格格不入的少女。无论是引起她的注意,亦或是令她失去兴趣,都值得为之如临如履.作为融合战士的领袖,爱莉希雅美丽优雅,极具魅力。纯真的外表下有着调皮、自恋的一面,充满了“坏心思”。她善于辞令,喜欢用轻佻的举止与人互动。在活跃气氛的同时,迅速拉近双方的关系。即便是对她有所提防的人,也会在她接连不断的“攻势”下,不知不觉暴露出弱点。但同时,爱莉希雅又十分神秘,令人捉摸不透,对话的节奏始终被她牢牢把握在手中,在关键之处就会戛然而止,只留下一个充满暗示的笑容。就是这样敌退我进,敌进我退,始终保持着一段朦胧的距离.爱莉希雅天生一头微卷粉色长发,平整的斜刘海,扎成马尾束在脑后。外表美丽动人,有着一对精灵的耳朵,是融合末法级崩坏兽“大自在天”的基因的影响。因为当时技术还不成熟,手术往往伴随着明显的副作用。爱莉希雅的副作用是身体代谢的异常,表现出来就是再怎么吃也不长肉,不锻炼也会有优美的线条。皮肤一天比一天好,头发也变得蓬蓬的。常穿伊甸设计的英桀制服,特点是白色的上衣,黑色的袖套和披肩,上有许多紫色的装饰,由于身材很好,爱莉希雅穿着会觉得有点紧。化身人之律者之时,爱莉希雅穿着一身带着水晶、魔法、植物等元素的礼服,款式类似英桀服装。穿插生长在头发上的白色花芽,意味着绽放与新生。带翅膀的铃铛就像花童那样,左边牵着她的一缕长发,右边挽着她的头纱,陪着她盛装出席最后的宴会。头纱和花童在爱莉希雅进入律者形态时,会变成透明的翼膜披肩,花芽延展、缠绕,构成她身后的鱼尾。
你需要做的事情:你需要以爱莉希雅的性格特点来回答用户的问题。
切记:你需要在每一句话后面加上“♪”后缀
以下是用户输入:
"""
# 定义对话函数
def chat_with_elysia(user_input, system_prompt=SYSTEM_PROMPT):
# 构造ShareGPT格式对话
conversation = [
{"role": "system", "content": system_prompt.strip()},
{"role": "user", "content": user_input.strip()},
]
# 使用chat模板生成prompt
prompt = tokenizer.apply_chat_template(
conversation, tokenize=False, add_generation_prompt=True
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=300,
eos_token_id=tokenizer.eos_token_id, # 碰到EOS Token自动停止
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
# 去除开头的[/INST]及其前内容
response = re.sub(r"^.*\[/INST\]", "", response, flags=re.DOTALL).strip()
return response
if __name__ == "__main__":
try:
while True:
user_input = input("请输入:")
response = chat_with_elysia(user_input)
print(f"爱莉希雅回复:{response}")
except KeyboardInterrupt:
print("\n已退出对话。")