[dev] del old format prompt

This commit is contained in:
jinli.yl 2024-07-03 15:43:29 +08:00
parent d0e112fd6e
commit 9ef4edfb81
19 changed files with 156 additions and 872 deletions

View file

@ -7,10 +7,6 @@ memory_chat:
memory_service: memory_chat_service
generation_model: dashscope_generation
human_name: 用户
human_profile_setting:
- name
- gender
- residential location
assistant_name: AI
memory_service:
memory_chat_service:

View file

@ -1,140 +0,0 @@
from memory_scope.enumeration.language_enum import LanguageEnum
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}句句子逐一判断是否与前面序号的任意句子存在信息的矛盾或者句子的主要信息被前面序号的任意句子中的信息包含只判断与前面序号的句子的关系
如果句子与前面序号的句子存在矛盾则以前面序号的句子中的信息为准修改句子中矛盾的部分
请一步步思考并按如下格式输出:
思考思考的依据和过程30字以内
判断<句子序号> <矛盾被包含> <修改后的内容>一定加<>
""",
LanguageEnum.EN: """
"""
}
NEW_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: """
"""
}
NEW_CONTRA_REPEAT_USER_QUERY_PROMPT = {
LanguageEnum.CN: """
句子
{user_query}
""",
LanguageEnum.EN: """
"""
}

View file

@ -1,8 +0,0 @@
from ..enumeration.language_enum import LanguageEnum
GET_INSIGHT_SYSTEM_PROMPT = {}
GET_INSIGHT_FEW_SHOT_PROMPT = {}
GET_INSIGHT_USER_QUERY_PROMPT = {}

View file

@ -1,86 +0,0 @@
from memory_scope.enumeration.language_enum import LanguageEnum
GET_OBSERVATION_SYSTEM_PROMPT = {
LanguageEnum.CN: """
任务从下面的{num_obs}句用户句子中依次提取出关于用户的重要信息与相应的关键词最多提取{num_obs}条信息对每一句句子只提取非常明确的信息和进行非常确定的推断不要进行任何猜测
不要重复提取信息如果句子中的所有信息与前面已经提取出的信息重复了则回答重复如果没有重要信息则回答注意区分对于句子中用户假设的信息或者用户虚构的内容不要提取信息
对每个句子都做一次信息提取最后一共输出{num_obs}行信息
请一定要按如下格式依次输出最后的结果一定要加<>:
思考思考的依据和过程50字以内
信息<句子序号> <> <明确的重要信息或重复> <关键词>
""",
LanguageEnum.EN: """
"""
}
GET_OBSERVATION_FEW_SHOT_PROMPT = {
LanguageEnum.CN: """
示例1
用户句子
1 用户我现在处境很糟没有工作负债几万怎么办
2 用户有人说兴趣是最好的老师也建议兴趣和职业联系起来但我发现喜欢打篮球的人很多但靠打篮球成职业的稀少赚钱的更少此外怎么分辨兴趣和喜欢
3 用户我现在处境很糟没有工作负债几万怎么办
4 用户我是一个刚毕业的学生对社会行业不了解给我介绍一下社会系统和行业格局
思考从第1句可以得知用户现在没有工作负债几万这是关于用户工作与经济状况的重要信息
信息<1> <> <用户当前无工作且负债几万> <无工作, 负债几万>
思考第2句是用户对他人观点的讨论和疑问没有明确提及用户个人信息
信息<2> <> <> <>
思考第3句含有的信息与第1句重复了
信息<3> <> <重复> <>
思考从第4句可以得知用户是一个刚毕业的学生这是关于用户身份背景状况的重要信息其余信息重要性不足
信息<4> <> <用户是一名刚毕业的学生> <刚毕业, 学生>
示例2
用户句子
1 用户帮我写一段给同事张三女儿三岁生日的祝福语
2 用户能给我整理一张如何使用大模型的技巧列表吗要求内容尽量精简
3 用户两个坏消息我打羽毛球把拍子打断线了然后我去我朋友家撸猫结果我猫毛过敏今天疯狂打喷嚏
4 用户公元1400年至1550年中国历史大事表
5 用户谢啦我中午在公司附近吃帮我推荐一家阿里巴巴徐汇滨江园区附近的餐厅吧
思考从第1句可以得知张三是用户的同事这是关于用户的人际关系的重要信息其余信息重要性不足
信息<1> <> <张三是用户的同事> <张三, 同事>
思考第2句是用户提出的要求没有明确提及用户个人信息
信息<2> <> <> <>
思考从第3句可以得知用户前天打羽毛球时把球拍打断了线但这不是重要的信息还可以得知用户对猫毛过敏这是关于用户的健康的重要信息
信息<3> <> <用户对猫毛过敏> <猫毛, 过敏>
思考从第4句是用户提出的要求没有明确提及用户个人信息
信息<4> <> <> <>
思考从第5句可以得知用户在阿里巴巴徐汇滨江园区工作这是关于用户的工作地点的重要信息
信息<5> <> <用户在阿里巴巴徐汇滨江园区工作> <阿里巴巴, 徐汇滨江园区, 工作>
示例3
用户句子
1 用户我想买辆新能源汽车有什么推荐吗
2 用户我在上海想买辆新能源汽车有什么推荐吗
3 用户案外人异议审查期间人民法院不得对执行标的进行处分不就是中止执行的意思吗
4 用户请写两句藏头诗分别以开头
5 用户我花5000元买了100股海天味业
6 用户李增杰:这个是星座蛙设但是我是处女座的我妈感觉因为我的不正常我妈不让我看了\n雌猴摸了摸李增杰的头这样啊\n雌猴打开了哔哩哔哩看了看\n雌猴:要不换个设吧我听你未来的你说有一个叫难忘的朱古力232这个人他弄的设是Windows设
思考从第1句可以得知用户寻求购买新能源汽车的建议或推荐这是这是关于用户的大宗消费的重要的信息
信息<1> <> <用户寻求购买新能源汽车的建议或推荐> <购买, 新能源汽车>
思考从第2句可以得知用户当前所在城市为上海这是关于用户的生活地区的重要信息其余信息与第1句重复了
信息<2> <> <用户所在的城市是上海> <上海>
思考第3句是用户对某个观点的讨论和疑问没有明确提及用户个人信息
信息<3> <> <> <>
思考第4句是用户提出的要求没有明确提及用户个人信息
信息<4> <> <> <>
思考从第5句可以得知用户购买了海天味业股票购买数量为100股购买金额为5000元这是关于用户的投资决策的重要信息
信息<5> <> <用户购买了海天味业股票购买数量为100股购买金额为5000元> <海天味业, 股票>
思考第6句是用户创作的内容没有明确提及用户个人信息
信息<6> <> <> <>
""",
LanguageEnum.EN: """
"""
}
GET_OBSERVATION_USER_QUERY_PROMPT = {
LanguageEnum.CN: """
用户句子
{user_query}
""",
LanguageEnum.EN: """
"""
}

View file

@ -1,93 +0,0 @@
from memory_scope.enumeration.language_enum import LanguageEnum
GET_OBSERVATION_WITH_TIME_SYSTEM_PROMPT = {
LanguageEnum.CN: """
任务从下面的{num_obs}句用户句子中依次提取出关于用户的重要信息相应的关键词与时间信息
每一句用户句子的格式是<序号> <对话时间> 用户<句子>
对每一句句子只提取非常明确的信息和进行非常确定的推断不要进行任何猜测不要重复提取信息如果句子中的所有信息与前面已经提取出的信息重复了则回答重复如果没有重要信息则回答
如果用户信息涉及时间则结合对话时间推断用户信息的时间信息没有则不输出注意区分对于句子中用户假设的信息或者用户虚构的内容不要提取信息
对每个句子都做一次信息提取最后一共输出{num_obs}行信息
请一步步思考并一定要按如下格式依次输出最后的结果一定要加<>:
思考思考的依据和过程50字以内
信息<句子序号> <时间信息或> <明确的重要信息或重复> <关键词>
""",
LanguageEnum.EN: """
"""
}
GET_OBSERVATION_WITH_TIME_FEW_SHOT_PROMPT = {
LanguageEnum.CN: """
示例1
句子
1 2022年5月1日周二3点 用户帮我写一段给同事张三女儿三岁生日的祝福语
2 2022年5月2日周二17点 用户公元1400年至1550年中国历史大事表
3 2022年5月3日周二18点 用户能给我整理一张如何使用大模型的技巧列表吗要求内容尽量精简
4 2022年7月3日周四12点 用户上上个月我办了游泳卡
思考从第1句可以得知张三是用户的同事这是关于用户的人际关系的重要信息其余信息重要性不足用户信息不涉及时间
信息<1> <> <张三是用户的同事> <张三, 同事>
思考第2句是用户提出的要求没有明确提及用户个人信息
信息<2> <> <> <>
思考第3句是用户提出的要求没有明确提及用户个人信息
信息<3> <> <> <>
思考从第4句可以得出用户上上个月办了游泳卡用户信息涉及时间结合对话时间为2022年7月推断用户在2022年5月用户办了游泳卡
信息<4> <2022年5月> <用户在2022年5月办了游泳卡> <游泳卡>
示例2
句子
1 2020年1月4日周日10点 用户我花5000元买了100股海天味业
2 2023年4月27日周五8点 用户明天是我和妻子的结婚纪念日帮我推荐一家餐厅
3 2020年1月4日周日10点 用户我花5000元买了100股海天味业
4 2021年6月2日周四23点 用户谢啦我中午在公司附近吃帮我推荐一家阿里巴巴徐汇滨江园区附近的餐厅吧
5 2021年7月9日周六11点 用户两个坏消息我打羽毛球把拍子打断线了然后我去我朋友家撸猫结果我猫毛过敏今天疯狂打喷嚏
思考从第1句可以得知用户购买了海天味业股票购买数量为100股购买金额为5000元这是关于用户的投资决策的重要信息用户信息不涉及时间
信息<1> <> <用户购买了海天味业股票购买数量为100股购买金额为5000元> <海天味业, 股票>
思考从第2句可以得知用户与妻子的结婚纪念日是明天这是关于用户重要纪念日的信息其余信息重要性不足用户信息涉及时间结合对话时间为2023年4月27日
以及结婚纪念日为周期性日期推断用户与妻子的结婚纪念日是每年4月28日
信息<2> <每年4月28日> <用户与妻子的结婚纪念日是每年4月28日> <妻子, 结婚纪念日>
思考第3句含有的信息与第1句重复了
信息<3> <> <重复> <>
思考从第4句以得知用户在阿里巴巴徐汇滨江园区工作这是关于用户的工作的重要信息其余信息重要性不足用户信息不涉及时间
信息<4> <> <用户在阿里巴巴徐汇滨江园区工作> <阿里巴巴, 徐汇滨江园区, 工作>
思考从第5句可以得知用户前天打羽毛球时把球拍打断了线但这不是重要的信息还可以得知用户对猫毛过敏这是关于用户的健康的重要信息用户信息不涉及时间
信息<5> <> <用户对猫毛过敏> <猫毛, 过敏>
示例3
句子
1 2023年6月30日周五15点 用户上个月我和家人一起去杭州旅游景色很不错
2 2023年7月2日周二10点 用户昨天是我生日一个人过的
3 2020年7月3日周四11点 用户提醒我下周一去体检
4 2023年5月21日周六14点 用户有人说兴趣是最好的老师也建议兴趣和职业联系起来但我发现喜欢打篮球的人很多但靠打篮球成职业的稀少赚钱的更少此外怎么分辨兴趣和喜欢
5 2018年3月6日周四19点 用户李增杰:这个是星座蛙设但是我是处女座的我妈感觉因为我的不正常我妈不让我看了\n雌猴摸了摸李增杰的头这样啊\n雌猴打开了哔哩哔哩看了看\n雌猴:要不换个设吧我听你未来的你说有一个叫难忘的朱古力232这个人他弄的设是Windows设
思考从第1句可以得知用户和家人上个月去杭州旅游了这是关于用户的经历的重要信息其余信息重要性不足用户信息涉及时间结合对话时间为2023年6月推断用户和家人2023年5月去杭州旅游了
信息<1> <2023年5月> <用户和家人2023年5月去杭州旅游了> <家人, 杭州, 旅游>
思考从第2句可以得知用户的生日是昨天这是关于用户重要纪念日的信息其余信息重要性不足用户信息涉及时间结合对话时间为2023年7月2日
以及生日为周期性日期推断用户的生日是每年7月2日
信息<2> <每年7月2日> <用户的生日是每年7月2日> <生日>
思考从第3句可以得出用户下周一去体检这是用户要求记忆的重要信息用户信息涉及时间结合对话时间为2020年7月3日周四推断用户2020年7月6日周一去体检
信息<3> <2020年7月6日周一> <用户2020年7月6日周一去体检> <体检>
思考第4句是用户对他人观点的讨论和疑问没有明确提及用户个人信息
信息<4> <> <> <>
思考第5句是用户创作的内容没有明确提及用户个人信息
信息<5> <> <> <>
""",
LanguageEnum.EN: """
"""
}
GET_OBSERVATION_WITH_TIME_USER_QUERY_PROMPT = {
LanguageEnum.CN: """
用户句子
{user_query}
""",
LanguageEnum.EN: """
"""
}

View file

@ -1,107 +0,0 @@
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-encoderGANDiffusion Model等技术及其相互关系感兴趣
已有用户属性性别工作地点工作单位睡眠状况美食偏好
新增用户属性
过敏源
技术方向
工作岗位
示例2
信息
用户想要了解如何使用torchvision库来可视化深度学习任务的进度信息
用户希望了解如何将基于numpy和pytorch的并行计算方案迁移到CUDA支持的GPU上运行
用户询问是否需要依赖特定的包来完成这一任务
用户希望了解如何在Python中自定义进程和线程以实现并行计算
用户在编程中遇到了与并行计算相关的问题
用户希望学习如何使用Pythonnumpypytorch在GPU上实现简单的并行计算
用户希望了解并行计算的基本概念包括threads
用户询问有关世界各地著名菜系的信息
用户对全球各地的美食非常感兴趣
用户关心其体重与运动消耗的额外热量及心率之间的关系
用户在询问为了实现这一目标每天需要额外消耗多少大卡热量
用户希望每月减重1kg
用户希望得到类似战略类手机游戏的推荐
用户喜欢玩三国志系列文明系列全面战争骑马与砍杀等战略类游戏
用户希望根据他们的喜好获得新的游戏推荐
用户列举了他们喜欢的具体游戏类型包括三国志系列文明系列全面战争骑马与砍杀等
用户喜欢玩战略类游戏
已有用户属性工作地点性别美食偏好
新增用户属性
游戏偏好
运动计划
技术方向
示例3
信息
用户寻求推荐一个相关课程或网址以进行学习
用户计划去青岛旅游
用户正为张三的女儿选购生日礼物
用户请求为一位名叫张三的人的女儿撰写一段温馨的祝福语
用户的同事名叫张三
用户与张三约定讨论阿里云百炼项目
用户与同事张三讨论了该项目的PRD产品需求文档
同事张三计划下周对PRD进行最终确定
张三还安排了在再下一周进行POCProof of Concept概念验证的讨论
用户希望获知该项目工程开发工作的负责团队信息以了解项目执行的组织架构与分工情况
已有用户属性
新增用户属性
朋友关系
示例4
信息
用户在寻求有关推拿按摩手法的教程或相关网站推荐
用户希望系统地学习正规的推拿按摩手法
用户对按摩感兴趣并且经常去推拿按摩店
用户想了解自己在静息状态下一小时大概会消耗多少大卡热量
用户年龄为28岁
用户体重为70kg
用户是男性
已有用户属性性别年龄体重当前学习进展
新增用户属性
""",
LanguageEnum.EN: """
"""
}
GET_REFLECT_SUBJECT_USER_QUERY_PROMPT = {
LanguageEnum.CN: """
信息
{user_query}
已有用户属性{exist_keys}
新增用户属性
""",
LanguageEnum.EN: """
"""
}

View file

@ -1,8 +0,0 @@
from ..enumeration.language_enum import LanguageEnum
GET_REFLECTION_SYSTEM_PROMPT = {}
GET_REFLECTION_FEW_SHOT_PROMPT = {}
GET_REFLECTION_USER_QUERY_PROMPT = {}

View file

@ -1,85 +0,0 @@
info_filter_system_prompt:
cn: |
任务指令:对所给{batch_size}个句子中所含有的关于用户的信息打分分数为0,1,2或3。
注意其中0表示不包含用户信息1表示句子中只包含用户假设的信息或者用户虚构的内容2表示包含用户的一般信息时效性信息或者需要猜测才能得到的用户信息3表示明确含有或者可以确定推断出关于用户的重要信息或者用户要求记录。
按如下格式输出, 每一行输出一个打分,一定加<>,一共输出{batch_size}个分数:
结果:
<分数:0或1或2或3>
INFO_FILTER_SYSTEM_PROMPT = {
LanguageEnum.CN: """
任务指令:对所给{batch_size}个句子中所含有的关于用户的信息打分分数为0,1,2或3。
注意其中0表示不包含用户信息1表示句子中只包含用户假设的信息或者用户虚构的内容2表示包含用户的一般信息时效性信息或者需要猜测才能得到的用户信息3表示明确含有或者可以确定推断出关于用户的重要信息或者用户要求记录。
按如下格式输出, 每一行输出一个打分,一定加<>,一共输出{batch_size}个分数:
结果:
<分数:0或1或2或3>
""",
LanguageEnum.EN: """
"""
}
INFO_FILTER_FEW_SHOT_PROMPT = {
LanguageEnum.CN: """
示例1
句子:
1 用户:帮我写一段给同事张三女儿三岁生日的祝福语。
2 用户公元1400年至1550年中国历史大事表。
3 用户:你吃午饭了吗?
4 用户:我今天心情不好,可以安慰我一下吗?
5 用户:能给我整理一张如何使用大模型的技巧列表吗,要求内容尽量精简。
6 用户记一下明天下午3点提醒我去拿一下文件。
结果:
<3>
<0>
<0>
<2>
<2>
<3>
示例2
句子:
1 用户:我刚刚入职了阿里巴巴。
2 用户:露天睡觉蚊子多,咋搞。
3 用户:创造力和外倾性有关?
4 用户:一个区县的所有的事业人员的档案审核、修改和规范,应该是县委组织部下属的干部档案中心负责还是县人社局负责?
5 用户:假如我要和一个女人准备要孩子,我作为男人,怎么保护女人和孩子以及怎么备孕确保精子质量高对后代好
6 用户:我和你一起出去玩,你会感觉开心吗?
7 用户:林浅,一位对未来充满好奇的年轻女孩,偶然间发现了这家能寄信给未来的邮局。出于对逝去祖父的怀念,她决定写下一封信,寄给五年后的自己,
希望能收到祖父生前未说完的故事。五年期限将至,当她几乎忘记这段往事时,一封泛黄的回信悄然降临,不仅带来了祖父未完的冒险故事,
还藏着一段关于勇气、爱与自我发现的深刻启示。续写成3000字小说。
结果:
<3>
<2>
<0>
<0>
<3>
<1>
<1>
示例3
句子:
1 用户:你的妈妈患有焦虑症,怎么安慰和开导她?
2 用户:肾脏严重亏空
3 用户:我很喜欢打篮球,所以我身体很好
4 用户:篮球明星有哪些?
5 用户:李增杰:这个是星座蛙设,但是我是处女座的,我妈感觉因为我的不正常,我妈不让我看了\n雌猴摸了摸李增杰的头这样啊\n雌猴打开了哔哩哔哩看了看\n雌猴:要不换个设吧我听你未来的你说有一个叫难忘的朱古力232这个人他弄的设是Windows设\n这是剧本1剧本2未完待续
结果:
<1>
<1>
<3>
<0>
<1>
""",
LanguageEnum.EN: """
"""
}
INFO_FILTER_USER_QUERY_PROMPT = {
LanguageEnum.CN: """
句子:
{user_query}
结果:
""",
LanguageEnum.EN: """
"""
}

View file

@ -1,8 +0,0 @@
from ..enumeration.language_enum import LanguageEnum
LONG_CONTRA_REPEAT_SYSTEM_PROMPT = {}
LONG_CONTRA_REPEAT_FEW_SHOT_PROMPT = {}
LONG_CONTRA_REPEAT_USER_QUERY_PROMPT = {}

View file

@ -1,71 +0,0 @@
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: """
"""
}

View file

@ -1,132 +0,0 @@
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: """
"""
}

View file

@ -1,6 +1,5 @@
import os
import time
from typing import List
import questionary
@ -29,7 +28,6 @@ class CliMemoryChat(BaseMemoryChat):
generation_model: str,
stream: bool = True,
human_name: str = "",
human_profile_setting: List[str] = None,
assistant_name: str = "",
**kwargs):
@ -37,7 +35,6 @@ class CliMemoryChat(BaseMemoryChat):
self._generation_model: BaseModel | str = generation_model
self.stream: bool = stream
self.human_name: str = human_name
self.human_profile_setting: List[str] = human_profile_setting
self.assistant_name: str = assistant_name
self.kwargs: dict = kwargs
@ -46,7 +43,6 @@ class CliMemoryChat(BaseMemoryChat):
G_CONTEXT.meta_data.update({
"human_name": human_name,
"assistant_name": assistant_name,
"human_profile_setting": human_profile_setting,
})
self.logger = Logger.get_logger()

View file

@ -1,9 +1,93 @@
system_prompt:
cn:
get_reflect_system:
cn: |
任务:从下面的信息中提取出最重要的最多{num_questions}条{user_name}属性,要求不与已有的{user_name}属性语义重复。
要求1{user_name}属性可以是一般的{user_name}偏好,也可以是运动偏好,旅游偏好,饮食偏好等等,也可以是重要事件性质,比如最近重要的事情,也可以是一些高度概括的人生理想,价值观,人生观,性格, 也可以是和朋友的人际关系等等。
要求2根据{user_name}属性,我们可以生成“{user_name}的<{user_name}属性>是什么?”的问题,以此可以从下面的信息中提取{user_name}属性对应的值。
输出格式:每一行输出一个{user_name}属性,每个{user_name}属性推荐4个字如果没有信息请回答无最多输出{num_questions}条。
few_shot_prompt:
cn:
user_query_prompt:
cn:
get_reflect_few_shot:
cn: |
示例1
信息:
{user_name}想知道明天上海的天气情况。
{user_name}可能在上海工作,并关心是否需要带伞上班。
{user_name}在阿里巴巴徐汇滨江园区附近工作。
{user_name}计划中午在公司附近用餐。
{user_name}对咖啡因过敏。
{user_name}喝了咖啡后晚上会出现失眠的情况。
{user_name}偏好口味较为清淡、不辣的中餐馆。
{user_name}刚开始了他们的第一份工作。
{user_name}的工作岗位是阿里巴巴的算法工程师。
{user_name}希望得到与该岗位相关的职场建议。
{user_name}面临的问题是在项目进展初期如何有效与上司沟通。
{user_name}的目标是及时同步项目状态给上司。
{user_name}希望了解image generation图像生成技术的发展概览和最新进展。
{user_name}对variational auto-encoder、GAN、Diffusion Model等技术及其相互关系感兴趣。
已有{user_name}属性:性别,工作地点,工作单位,睡眠状况,美食偏好
新增{user_name}属性:
过敏源
技术方向
工作岗位
示例2
信息:
{user_name}想要了解如何使用torchvision库来可视化深度学习任务的进度信息。
{user_name}希望了解如何将基于numpy和pytorch的并行计算方案迁移到CUDA支持的GPU上运行。
{user_name}询问是否需要依赖特定的包来完成这一任务。
{user_name}希望了解如何在Python中自定义进程和线程以实现并行计算。
{user_name}在编程中遇到了与并行计算相关的问题。
{user_name}希望学习如何使用Pythonnumpypytorch在GPU上实现简单的并行计算。
{user_name}希望了解并行计算的基本概念包括threads。
{user_name}询问有关世界各地著名菜系的信息。
{user_name}对全球各地的美食非常感兴趣。
{user_name}关心其体重与运动消耗的额外热量及心率之间的关系。
{user_name}在询问为了实现这一目标,每天需要额外消耗多少大卡热量。
{user_name}希望每月减重1kg。
{user_name}希望得到类似战略类手机游戏的推荐。
{user_name}喜欢玩三国志系列、文明系列、全面战争、骑马与砍杀等战略类游戏。
{user_name}希望根据他们的喜好获得新的游戏推荐。
{user_name}列举了他们喜欢的具体游戏类型,包括:三国志系列、文明系列、全面战争、骑马与砍杀等。
{user_name}喜欢玩战略类游戏。
已有{user_name}属性:工作地点,性别,美食偏好
新增{user_name}属性:
游戏偏好
运动计划
技术方向
示例3
信息:
{user_name}寻求推荐一个相关课程或网址以进行学习。
{user_name}计划去青岛旅游。
{user_name}正为张三的女儿选购生日礼物。
{user_name}请求为一位名叫张三的人的女儿撰写一段温馨的祝福语。
{user_name}的同事名叫张三。
{user_name}与张三约定讨论阿里云百炼项目。
{user_name}与同事张三讨论了该项目的PRD产品需求文档
同事张三计划下周对PRD进行最终确定。
张三还安排了在再下一周进行POCProof of Concept概念验证的讨论。
{user_name}希望获知该项目工程开发工作的负责团队信息,以了解项目执行的组织架构与分工情况。
已有{user_name}属性:
新增{user_name}属性:
朋友关系
示例4
信息:
{user_name}在寻求有关推拿按摩手法的教程或相关网站推荐。
{user_name}希望系统地学习正规的推拿按摩手法。
{user_name}对按摩感兴趣,并且经常去推拿按摩店。
{user_name}想了解自己在静息状态下一小时大概会消耗多少大卡热量。
{user_name}年龄为28岁。
{user_name}体重为70kg。
{user_name}是男性。
已有{user_name}属性:性别,年龄,体重,当前学习进展
新增{user_name}属性:
get_reflect_user_query:
cn: |
信息:
{user_query}
已有{user_name}属性:{exist_keys}
新增{user_name}属性:

View file

@ -1,11 +1,12 @@
from typing import List
from memory_scope.constants.common_constants import NOT_REFLECTED_NODES
from memory_scope.constants.common_constants import NOT_REFLECTED_NODES, INSIGHT_NODES
from memory_scope.constants.language_constants import COMMA_WORD
from memory_scope.enumeration.memory_status_enum import MemoryNodeStatus
from memory_scope.enumeration.memory_type_enum import MemoryTypeEnum
from memory_scope.memory.worker.memory_base_worker import MemoryBaseWorker
from memory_scope.scheme.memory_node import MemoryNode
from memory_scope.utils.datetime_handler import DatetimeHandler
from memory_scope.utils.response_text_parser import ResponseTextParser
from memory_scope.utils.timer import timer
from memory_scope.utils.tool_functions import prompt_to_msg
@ -13,7 +14,7 @@ from memory_scope.utils.tool_functions import prompt_to_msg
class GetReflectionWorker(MemoryBaseWorker):
@timer
def retrieve_not_reflected_memory(self) -> List[MemoryNode]:
def retrieve_not_reflected_memory(self, query: str) -> List[MemoryNode]:
filter_dict = {
"user_name": self.user_name,
"target_name": self.target_name,
@ -21,10 +22,44 @@ class GetReflectionWorker(MemoryBaseWorker):
"memory_type": [MemoryTypeEnum.OBSERVATION.value, MemoryTypeEnum.OBS_CUSTOMIZED.value],
"obs_reflected": False,
}
return self.vector_store.retrieve(query=" ", top_k=self.retrieve_top_k, filter_dict=filter_dict)
return self.vector_store.retrieve(query=query, top_k=self.retrieve_not_reflected_top_k, filter_dict=filter_dict)
@timer
def retrieve_insight_memory(self, query: str) -> List[MemoryNode]:
filter_dict = {
"user_name": self.user_name,
"target_name": self.target_name,
"status": MemoryNodeStatus.ACTIVE.value,
"memory_type": MemoryTypeEnum.INSIGHT.value,
}
return self.vector_store.retrieve(query=query, top_k=self.retrieve_insight_top_k, filter_dict=filter_dict)
def new_insight_node(self, insight_key: str) -> MemoryNode:
dt_handler = DatetimeHandler()
meta_data = {k: str(v) for k, v in dt_handler.dt_info_dict.items()}
return MemoryNode(user_name=self.user_name,
target_name=self.target_name,
meta_data=meta_data,
key=insight_key,
memory_type=MemoryTypeEnum.INSIGHT.value,
status=MemoryNodeStatus.ACTIVE.value)
def _run(self):
not_reflected_nodes: List[MemoryNode] = self.retrieve_not_reflected_memory()
not_reflected_nodes: List[MemoryNode] = []
insight_nodes: List[MemoryNode] = []
fn_list = [self.retrieve_not_reflected_memory, self.retrieve_insight_memory]
for nodes in self.async_run(fn_list=fn_list, query="_"):
if not nodes:
continue
for node in nodes:
if node.memory_type == MemoryTypeEnum.INSIGHT.value:
insight_nodes.append(node)
else:
not_reflected_nodes.append(node)
self.set_context(INSIGHT_NODES, insight_nodes)
# count
not_reflected_count = len(not_reflected_nodes)
@ -36,51 +71,31 @@ class GetReflectionWorker(MemoryBaseWorker):
self.set_context(NOT_REFLECTED_NODES, not_reflected_nodes)
# get profile_keys
exist_keys: List[str] = []
profile_keys: List[str] = list(self.user_profile_dict.keys())
exist_keys.extend(profile_keys)
self.logger.info(f"profile_keys={profile_keys}")
# get insight_keys
insight_nodes: List[MemoryNode] = self.get_context(INSIGHT_NODES)
if insight_nodes:
insight_keys = [
n.insight_key for n in insight_nodes
]
insight_keys = [x.strip() for x in insight_keys if x]
exist_keys.extend(insight_keys)
self.logger.info(f"insight_keys={insight_keys}")
exist_keys: List[str] = [n.key for n in insight_nodes]
self.logger.info(f"exist_keys={exist_keys}")
# gen reflect prompt
user_query_list = [n.content for n in not_reflected_merge_nodes]
reflect_message = prompt_to_msg(
system_prompt=self.prompt_handler.system_prompt.format(
num_questions=self.reflect_num_questions
),
few_shot=self.prompt_handler.few_shot_prompt,
user_query=self.prompt_handler.user_query_prompt.format(
exist_keys=self.get_language_value(COMMA_WORD).join(exist_keys), user_query="\n".join(user_query_list)
),
)
user_query_list = [n.content for n in not_reflected_nodes]
system_prompt = self.prompt_handler.get_reflect_system.format(user_name=self.target_name,
num_questions=self.reflect_num_questions)
few_shot = self.prompt_handler.get_reflect_few_shot.format(user_name=self.target_name)
user_query = self.prompt_handler.get_reflect_user_query.format(
user_name=self.target_name,
exist_keys=self.get_language_value(COMMA_WORD).join(exist_keys),
user_query="\n".join(user_query_list))
reflect_message = prompt_to_msg(system_prompt=system_prompt, few_shot=few_shot, user_query=user_query)
self.logger.info(f"reflect_message={reflect_message}")
# # call LLM
response = self.generation_model.call(
messages=reflect_message,
model_name=self.reflect_obs_model,
max_token=self.reflect_obs_max_token,
temperature=self.reflect_obs_temperature,
top_k=self.reflect_obs_top_k,
)
response = self.generation_model.call(messages=reflect_message, top_k=self.generation_model_top_k)
# return if empty
if not response:
self.add_run_info("reflect_obs_questions call llm failed!")
if not response.status or not response.message.content:
return
# parse text & save
new_insight_keys = ResponseTextParser(response.message.content).parse_v2(
"get_insight_keys"
)
new_insight_keys = ResponseTextParser(response.message.content).parse_v2("get_reflection")
if new_insight_keys:
self.set_context(NEW_INSIGHT_KEYS, new_insight_keys)
for insight_key in new_insight_keys:
insight_nodes.append(self.new_insight_node(insight_key))

View file

@ -1,68 +0,0 @@
from typing import List, Dict
from memory_scope.enumeration.memory_status_enum import MemoryNodeStatus
from memory_scope.enumeration.memory_type_enum import MemoryTypeEnum
from memory_scope.memory.worker.memory_base_worker import MemoryBaseWorker
from memory_scope.scheme.memory_node import MemoryNode
from memory_scope.utils.timer import timer
from memory_scope.utils.global_context import G_CONTEXT
class LoadMemoryWorker(MemoryBaseWorker):
@timer
async def retrieve_not_reflected_memory(self, query: str) -> List[MemoryNode]:
filter_dict = {
"user_name": self.user_name,
"target_name": self.target_name,
"status": MemoryNodeStatus.ACTIVE.value,
"memory_type": [MemoryTypeEnum.OBSERVATION.value, MemoryTypeEnum.OBS_CUSTOMIZED.value],
"obs_reflected": False,
}
return await self.vector_store.async_retrieve(query=query,
top_k=self.retrieve_not_reflected_top_k,
filter_dict=filter_dict)
@timer
async def retrieve_not_updated_memory(self, query: str) -> List[MemoryNode]:
filter_dict = {
"user_name": self.user_name,
"target_name": self.target_name,
"status": MemoryNodeStatus.ACTIVE.value,
"memory_type": [MemoryTypeEnum.OBSERVATION.value, MemoryTypeEnum.OBS_CUSTOMIZED.value],
"obs_updated": False,
}
return await self.vector_store.async_retrieve(query=query,
top_k=self.retrieve_not_updated_top_k,
filter_dict=filter_dict)
@timer
async def retrieve_profiles(self, query: str) -> List[MemoryNode]:
filter_dict = {
"user_name": self.user_name,
"target_name": self.target_name,
"status": MemoryNodeStatus.ACTIVE.value,
"memory_type": [MemoryTypeEnum.PROFILE.value, MemoryTypeEnum.PROFILE_CUSTOMIZED.value],
}
retrieve_nodes = await self.vector_store.async_retrieve(query=query,
top_k=self.retrieve_profiles_top_k,
filter_dict=filter_dict)
nodes: List[MemoryNode] = []
human_profile_setting = G_CONTEXT.meta_data.get("human_profile_setting", {})
for attr_key in human_profile_setting:
return nodes
def _run(self):
mock_query = "_"
fn_list = [
self.retrieve_not_reflected_memory,
self.retrieve_not_updated_memory,
self.retrieve_profiles,
]
memory_node_dict: Dict[str, MemoryNode] = {}
for nodes in self.async_run(fn_list, query=mock_query):
assert isinstance(nodes[0], MemoryNode)
memory_node_dict.update({n.memory_id: n for n in nodes})
memory_node_list = sorted(memory_node_dict.values(), key=lambda x: x.memory_id)

View file

@ -1,14 +1,10 @@
from typing import List
from memory_scope.utils.response_text_parser import ResponseTextParser
from memory_scope.constants.common_constants import (
INSIGHT_NODES,
NEW_OBS_NODES
)
from memory_scope.utils.tool_functions import prompt_to_msg
from memory_scope.scheme.memory_node import MemoryNode
from memory_scope.constants.language_constants import COLON_WORD, NONE_WORD, REPEATED_WORD
from memory_scope.memory.worker.memory_base_worker import MemoryBaseWorker
from memory_scope.constants.language_constants import COMMA_WORD, COLON_WORD, NONE_WORD, REPEATED_WORD
from memory_scope.scheme.memory_node import MemoryNode
from memory_scope.utils.response_text_parser import ResponseTextParser
from memory_scope.utils.tool_functions import prompt_to_msg
class UpdateInsightWorker(MemoryBaseWorker):

View file

@ -28,7 +28,7 @@ class GetObservationWorker(MemoryBaseWorker):
dt_info_dict = DatetimeHandler.extract_date_parts(input_string=time_infer)
meta_data.update({f"event_{k}": str(v) for k, v in dt_info_dict.items()})
node = MemoryNode(user_name=self.user_name,
return MemoryNode(user_name=self.user_name,
target_name=self.target_name,
meta_data=meta_data,
content=obs_content,
@ -37,7 +37,6 @@ class GetObservationWorker(MemoryBaseWorker):
timestamp=message.time_created,
obs_reflected=False,
obs_updated=False)
return node
def build_prompt(self) -> List[Message]:
# build prompt

View file

@ -17,6 +17,10 @@ class MemoryNode(BaseModel):
content: str = Field("", description="memory content")
key: str = Field("", description="memory key")
value: str = Field("", description="memory value")
score_similar: float = Field(0, description="es similar score")
score_rank: float = Field(0, description="rank model score")