mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-30 14:17:14 +00:00
feat: 支持删除指定当前会话的指定或全部历史记录 (#239)
This commit is contained in:
@@ -352,9 +352,6 @@ if __name__ == '__main__':
|
|||||||
updater.update_all(cli=True)
|
updater.update_all(cli=True)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# import pkg.utils.configmgr
|
|
||||||
#
|
|
||||||
# pkg.utils.configmgr.set_config_and_reload("quote_origin", False)
|
|
||||||
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
|
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
|
||||||
|
|
||||||
qqbot = main(True)
|
qqbot = main(True)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ class DatabaseManager:
|
|||||||
|
|
||||||
def __execute__(self, *args, **kwargs) -> Cursor:
|
def __execute__(self, *args, **kwargs) -> Cursor:
|
||||||
# logging.debug('SQL: {}'.format(sql))
|
# logging.debug('SQL: {}'.format(sql))
|
||||||
|
logging.debug('SQL: {}'.format(args))
|
||||||
c = self.cursor.execute(*args, **kwargs)
|
c = self.cursor.execute(*args, **kwargs)
|
||||||
self.conn.commit()
|
self.conn.commit()
|
||||||
return c
|
return c
|
||||||
@@ -240,6 +241,21 @@ class DatabaseManager:
|
|||||||
|
|
||||||
return sessions
|
return sessions
|
||||||
|
|
||||||
|
def delete_history(self, session_name: str, index: int) -> bool:
|
||||||
|
# 删除倒序第index个session
|
||||||
|
# 查找其id再删除
|
||||||
|
self.__execute__("""
|
||||||
|
delete from `sessions` where `id` in (select `id` from `sessions` where `name` = '{}' order by `last_interact_timestamp` desc limit 1 offset {})
|
||||||
|
""".format(session_name, index))
|
||||||
|
|
||||||
|
return self.cursor.rowcount == 1
|
||||||
|
|
||||||
|
def delete_all_history(self, session_name: str) -> bool:
|
||||||
|
self.__execute__("""
|
||||||
|
delete from `sessions` where `name` = '{}'
|
||||||
|
""".format(session_name))
|
||||||
|
return self.cursor.rowcount > 0
|
||||||
|
|
||||||
# 将apikey的使用量存进数据库
|
# 将apikey的使用量存进数据库
|
||||||
def dump_api_key_usage(self, api_keys: dict, usage: dict):
|
def dump_api_key_usage(self, api_keys: dict, usage: dict):
|
||||||
logging.debug('dumping api key usage...')
|
logging.debug('dumping api key usage...')
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ def reset_session_prompt(session_name, prompt):
|
|||||||
prompt = [
|
prompt = [
|
||||||
{
|
{
|
||||||
'role': 'system',
|
'role': 'system',
|
||||||
'content': config.default_prompt['default']
|
'content': config.default_prompt['default'] if type(config.default_prompt) == dict else config.default_prompt
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
# 警告
|
# 警告
|
||||||
@@ -366,5 +366,11 @@ class Session:
|
|||||||
def list_history(self, capacity: int = 10, page: int = 0):
|
def list_history(self, capacity: int = 10, page: int = 0):
|
||||||
return pkg.utils.context.get_database_manager().list_history(self.name, capacity, page)
|
return pkg.utils.context.get_database_manager().list_history(self.name, capacity, page)
|
||||||
|
|
||||||
|
def delete_history(self, index: int) -> bool:
|
||||||
|
return pkg.utils.context.get_database_manager().delete_history(self.name, index)
|
||||||
|
|
||||||
|
def delete_all_history(self) -> bool:
|
||||||
|
return pkg.utils.context.get_database_manager().delete_all_history(self.name)
|
||||||
|
|
||||||
def draw_image(self, prompt: str):
|
def draw_image(self, prompt: str):
|
||||||
return pkg.utils.context.get_openai_manager().request_image(prompt)
|
return pkg.utils.context.get_openai_manager().request_image(prompt)
|
||||||
|
|||||||
@@ -256,6 +256,20 @@ def process_command(session_name: str, text_message: str, mgr, config,
|
|||||||
|
|
||||||
reply = pkg.qqbot.message.process_normal_message(to_send, mgr, config,
|
reply = pkg.qqbot.message.process_normal_message(to_send, mgr, config,
|
||||||
launcher_type, launcher_id, sender_id)
|
launcher_type, launcher_id, sender_id)
|
||||||
|
elif cmd == 'del': # 删除指定会话历史记录
|
||||||
|
if len(params) == 0:
|
||||||
|
reply = ["[bot]参数不足, 格式: !del <序号>\n可以通过!list查看序号"]
|
||||||
|
else:
|
||||||
|
if params[0] == 'all':
|
||||||
|
pkg.openai.session.get_session(session_name).delete_all_history()
|
||||||
|
reply = ["[bot]已删除所有历史会话"]
|
||||||
|
elif params[0].isdigit():
|
||||||
|
if pkg.openai.session.get_session(session_name).delete_history(int(params[0])):
|
||||||
|
reply = ["[bot]已删除历史会话 #{}".format(params[0])]
|
||||||
|
else:
|
||||||
|
reply = ["[bot]没有历史会话 #{}".format(params[0])]
|
||||||
|
else:
|
||||||
|
reply = ["[bot]参数错误, 格式: !del <序号>\n可以通过!list查看序号"]
|
||||||
elif cmd == 'usage':
|
elif cmd == 'usage':
|
||||||
reply_str = "[bot]各api-key使用情况:\n\n"
|
reply_str = "[bot]各api-key使用情况:\n\n"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user