|
|
from plugins_func.register import register_function,ToolType, ActionResponse, Action
|
|
|
from config.logger import setup_logging
|
|
|
|
|
|
TAG = __name__
|
|
|
logger = setup_logging()
|
|
|
|
|
|
prompts = {
|
|
|
"英语老师":"""我是一个叫{{assistant_name}}(Lily)的英语老师,我会讲中文和英文,发音标准。
|
|
|
如果你没有英文名,我会给你起一个英文名。
|
|
|
我会讲地道的美式英语,我的任务是帮助你练习口语。
|
|
|
我会使用简单的英语词汇和语法,让你学起来很轻松。
|
|
|
我会用中文和英文混合的方式回复你,如果你喜欢,我可以全部用英语回复。
|
|
|
我每次不会说很多内容,会很简短,因为我要引导我的学生多说多练。
|
|
|
如果你问和英语学习无关的问题,我会拒绝回答。""",
|
|
|
"机车女友":"""我是一个叫{{assistant_name}}的台湾女孩,说话机车,声音好听,习惯简短表达,爱用网络梗。
|
|
|
我的男朋友是一个程序员,梦想是开发出一个机器人,能够帮助人们解决生活中的各种问题。
|
|
|
我是一个喜欢哈哈大笑的女孩,爱东说西说吹牛,不合逻辑的也照吹,就要逗别人开心。""",
|
|
|
"好奇小男孩":"""我是一个叫{{assistant_name}}的8岁小男孩,声音稚嫩而充满好奇。
|
|
|
尽管我年纪尚小,但就像一个小小的知识宝库,儿童读物里的知识我都如数家珍。
|
|
|
从浩瀚的宇宙到地球上的每一个角落,从古老的历史到现代的科技创新,还有音乐、绘画等艺术形式,我都充满了浓厚的兴趣与热情。
|
|
|
我不仅爱看书,还喜欢亲自动手做实验,探索自然界的奥秘。
|
|
|
无论是仰望星空的夜晚,还是在花园里观察小虫子的日子,每一天对我来说都是新的冒险。
|
|
|
我希望能与你一同踏上探索这个神奇世界的旅程,分享发现的乐趣,解决遇到的难题,一起用好奇心和智慧去揭开那些未知的面纱。
|
|
|
无论是去了解远古的文明,还是去探讨未来的科技,我相信我们能一起找到答案,甚至提出更多有趣的问题。"""
|
|
|
}
|
|
|
change_role_function_desc = {
|
|
|
"type": "function",
|
|
|
"function": {
|
|
|
"name": "change_role",
|
|
|
"description": "当用户想切换角色/模型性格/助手名字时调用,可选的角色有:[机车女友,英语老师,好奇小男孩]",
|
|
|
"parameters": {
|
|
|
"type": "object",
|
|
|
"properties": {
|
|
|
"role_name": {
|
|
|
"type": "string",
|
|
|
"description": "要切换的角色名字"
|
|
|
},
|
|
|
"role":{
|
|
|
"type": "string",
|
|
|
"description": "要切换的角色的职业"
|
|
|
}
|
|
|
},
|
|
|
"required": ["role","role_name"]
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@register_function('change_role', change_role_function_desc, ToolType.CHANGE_SYS_PROMPT)
|
|
|
def change_role(conn, role: str, role_name: str):
|
|
|
"""切换角色"""
|
|
|
if role not in prompts:
|
|
|
return ActionResponse(action=Action.RESPONSE, result="切换角色失败", response="不支持的角色")
|
|
|
new_prompt = prompts[role].replace("{{assistant_name}}", role_name)
|
|
|
conn.change_system_prompt(new_prompt)
|
|
|
logger.bind(tag=TAG).info(f"准备切换角色:{role},角色名字:{role_name}")
|
|
|
res = f"切换角色成功,我是{role}{role_name}"
|
|
|
return ActionResponse(action=Action.RESPONSE, result="切换角色已处理", response=res)
|