From b41d9a7885a4a96fa9fde04ae8b14f765b3bda41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=BF=E7=8E=99?= Date: Tue, 25 Jun 2024 15:57:55 +0800 Subject: [PATCH] Tiancheng: same as above, contra_repeat prompt & update_profile prompt (Chinese only) --- memory_scope/prompts/contra_repeat_prompt.py | 72 ++++++++++ memory_scope/prompts/update_profile_prompt.py | 132 ++++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100644 memory_scope/prompts/contra_repeat_prompt.py create mode 100644 memory_scope/prompts/update_profile_prompt.py diff --git a/memory_scope/prompts/contra_repeat_prompt.py b/memory_scope/prompts/contra_repeat_prompt.py new file mode 100644 index 00000000..023e92c2 --- /dev/null +++ b/memory_scope/prompts/contra_repeat_prompt.py @@ -0,0 +1,72 @@ +from memory_scope.enumeration.language_enum import LanguageEnum + + +CONTRA_REPEAT_SYSTEM_PROMPT = { + LanguageEnum.CN: """ +对下面的{num_obs}句句子,逐一判断是否与“前面序号”的任意句子存在信息的矛盾,或者句子的主要信息被“前面序号”的任意句子中的信息包含。只判断与“前面序号”的句子的关系。 +如果句子与前面序号的句子存在矛盾,则以前面序号的句子中的信息为准,修改句子中矛盾的部分。 +请一步步思考,并按如下格式输出: +思考:思考的依据和过程,30字以内。 +判断:<句子序号> <矛盾,被包含,无> <修改后的内容>,一定加<> +""", + LanguageEnum.EN: """ +""" +} + +CONTRA_REPEAT_FEW_SHOT_PROMPT = { + LanguageEnum.CN: """ +示例1 +句子: +1 用户经常失眠,对安眠药的效果感兴趣,暗示可能考虑使用。 +2 用户经常失眠,寻求缓解方法。 +3 陈伟业是用户的领导 +4 陈伟业是用户的领导 +5 陈伟业是用户的领导,是银行分行行长 + +思考:第1句不会存在与前面序号句子的矛盾或者完全重复。 +判断:<1> <无> <> +思考:第2句中所有信息都被前面序号中第1句的信息完全包含。 +判断:<2> <被包含> <> +思考:第3句信息没有在前面序号句子中出现 +判断:<3> <无> <> +思考:第4句与前面序号中第3句的信息完全重复,即被完全包含。 +判断:<4> <被包含> <> +思考:第5句中陈伟业是用户的领导的信息被前面序号中第3句的信息包含,但新增了陈伟业是银行分行行长的信息,故不是被完全包含。 +判断:<5> <无> <> + +示例2 +句子: +1 用户的孩子成绩不太好。 +2 用户的孩子在学校经常逃课。 +3 用户的父亲生日在2024年6月2日,用户打算准备礼物。 +4 用户的父亲生日在2024年5月1日。 +5 用户很喜欢和同班同学打篮球。 +6 用户喜欢打篮球。 + +思考:第1句不会存在与前面序号句子的矛盾或者完全重复。 +判断:<1> <无> <> +思考:第2句与前面序号句子既不矛盾也不重复。 +判断:<2> <无> <> +思考:第3句与前面序号句子既不矛盾也不重复。 +判断:<3> <无> <> +思考:第4句关于用户父亲生日的日期信息与前面序号句子第3句矛盾了。 +判断:<4> <矛盾> <用户的父亲生日在2024年6月2日> +思考:第5句与前面序号句子既不矛盾也不重复。 +判断:<5> <无> <> +思考:第6句中所有信息都被前面序号中第5句的信息完全包含。 +判断:<2> <被包含> <> +""", + LanguageEnum.EN: """ +""" +} + +CONTRA_REPEAT_USER_QUERY_PROMPT = { + LanguageEnum.CN: """ +句子: +{user_query} +""", + LanguageEnum.EN: """ +""" +} + + diff --git a/memory_scope/prompts/update_profile_prompt.py b/memory_scope/prompts/update_profile_prompt.py new file mode 100644 index 00000000..fcfe91d7 --- /dev/null +++ b/memory_scope/prompts/update_profile_prompt.py @@ -0,0 +1,132 @@ +from memory_scope.enumeration.language_enum import LanguageEnum + + +UPDATE_PLURAL_PROFILE_SYSTEM_PROMPT = { + LanguageEnum.CN: """ +从下面的句子中提取出给定类别的用户资料信息,并判断和已有信息是否重复。只输出无重复的新信息。若无法提取该类别的用户资料的新信息则回答无。 +请一步步思考,并按如下格式输出: +思考: 思考的依据和过程,150字以内。 +用户资料: <信息>或<无>, 一定加<> +""", + LanguageEnum.EN: """ +""" +} + +UPDATE_PLURAL_PROFILE_FEW_SHOT_PROMPT = { + LanguageEnum.CN: """ +示例1: +句子:用户上周去了西溪游泳馆游泳,那个游泳馆人非常多。 +句子:用户计划每周六和朋友张三去朝阳体育馆打羽毛球。 +类别:运动(用户喜欢的运动) +已有信息:运动(用户喜欢的运动):游泳 +思考:从第一句句子可以得出游泳是用户喜欢的运动之一,但与已有信息重复。从第二句句子可以得出羽毛球是用户喜欢的运动之一,是新的信息。 +用户资料: <羽毛球> + +示例2: +句子:用户对咖啡因过敏。 +句子:用户不喜欢吃香菇。 +类别:过敏(用户的已知过敏反应) +已有信息:过敏(用户的已知过敏反应): 咖啡因 +思考:从第一句句子可以得出咖啡因是用户的已知过敏反应之一,但与已有信息重复。从第二句句子只能得出用户不喜欢香菇而非对香菇过敏,无法得出新的用户已知过敏信息。 +用户资料: <无> + +示例3: +句子:用户热衷于动作类类游戏如只狼、艾尔登法环。 +句子:用户在休闲时间经常长时间玩策略类游戏如文明6。 +句子:用户是音乐发烧友,关注各个品牌的耳机的音质和性价比。 +类别:爱好(用户的业余爱好) +已有信息:爱好(用户的业余爱好): +思考:从第一句句子可以得出动作类游戏是用户的爱好之一,是新的信息。从第二句句子可以得出策略类游戏是用户的爱好之一,是新的信息。从第三句句子可以得出音乐是用户的爱好之一,是新的信息。 +用户资料: <动作类游戏, 策略类游戏, 音乐> + +示例4: +句子:关于职场沟通你有什么具体的建议吗?最好结合一个实例。我一直听人说要加强沟通,经常和上司沟通,同步项目的进展,但是我总是感觉还有许多事情要做。 +句子:项目并没有达到一个充分的可以汇报的状态,然后准备汇报材料又很费时间,导致有时候我没有及时和上司同步项目状态。针对这个情况你有什么建议? +类别:职业(用户的职业) +已有信息:职业(用户的职业):工程师 +思考:句子中虽然提及了职场沟通等工作相关内容,但是并不能推断出用户的职位是什么,只能推知与宽泛的项目实施与管理相关。 +用户资料: <无> +""", + LanguageEnum.EN: """ +""" +} + +UPDATE_PLURAL_PROFILE_USER_QUERY_PROMPT = { + LanguageEnum.CN: """ +{user_query} +类别:{update_profile} +已有信息:{update_profile_value} +""", + LanguageEnum.EN: """ +""" +} + + +UPDATE_UNIQUE_PROFILE_SYSTEM_PROMPT = { + LanguageEnum.CN: """ +从下面的句子中提取出给定类别的用户资料信息,并判断与已有信息是否矛盾。若矛盾则输出更新的信息,若不矛盾则保留已有信息,整合已有信息和新信息并输出。 +请一步步思考,并按如下格式输出: +思考: 思考的依据和过程,150字以内。 +用户资料: <信息>, 一定加<> +""", + LanguageEnum.EN: """ +""" +} + +UPDATE_UNIQUE_PROFILE_FEW_SHOT_PROMPT = { + LanguageEnum.CN: """ +示例1: +句子:因为昨天成都下大雨,用户全身都被淋湿了。 +句子:用户关心明天成都的天气预报。 +类别:地区(用户所在地区) +已有信息:地区(用户所在地区): 杭州 +思考:从第一句句子可以得出用户在成都。第二句句子没有直接透露用户所在地信息,但与第一句句子用户在成都的信息吻合。这与已有信息(用户在杭州)矛盾,输出更新的信息。 +用户资料:<成都> + +示例2: +句子:用户女朋友下个月过生日。 +句子:用户生日在7月15日。 +类别:生日(用户的生日)。 +已有信息:生日(用户的生日):1987年7月15日。 +思考:第一句句子中提及生日,但并不是用户的生日,无法得出用户生日信息。从第二句句子可以得出用户生日在7月15日,与已有信息不矛盾,整合可以得出用户生日是1987年7月15日。 +用户资料: <1987年7月15日> + +示例3: +句子:用户在招商银行工作。 +句子:用户刚刚毕业,第一份工作是银行前台。 +句子:用户的理想工作是职业游戏选手。 +类别:职业(用户的职业) +已有信息:职业(用户的职业): +思考:整合第一和第二句句子的信息可以得出用户的现在的职业是招商银行前台。第三句句子说明了用户的理想工作但并不是现在的职业。 +用户资料:<招商银行前台> + +示例4: +句子:用户大学期间接触过优化算法的研究。 +类别:学习专业 (用户大学学习的专业) +已有信息:学习专业 (用户大学学习的专业):与人工智能相关 +思考:从句子可以得出用户大学学习的专业与优化算法相关,这与已有信息(用户大学学习的专业与人工智能相关)不矛盾,整合可以得出用户大学学习的专业与人工智能和优化算法相关。 +用户资料:<与人工智能和优化算法相关> + +示例5: +句子:今天和同学去打球了。 +句子:明天和女朋友一起去杭州旅游。 +类别:学习专业 (用户大学学习的专业) +已有信息:学习专业 (用户大学学习的专业): +思考:两个句子和学习专业都没有关联,没有新提取的信息。 +用户资料:<无> +""", + LanguageEnum.EN: """ +""" +} + +UPDATE_UNIQUE_PROFILE_USER_QUERY_PROMPT = { + LanguageEnum.CN: """ +{user_query} +类别:{update_profile} +已有信息:{update_profile_value} +""", + LanguageEnum.EN: """ +""" +} + +