54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
import sglang as sgl
|
|
|
|
character_regex = (
|
|
r"""\{\n"""
|
|
+ r""" "姓名": "[^"]{1,32}",\n"""
|
|
+ r""" "学院": "(格兰芬多|赫奇帕奇|拉文克劳|斯莱特林)",\n"""
|
|
+ r""" "血型": "(纯血|混血|麻瓜)",\n"""
|
|
+ r""" "职业": "(学生|教师|傲罗|魔法部|食死徒|凤凰社成员)",\n"""
|
|
+ r""" "魔杖": \{\n"""
|
|
+ r""" "材质": "[^"]{1,32}",\n"""
|
|
+ r""" "杖芯": "[^"]{1,32}",\n"""
|
|
+ r""" "长度": [0-9]{1,2}\.[0-9]{0,2}\n"""
|
|
+ r""" \},\n"""
|
|
+ r""" "存活": "(存活|死亡)",\n"""
|
|
+ r""" "守护神": "[^"]{1,32}",\n"""
|
|
+ r""" "博格特": "[^"]{1,32}"\n"""
|
|
+ r"""\}"""
|
|
)
|
|
|
|
|
|
@sgl.function
|
|
def character_gen(s, name):
|
|
s += name + " 是一名哈利波特系列小说中的角色。请填写以下关于这个角色的信息。"
|
|
s += """\
|
|
这是一个例子
|
|
{
|
|
"姓名": "哈利波特",
|
|
"学院": "格兰芬多",
|
|
"血型": "混血",
|
|
"职业": "学生",
|
|
"魔杖": {
|
|
"材质": "冬青木",
|
|
"杖芯": "凤凰尾羽",
|
|
"长度": 11.0
|
|
},
|
|
"存活": "存活",
|
|
"守护神": "麋鹿",
|
|
"博格特": "摄魂怪"
|
|
}
|
|
"""
|
|
s += f"现在请你填写{name}的信息:\n"
|
|
s += sgl.gen("json_output", max_tokens=256, regex=character_regex)
|
|
|
|
|
|
def main():
|
|
backend = sgl.RuntimeEndpoint("http://localhost:30000")
|
|
sgl.set_default_backend(backend)
|
|
ret = character_gen.run(name="赫敏格兰杰", temperature=0)
|
|
print(ret.text())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|