You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
3.6 KiB

3 months ago
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)