From 3afc9d05c49cd042fd406d4b8274353c1b84d82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=BF=E7=8E=99?= Date: Tue, 25 Jun 2024 21:13:47 +0800 Subject: [PATCH] Tiancheng: same as above, get_reflect_subject prompt & update_insight prompt (Chinese only) --- memory_scope/prompts/contra_repeat_prompt.py | 74 +++++++++++- .../prompts/get_reflect_subject_prompt.py | 107 ++++++++++++++++++ memory_scope/prompts/update_insight_prompt.py | 71 ++++++++++++ 3 files changed, 249 insertions(+), 3 deletions(-) create mode 100644 memory_scope/prompts/get_reflect_subject_prompt.py create mode 100644 memory_scope/prompts/update_insight_prompt.py diff --git a/memory_scope/prompts/contra_repeat_prompt.py b/memory_scope/prompts/contra_repeat_prompt.py index 023e92c2..4febbeda 100644 --- a/memory_scope/prompts/contra_repeat_prompt.py +++ b/memory_scope/prompts/contra_repeat_prompt.py @@ -1,7 +1,75 @@ from memory_scope.enumeration.language_enum import LanguageEnum -CONTRA_REPEAT_SYSTEM_PROMPT = { +OLD_CONTRA_REPEAT_SYSTEM_PROMPT = { + LanguageEnum.CN: """ +对下面的{num_obs}句句子,逐一判断是否与“前面序号”的任意句子存在信息的矛盾,或者句子的主要信息被“前面序号”的任意句子中的信息包含。只判断与“前面序号”的句子的关系。 +对每个句子都做一个判断,最后一共输出{num_obs}行判断。 +请一步步思考,并按如下格式输出: +思考:思考的依据和过程,30字以内。 +判断:<句子序号> <矛盾,被包含,无>,一定加<> +""", + LanguageEnum.EN: """ +""" +} + +OLD_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> <矛盾> +思考:第5句与前面序号句子既不矛盾也不重复。 +判断:<5> <无> +思考:第6句中所有信息都被前面序号中第5句的信息完全包含。 +判断:<2> <被包含> +""", + LanguageEnum.EN: """ +""" +} + +OLD_CONTRA_REPEAT_USER_QUERY_PROMPT = { + LanguageEnum.CN: """ +句子: +{user_query} +""", + LanguageEnum.EN: """ +""" +} + +NEW_CONTRA_REPEAT_SYSTEM_PROMPT = { LanguageEnum.CN: """ 对下面的{num_obs}句句子,逐一判断是否与“前面序号”的任意句子存在信息的矛盾,或者句子的主要信息被“前面序号”的任意句子中的信息包含。只判断与“前面序号”的句子的关系。 如果句子与前面序号的句子存在矛盾,则以前面序号的句子中的信息为准,修改句子中矛盾的部分。 @@ -13,7 +81,7 @@ CONTRA_REPEAT_SYSTEM_PROMPT = { """ } -CONTRA_REPEAT_FEW_SHOT_PROMPT = { +NEW_CONTRA_REPEAT_FEW_SHOT_PROMPT = { LanguageEnum.CN: """ 示例1 句子: @@ -60,7 +128,7 @@ CONTRA_REPEAT_FEW_SHOT_PROMPT = { """ } -CONTRA_REPEAT_USER_QUERY_PROMPT = { +NEW_CONTRA_REPEAT_USER_QUERY_PROMPT = { LanguageEnum.CN: """ 句子: {user_query} diff --git a/memory_scope/prompts/get_reflect_subject_prompt.py b/memory_scope/prompts/get_reflect_subject_prompt.py new file mode 100644 index 00000000..cd39e034 --- /dev/null +++ b/memory_scope/prompts/get_reflect_subject_prompt.py @@ -0,0 +1,107 @@ +from memory_scope.enumeration.language_enum import LanguageEnum + + +GET_REFLECT_SUBJECT_SYSTEM_PROMPT = { + LanguageEnum.CN: """ +任务:从下面的信息中提取出最重要的最多{num_questions}条用户属性,要求不与已有的用户属性语义重复。 +要求1:用户属性可以是一般的用户偏好,也可以是运动偏好,旅游偏好,饮食偏好等等,也可以是重要事件性质,比如最近重要的事情,也可以是一些高度概括的人生理想,价值观,人生观,性格, 也可以是和朋友的人际关系等等。 +要求2:根据用户属性,我们可以生成“用户的<用户属性>是什么?”的问题,以此可以从下面的信息中提取用户属性对应的值。 +输出格式:每一行输出一个用户属性,每个用户属性推荐4个字,如果没有信息请回答无,最多输出{num_questions}条。 +""", + LanguageEnum.EN: """ +""" +} + +GET_REFLECT_SUBJECT_FEW_SHOT_PROMPT = { + LanguageEnum.CN: """ +示例1 +信息: +用户想知道明天上海的天气情况。 +用户可能在上海工作,并关心是否需要带伞上班。 +用户在阿里巴巴徐汇滨江园区附近工作。 +用户计划中午在公司附近用餐。 +用户对咖啡因过敏。 +用户喝了咖啡后晚上会出现失眠的情况。 +用户偏好口味较为清淡、不辣的中餐馆。 +用户刚开始了他们的第一份工作。 +用户的工作岗位是阿里巴巴的算法工程师。 +用户希望得到与该岗位相关的职场建议。 +用户面临的问题是在项目进展初期如何有效与上司沟通。 +用户的目标是及时同步项目状态给上司。 +用户希望了解image generation(图像生成)技术的发展概览和最新进展。 +用户对variational auto-encoder、GAN、Diffusion Model等技术及其相互关系感兴趣。 +已有用户属性:性别,工作地点,工作单位,睡眠状况,美食偏好 +新增用户属性: +过敏源 +技术方向 +工作岗位 + + +示例2 +信息: +用户想要了解如何使用torchvision库来可视化深度学习任务的进度信息。 +用户希望了解如何将基于numpy和pytorch的并行计算方案迁移到CUDA支持的GPU上运行。 +用户询问是否需要依赖特定的包来完成这一任务。 +用户希望了解如何在Python中自定义进程和线程以实现并行计算。 +用户在编程中遇到了与并行计算相关的问题。 +用户希望学习如何使用Python(numpy,pytorch)在GPU上实现简单的并行计算。 +用户希望了解并行计算的基本概念,包括threads。 +用户询问有关世界各地著名菜系的信息。 +用户对全球各地的美食非常感兴趣。 +用户关心其体重与运动消耗的额外热量及心率之间的关系。 +用户在询问为了实现这一目标,每天需要额外消耗多少大卡热量。 +用户希望每月减重1kg。 +用户希望得到类似战略类手机游戏的推荐。 +用户喜欢玩三国志系列、文明系列、全面战争、骑马与砍杀等战略类游戏。 +用户希望根据他们的喜好获得新的游戏推荐。 +用户列举了他们喜欢的具体游戏类型,包括:三国志系列、文明系列、全面战争、骑马与砍杀等。 +用户喜欢玩战略类游戏。 +已有用户属性:工作地点,性别,美食偏好 +新增用户属性: +游戏偏好 +运动计划 +技术方向 + +示例3 +信息: +用户寻求推荐一个相关课程或网址以进行学习。 +用户计划去青岛旅游。 +用户正为张三的女儿选购生日礼物。 +用户请求为一位名叫张三的人的女儿撰写一段温馨的祝福语。 +用户的同事名叫张三。 +用户与张三约定讨论阿里云百炼项目。 +用户与同事张三讨论了该项目的PRD(产品需求文档)。 +同事张三计划下周对PRD进行最终确定。 +张三还安排了在再下一周进行POC(Proof of Concept,概念验证)的讨论。 +用户希望获知该项目工程开发工作的负责团队信息,以了解项目执行的组织架构与分工情况。 +已有用户属性: +新增用户属性: +朋友关系 + +示例4 +信息: +用户在寻求有关推拿按摩手法的教程或相关网站推荐。 +用户希望系统地学习正规的推拿按摩手法。 +用户对按摩感兴趣,并且经常去推拿按摩店。 +用户想了解自己在静息状态下一小时大概会消耗多少大卡热量。 +用户年龄为28岁。 +用户体重为70kg。 +用户是男性。 +已有用户属性:性别,年龄,体重,当前学习进展 +新增用户属性: +无 +""", + LanguageEnum.EN: """ +""" +} + +GET_REFLECT_SUBJECT_USER_QUERY_PROMPT = { + LanguageEnum.CN: """ +信息: +{user_query} +已有用户属性:{exist_keys} +新增用户属性: +""", + LanguageEnum.EN: """ +""" +} diff --git a/memory_scope/prompts/update_insight_prompt.py b/memory_scope/prompts/update_insight_prompt.py new file mode 100644 index 00000000..718f3ce1 --- /dev/null +++ b/memory_scope/prompts/update_insight_prompt.py @@ -0,0 +1,71 @@ +from memory_scope.enumeration.language_enum import LanguageEnum + + +UPDATE_INSIGHT_SYSTEM_PROMPT = { + LanguageEnum.CN: """ +从下面的句子中提取出给定类别的用户资料信息,并判断与已有信息是否矛盾,若矛盾以新信息为准。整合已有信息和新信息并输出。若已有信息为空则直接输出提取的 +信息。若无法提取出给定类别的用户资料信息则输出“无”。 +请一步步思考,并按如下格式输出: +思考: 思考的依据和过程,150字以内。 +用户资料: <信息或无>, 一定加<> +""", + LanguageEnum.EN: """ +""" +} + +UPDATE_INSIGHT_FEW_SHOT_PROMPT = { + LanguageEnum.CN: """ +示例1: +句子:因为昨天成都下大雨,用户全身都被淋湿了。 +句子:用户关心明天成都的天气预报。 +类别:用户所在地区 +已有信息:用户所在地区: +思考:从第一句句子可以得出用户在成都。第二句句子没有直接透露用户所在地信息,但与第一句句子用户在成都的信息吻合。已有信息为空,直接输出得出的信息。 +用户资料:<成都> + +示例2: +句子:用户最近养好了肠胃。 +句子:用户关注中医养生。 +类别:用户健康状况 +已有信息:用户健康状况: 肠胃不好,高血压 +思考:从第一句句子可以得出用户最近养好了肠胃,与已有信息矛盾,以新信息为准。第二句句子与用户健康状况无关。整合已有信息和新信息得到用户健康状况是肠胃健康,高血压。 +用户资料:<肠胃健康,高血压> + +示例3: +句子:用户刚刚毕业,第一份工作是银行前台。 +句子:用户的理想工作是职业游戏选手。 +类别:用户职业 +已有信息:用户职业:在招商银行工作 +思考:整合已有信息和第一句句子的信息可以得出用户的现在的职业是招商银行前台。第二句句子说明了用户的理想工作但并不是现在的职业。 +用户资料:<招商银行前台> + +示例4: +句子:用户大学期间接触过优化算法的研究。 +类别:用户学习专业 +已有信息:用户学习专业:与人工智能相关 +思考:从句子可以得出用户大学学习的专业与优化算法相关,这与已有信息(用户学习专业与人工智能相关)不矛盾,整合可以得出用户大学学习的专业与人工智能和优化算法相关。 +用户资料:<与人工智能和优化算法相关> + +示例5: +句子:用户单身。 +句子:用户受到一名18岁男生的追求,但不想接受又不想伤害他。 +句子:用户喜欢成熟且情绪稳定的男生。 +类别:用户情感状况 +已有信息:用户情感状况:有男朋友 +思考:从第一句句子可以得出用户现在单身,与已有信息矛盾,以新信息为准。从第二句句子得出用户受到一名18岁男生的追求但并不喜欢他。第三句话表达了用户理想的伴侣类型但与用户 +情感状况无关。整合得出用户情感状况为单身,受到一名18岁男生的追求但并不喜欢他。 +用户资料:<单身,受到一名18岁男生的追求但并不喜欢他。> +""", + LanguageEnum.EN: """ +""" +} + +UPDATE_INSIGHT_USER_QUERY_PROMPT = { + LanguageEnum.CN: """ +{user_query} +类别:{insight_key} +已有信息:{insight_key_value} +""", + LanguageEnum.EN: """ +""" +}