mirror of https://github.com/Mai-with-u/MaiBot.git
lpmm初始化位置更改
parent
9904fd81a1
commit
418cb62434
|
|
@ -0,0 +1,82 @@
|
||||||
|
from src.chat.knowledge.embedding_store import EmbeddingManager
|
||||||
|
from src.chat.knowledge.qa_manager import QAManager
|
||||||
|
from src.chat.knowledge.kg_manager import KGManager
|
||||||
|
from src.chat.knowledge.global_logger import logger
|
||||||
|
from src.config.config import global_config
|
||||||
|
import os
|
||||||
|
|
||||||
|
INVALID_ENTITY = [
|
||||||
|
"",
|
||||||
|
"你",
|
||||||
|
"他",
|
||||||
|
"她",
|
||||||
|
"它",
|
||||||
|
"我们",
|
||||||
|
"你们",
|
||||||
|
"他们",
|
||||||
|
"她们",
|
||||||
|
"它们",
|
||||||
|
]
|
||||||
|
|
||||||
|
RAG_GRAPH_NAMESPACE = "rag-graph"
|
||||||
|
RAG_ENT_CNT_NAMESPACE = "rag-ent-cnt"
|
||||||
|
RAG_PG_HASH_NAMESPACE = "rag-pg-hash"
|
||||||
|
|
||||||
|
|
||||||
|
ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
||||||
|
DATA_PATH = os.path.join(ROOT_PATH, "data")
|
||||||
|
|
||||||
|
|
||||||
|
qa_manager = None
|
||||||
|
inspire_manager = None
|
||||||
|
|
||||||
|
def lpmm_start_up(): # sourcery skip: extract-duplicate-method
|
||||||
|
# 检查LPMM知识库是否启用
|
||||||
|
if global_config.lpmm_knowledge.enable:
|
||||||
|
logger.info("正在初始化Mai-LPMM")
|
||||||
|
logger.info("创建LLM客户端")
|
||||||
|
|
||||||
|
# 初始化Embedding库
|
||||||
|
embed_manager = EmbeddingManager()
|
||||||
|
logger.info("正在从文件加载Embedding库")
|
||||||
|
try:
|
||||||
|
embed_manager.load_from_file()
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"此消息不会影响正常使用:从文件加载Embedding库时,{e}")
|
||||||
|
# logger.warning("如果你是第一次导入知识,或者还未导入知识,请忽略此错误")
|
||||||
|
logger.info("Embedding库加载完成")
|
||||||
|
# 初始化KG
|
||||||
|
kg_manager = KGManager()
|
||||||
|
logger.info("正在从文件加载KG")
|
||||||
|
try:
|
||||||
|
kg_manager.load_from_file()
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"此消息不会影响正常使用:从文件加载KG时,{e}")
|
||||||
|
# logger.warning("如果你是第一次导入知识,或者还未导入知识,请忽略此错误")
|
||||||
|
logger.info("KG加载完成")
|
||||||
|
|
||||||
|
logger.info(f"KG节点数量:{len(kg_manager.graph.get_node_list())}")
|
||||||
|
logger.info(f"KG边数量:{len(kg_manager.graph.get_edge_list())}")
|
||||||
|
|
||||||
|
# 数据比对:Embedding库与KG的段落hash集合
|
||||||
|
for pg_hash in kg_manager.stored_paragraph_hashes:
|
||||||
|
# 使用与EmbeddingStore中一致的命名空间格式
|
||||||
|
key = f"paragraph-{pg_hash}"
|
||||||
|
if key not in embed_manager.stored_pg_hashes:
|
||||||
|
logger.warning(f"KG中存在Embedding库中不存在的段落:{key}")
|
||||||
|
global qa_manager
|
||||||
|
# 问答系统(用于知识库)
|
||||||
|
qa_manager = QAManager(
|
||||||
|
embed_manager,
|
||||||
|
kg_manager,
|
||||||
|
)
|
||||||
|
|
||||||
|
# # 记忆激活(用于记忆库)
|
||||||
|
# global inspire_manager
|
||||||
|
# inspire_manager = MemoryActiveManager(
|
||||||
|
# embed_manager,
|
||||||
|
# llm_client_list[global_config["embedding"]["provider"]],
|
||||||
|
# )
|
||||||
|
else:
|
||||||
|
logger.info("LPMM知识库已禁用,跳过初始化")
|
||||||
|
# 创建空的占位符对象,避免导入错误
|
||||||
|
|
@ -5,7 +5,7 @@ from typing import List, Union
|
||||||
|
|
||||||
from .global_logger import logger
|
from .global_logger import logger
|
||||||
from . import prompt_template
|
from . import prompt_template
|
||||||
from .knowledge_lib import INVALID_ENTITY
|
from . import INVALID_ENTITY
|
||||||
from src.llm_models.utils_model import LLMRequest
|
from src.llm_models.utils_model import LLMRequest
|
||||||
from json_repair import repair_json
|
from json_repair import repair_json
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
||||||
from src.chat.knowledge.embedding_store import EmbeddingManager
|
|
||||||
from src.chat.knowledge.qa_manager import QAManager
|
|
||||||
from src.chat.knowledge.kg_manager import KGManager
|
|
||||||
from src.chat.knowledge.global_logger import logger
|
|
||||||
from src.config.config import global_config
|
|
||||||
import os
|
|
||||||
|
|
||||||
INVALID_ENTITY = [
|
|
||||||
"",
|
|
||||||
"你",
|
|
||||||
"他",
|
|
||||||
"她",
|
|
||||||
"它",
|
|
||||||
"我们",
|
|
||||||
"你们",
|
|
||||||
"他们",
|
|
||||||
"她们",
|
|
||||||
"它们",
|
|
||||||
]
|
|
||||||
|
|
||||||
RAG_GRAPH_NAMESPACE = "rag-graph"
|
|
||||||
RAG_ENT_CNT_NAMESPACE = "rag-ent-cnt"
|
|
||||||
RAG_PG_HASH_NAMESPACE = "rag-pg-hash"
|
|
||||||
|
|
||||||
|
|
||||||
ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
|
||||||
DATA_PATH = os.path.join(ROOT_PATH, "data")
|
|
||||||
|
|
||||||
|
|
||||||
qa_manager = None
|
|
||||||
inspire_manager = None
|
|
||||||
|
|
||||||
# 检查LPMM知识库是否启用
|
|
||||||
if global_config.lpmm_knowledge.enable:
|
|
||||||
logger.info("正在初始化Mai-LPMM")
|
|
||||||
logger.info("创建LLM客户端")
|
|
||||||
|
|
||||||
# 初始化Embedding库
|
|
||||||
embed_manager = EmbeddingManager()
|
|
||||||
logger.info("正在从文件加载Embedding库")
|
|
||||||
try:
|
|
||||||
embed_manager.load_from_file()
|
|
||||||
except Exception as e:
|
|
||||||
logger.warning(f"此消息不会影响正常使用:从文件加载Embedding库时,{e}")
|
|
||||||
# logger.warning("如果你是第一次导入知识,或者还未导入知识,请忽略此错误")
|
|
||||||
logger.info("Embedding库加载完成")
|
|
||||||
# 初始化KG
|
|
||||||
kg_manager = KGManager()
|
|
||||||
logger.info("正在从文件加载KG")
|
|
||||||
try:
|
|
||||||
kg_manager.load_from_file()
|
|
||||||
except Exception as e:
|
|
||||||
logger.warning(f"此消息不会影响正常使用:从文件加载KG时,{e}")
|
|
||||||
# logger.warning("如果你是第一次导入知识,或者还未导入知识,请忽略此错误")
|
|
||||||
logger.info("KG加载完成")
|
|
||||||
|
|
||||||
logger.info(f"KG节点数量:{len(kg_manager.graph.get_node_list())}")
|
|
||||||
logger.info(f"KG边数量:{len(kg_manager.graph.get_edge_list())}")
|
|
||||||
|
|
||||||
# 数据比对:Embedding库与KG的段落hash集合
|
|
||||||
for pg_hash in kg_manager.stored_paragraph_hashes:
|
|
||||||
# 使用与EmbeddingStore中一致的命名空间格式
|
|
||||||
key = f"paragraph-{pg_hash}"
|
|
||||||
if key not in embed_manager.stored_pg_hashes:
|
|
||||||
logger.warning(f"KG中存在Embedding库中不存在的段落:{key}")
|
|
||||||
|
|
||||||
# 问答系统(用于知识库)
|
|
||||||
qa_manager = QAManager(
|
|
||||||
embed_manager,
|
|
||||||
kg_manager,
|
|
||||||
)
|
|
||||||
|
|
||||||
# # 记忆激活(用于记忆库)
|
|
||||||
# inspire_manager = MemoryActiveManager(
|
|
||||||
# embed_manager,
|
|
||||||
# llm_client_list[global_config["embedding"]["provider"]],
|
|
||||||
# )
|
|
||||||
else:
|
|
||||||
logger.info("LPMM知识库已禁用,跳过初始化")
|
|
||||||
# 创建空的占位符对象,避免导入错误
|
|
||||||
|
|
@ -4,7 +4,7 @@ import glob
|
||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
|
|
||||||
from .knowledge_lib import INVALID_ENTITY, ROOT_PATH, DATA_PATH
|
from . import INVALID_ENTITY, ROOT_PATH, DATA_PATH
|
||||||
# from src.manager.local_store_manager import local_storage
|
# from src.manager.local_store_manager import local_storage
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ from src.common.logger import get_logger
|
||||||
from src.individuality.individuality import get_individuality, Individuality
|
from src.individuality.individuality import get_individuality, Individuality
|
||||||
from src.common.server import get_global_server, Server
|
from src.common.server import get_global_server, Server
|
||||||
from src.mood.mood_manager import mood_manager
|
from src.mood.mood_manager import mood_manager
|
||||||
|
from src.chat.knowledge import lpmm_start_up
|
||||||
from rich.traceback import install
|
from rich.traceback import install
|
||||||
from src.migrate_helper.migrate import check_and_run_migrations
|
from src.migrate_helper.migrate import check_and_run_migrations
|
||||||
# from src.api.main import start_api_server
|
# from src.api.main import start_api_server
|
||||||
|
|
@ -83,6 +84,9 @@ class MainSystem:
|
||||||
# 启动API服务器
|
# 启动API服务器
|
||||||
# start_api_server()
|
# start_api_server()
|
||||||
# logger.info("API服务器启动成功")
|
# logger.info("API服务器启动成功")
|
||||||
|
|
||||||
|
# 启动LPMM
|
||||||
|
lpmm_start_up()
|
||||||
|
|
||||||
# 加载所有actions,包括默认的和插件的
|
# 加载所有actions,包括默认的和插件的
|
||||||
plugin_manager.load_all_plugins()
|
plugin_manager.load_all_plugins()
|
||||||
|
|
@ -96,7 +100,6 @@ class MainSystem:
|
||||||
logger.info("情绪管理器初始化成功")
|
logger.info("情绪管理器初始化成功")
|
||||||
|
|
||||||
# 初始化聊天管理器
|
# 初始化聊天管理器
|
||||||
|
|
||||||
await get_chat_manager()._initialize()
|
await get_chat_manager()._initialize()
|
||||||
asyncio.create_task(get_chat_manager()._auto_save_task())
|
asyncio.create_task(get_chat_manager()._auto_save_task())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -207,7 +207,8 @@ class RelationshipManager:
|
||||||
try:
|
try:
|
||||||
user_id = msg.user_info.user_id
|
user_id = msg.user_info.user_id
|
||||||
platform = msg.chat_info.platform
|
platform = msg.chat_info.platform
|
||||||
assert isinstance(user_id, str) and isinstance(platform, str)
|
assert user_id, "用户ID不能为空"
|
||||||
|
assert platform, "平台不能为空"
|
||||||
msg_person = Person(user_id=user_id, platform=platform)
|
msg_person = Person(user_id=user_id, platform=platform)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ from typing import Dict, Any
|
||||||
|
|
||||||
from src.common.logger import get_logger
|
from src.common.logger import get_logger
|
||||||
from src.config.config import global_config
|
from src.config.config import global_config
|
||||||
from src.chat.knowledge.knowledge_lib import qa_manager
|
from src.chat.knowledge import qa_manager
|
||||||
from src.plugin_system import BaseTool, ToolParamType
|
from src.plugin_system import BaseTool, ToolParamType
|
||||||
|
|
||||||
logger = get_logger("lpmm_get_knowledge_tool")
|
logger = get_logger("lpmm_get_knowledge_tool")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue