-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* ✨ 添加记忆系统 * 🎨 black优化格式 * 🐛 删除apscheduler * ✨ 将记忆插件转换为插件形式
- Loading branch information
Showing
10 changed files
with
187 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -187,4 +187,6 @@ docs/.vitepress/cache | |
docs/.vitepress/dist | ||
|
||
# viztracer | ||
result.json | ||
result.json | ||
|
||
data/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
60 changes: 60 additions & 0 deletions
60
nonebot_plugin_marshoai/plugins/marshoai_memory/__init__.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
from pathlib import Path | ||
from nonebot import require | ||
require("nonebot_plugin_localstore") | ||
from nonebot_plugin_localstore import get_plugin_data_file | ||
import json | ||
|
||
from nonebot_plugin_marshoai.plugin import PluginMetadata, on_function_call | ||
from nonebot_plugin_marshoai.plugin.func_call.params import String | ||
|
||
__marsho_meta__ = PluginMetadata( | ||
name="记忆保存", | ||
author="MarshoAI", | ||
description="这个插件可以帮助AI记住一些事情", | ||
) | ||
|
||
memory_path = get_plugin_data_file("memory.json") | ||
if not Path(memory_path).exists(): | ||
with open(memory_path, "w", encoding="utf-8") as f: | ||
json.dump({}, f, ensure_ascii=False, indent=4) | ||
print(memory_path) | ||
|
||
|
||
@on_function_call(description="存储记忆内容").params( | ||
memory=String(description="你想记住的内容,概括并保留关键内容"), | ||
user_id=String(description="你想记住的人的id"), | ||
) | ||
async def write_memory(memory: str, user_id: str): | ||
|
||
with open(memory_path, "r", encoding="utf-8") as f: | ||
memory_data = json.load(f) | ||
|
||
memorys = memory_data.get(user_id, []) | ||
memorys.append(memory) | ||
memory_data[user_id] = memorys | ||
|
||
with open(memory_path, "w", encoding="utf-8") as f: | ||
json.dump(memory_data, f, ensure_ascii=False, indent=4) | ||
|
||
return "记忆已经保存啦~" | ||
|
||
|
||
@on_function_call(description="读取记忆内容").params( | ||
user_id=String(description="你想读取记忆的人的id") | ||
) | ||
async def read_memory(user_id: str): | ||
with open(memory_path, "r", encoding="utf-8") as f: | ||
memory_data = json.load(f) | ||
memorys = memory_data.get(user_id, []) | ||
if not memorys: | ||
return "好像对ta还没有任何记忆呢~" | ||
|
||
return "这些是有关ta的记忆:" + "\n".join(memorys) | ||
|
||
|
||
async def organize_memories(): | ||
with open(memory_path, "r", encoding="utf-8") as f: | ||
memory_data = json.load(f) | ||
for i in memory_data: | ||
... | ||
# TODO 用大模型对记忆进行整理 |
17 changes: 17 additions & 0 deletions
17
nonebot_plugin_marshoai/plugins/marshoai_memory/tools.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
[ | ||
{ | ||
"type": "function", | ||
"function": { | ||
"name": "marshoai_memory__write_memory", | ||
"description": "如果在上下中你看见并觉得应该记住的人的行为与事件,请调用这个函数,并将记忆内容写入。请尽量每次都调用,总结ta的习惯、爱好和性格,以及你对ta的印象和ta对你的印象;比如用户喜欢干什么吃什么。" | ||
} | ||
}, | ||
{ | ||
"type": "function", | ||
"function": { | ||
"name": "marshoai_memory__read_memory", | ||
"description": "每当你想要获取更多有关某人的信息的时候,请调用这个函数。" | ||
} | ||
} | ||
] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
from pathlib import Path | ||
from nonebot import require | ||
|
||
require("nonebot_plugin_localstore") | ||
from nonebot_plugin_localstore import get_data_file | ||
import json | ||
|
||
memory_path = get_data_file("marshoai", "memory.json") | ||
if not Path(memory_path).exists(): | ||
with open(memory_path, "w", encoding="utf-8") as f: | ||
json.dump({}, f, ensure_ascii=False, indent=4) | ||
print(memory_path) | ||
|
||
|
||
async def write_memory(memory: str, user_id: str): | ||
|
||
with open(memory_path, "r", encoding="utf-8") as f: | ||
memory_data = json.load(f) | ||
|
||
memorys = memory_data.get(user_id, []) | ||
memorys.append(memory) | ||
memory_data[user_id] = memorys | ||
|
||
with open(memory_path, "w", encoding="utf-8") as f: | ||
json.dump(memory_data, f, ensure_ascii=False, indent=4) | ||
|
||
return "记忆已经保存啦~" | ||
|
||
|
||
async def read_memory(user_id: str): | ||
with open(memory_path, "r", encoding="utf-8") as f: | ||
memory_data = json.load(f) | ||
memorys = memory_data.get(user_id, []) | ||
if not memorys: | ||
return "好像对ta还没有任何记忆呢~" | ||
|
||
return "这些是有关ta的记忆:" + "\n".join(memorys) | ||
|
||
|
||
async def organize_memories(): | ||
with open(memory_path, "r", encoding="utf-8") as f: | ||
memory_data = json.load(f) | ||
for i in memory_data: | ||
... | ||
# TODO 用大模型对记忆进行整理 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
[ | ||
{ | ||
"type": "function", | ||
"function": { | ||
"name": "marshoai_memory__write_memory", | ||
"description": "如果在上下中你看见并觉得应该记住的人的行为与事件,请调用这个函数,并将记忆内容写入。请尽量每次都调用,总结ta的习惯、爱好和性格,以及你对ta的印象和ta对你的印象", | ||
"parameters": { | ||
"type": "object", | ||
"properties": { | ||
"memory": { | ||
"type": "string", | ||
"description": "你想记住的内容,概括并保留关键内容。" | ||
}, | ||
"user_id": { | ||
"type": "string", | ||
"description": "你想记住的人的id。" | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"memory", | ||
"user_id" | ||
] | ||
} | ||
}, | ||
{ | ||
"type": "function", | ||
"function": { | ||
"name": "marshoai_memory__read_memory", | ||
"description": "每当你想要获取更多有关某人的信息的时候,请调用这个函数。", | ||
"parameters": { | ||
"type": "object", | ||
"properties": { | ||
"user_id": { | ||
"type": "string", | ||
"description": "你想获取的人的id。" | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"user_id" | ||
] | ||
} | ||
} | ||
] | ||
|
2 changes: 0 additions & 2 deletions
2
nonebot_plugin_marshoai/tools_wip/marshoai_memory/__init__.py
This file was deleted.
Oops, something went wrong.
21 changes: 0 additions & 21 deletions
21
nonebot_plugin_marshoai/tools_wip/marshoai_memory/tools.json
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,10 @@ | ||
{ | ||
"type": "module", | ||
"devDependencies": { | ||
"vitepress": "^1.5.0", | ||
"vitepress-sidebar": "^1.30.2" | ||
}, | ||
"scripts": { | ||
"docs:dev": "vitepress dev docs --host", | ||
"docs:build": "vitepress build docs", | ||
"docs:preview": "vitepress preview docs" | ||
}, | ||
"dependencies": { | ||
"vue": "^3.5.13" | ||
} | ||
} | ||
"type": "module", | ||
"devDependencies": {"vitepress": "^1.5.0", "vitepress-sidebar": "^1.30.2"}, | ||
"scripts": { | ||
"docs:dev": "vitepress dev docs --host", | ||
"docs:build": "vitepress build docs", | ||
"docs:preview": "vitepress preview docs", | ||
}, | ||
"dependencies": {"vue": "^3.5.13"}, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,7 @@ authors = [ | |
{ name="LiteyukiStudio", email = "[email protected]"} | ||
] | ||
dependencies = [ | ||
"nonebot2>=2.2.0", | ||
"nonebot2>=2.4.0", | ||
"nonebot-plugin-alconna>=0.48.0", | ||
"nonebot-plugin-localstore>=0.7.1", | ||
"zhDatetime>=1.1.1", | ||
|
@@ -76,3 +76,6 @@ dev = [ | |
test = [ | ||
"nonebug>=0.4.3", | ||
] | ||
|
||
[tool.ruff.lint] | ||
ignore = ["E402"] |