refactor(memory): reorganize imports and move MemoryClientFactory to utils
- Move MemoryClientFactory from app.core.memory.client_factory to app.core.memory.utils.llm.llm_utils - Update all evaluation modules to import MemoryClientFactory from new location (locomo, longmemeval, memsciqa) - Move GenerateCacheRequest from memory_storage_service to memory_storage_schema - Update memory_storage_controller imports to reflect schema reorganization - Add analytics_user_summary import to memory_storage_controller from user_memory_service - Consolidate utility imports across evaluation test files for consistency - Improve code organization by centralizing LLM utilities in dedicated utils module
This commit is contained in:
@@ -23,11 +23,11 @@ from app.schemas.memory_storage_schema import (
|
||||
ConfigUpdate,
|
||||
ConfigUpdateExtracted,
|
||||
ConfigUpdateForget,
|
||||
GenerateCacheRequest,
|
||||
)
|
||||
from app.schemas.response_schema import ApiResponse
|
||||
from app.services.memory_storage_service import (
|
||||
DataConfigService,
|
||||
GenerateCacheRequest,
|
||||
MemoryStorageService,
|
||||
analytics_hot_memory_tags,
|
||||
analytics_recent_activity_stats,
|
||||
@@ -41,6 +41,7 @@ from app.services.memory_storage_service import (
|
||||
search_entity_graph,
|
||||
search_statement,
|
||||
)
|
||||
from app.services.user_memory_service import analytics_user_summary
|
||||
from fastapi import APIRouter, Depends
|
||||
from fastapi.responses import StreamingResponse
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
@@ -23,7 +23,6 @@ except ImportError:
|
||||
def load_dotenv():
|
||||
pass
|
||||
|
||||
from app.core.memory.client_factory import MemoryClientFactory
|
||||
from app.core.memory.evaluation.common.metrics import (
|
||||
avg_context_tokens,
|
||||
bleu1,
|
||||
@@ -51,6 +50,7 @@ from app.core.memory.utils.definitions import (
|
||||
SELECTED_GROUP_ID,
|
||||
SELECTED_LLM_ID,
|
||||
)
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.core.models.base import RedBearModelConfig
|
||||
from app.db import get_db_context
|
||||
from app.repositories.neo4j.neo4j_connector import Neo4jConnector
|
||||
|
||||
@@ -435,12 +435,12 @@ async def run_enhanced_evaluation():
|
||||
return None
|
||||
|
||||
# 修正导入路径:使用 app.core.memory.src 前缀
|
||||
from app.core.memory.client_factory import MemoryClientFactory
|
||||
from app.core.memory.llm_tools.openai_embedder import OpenAIEmbedderClient
|
||||
from app.core.memory.utils.config.definitions import (
|
||||
SELECTED_EMBEDDING_ID,
|
||||
SELECTED_LLM_ID,
|
||||
)
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.core.models.base import RedBearModelConfig
|
||||
from app.db import get_db_context
|
||||
from app.repositories.neo4j.graph_search import search_graph_by_embedding
|
||||
|
||||
@@ -15,7 +15,6 @@ except Exception:
|
||||
|
||||
import re
|
||||
|
||||
from app.core.memory.client_factory import MemoryClientFactory
|
||||
from app.core.memory.evaluation.common.metrics import (
|
||||
avg_context_tokens,
|
||||
bleu1,
|
||||
@@ -34,6 +33,7 @@ from app.core.memory.utils.config.definitions import (
|
||||
SELECTED_GROUP_ID,
|
||||
SELECTED_LLM_ID,
|
||||
)
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.core.models.base import RedBearModelConfig
|
||||
from app.db import get_db_context
|
||||
from app.repositories.neo4j.graph_search import search_graph, search_graph_by_embedding
|
||||
|
||||
@@ -34,7 +34,6 @@ try:
|
||||
)
|
||||
except Exception:
|
||||
ingest_contexts_via_full_pipeline = None # 在运行时做兜底检查
|
||||
from app.core.memory.client_factory import MemoryClientFactory
|
||||
from app.core.memory.evaluation.common.metrics import (
|
||||
avg_context_tokens,
|
||||
jaccard,
|
||||
@@ -48,6 +47,7 @@ from app.core.memory.utils.config.definitions import (
|
||||
SELECTED_EMBEDDING_ID,
|
||||
SELECTED_LLM_ID,
|
||||
)
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.core.models.base import RedBearModelConfig
|
||||
from app.db import get_db_context
|
||||
from app.repositories.neo4j.graph_search import search_graph, search_graph_by_embedding
|
||||
|
||||
@@ -15,7 +15,6 @@ except Exception:
|
||||
return None
|
||||
|
||||
# 与现有评估脚本保持一致的导入方式
|
||||
from app.core.memory.client_factory import MemoryClientFactory
|
||||
from app.core.memory.evaluation.common.metrics import (
|
||||
avg_context_tokens,
|
||||
jaccard,
|
||||
@@ -29,6 +28,7 @@ from app.core.memory.utils.config.definitions import (
|
||||
SELECTED_EMBEDDING_ID,
|
||||
SELECTED_LLM_ID,
|
||||
)
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.core.models.base import RedBearModelConfig
|
||||
from app.db import get_db_context
|
||||
from app.repositories.neo4j.graph_search import search_graph, search_graph_by_embedding
|
||||
|
||||
@@ -15,7 +15,6 @@ except Exception:
|
||||
def load_dotenv():
|
||||
return None
|
||||
|
||||
from app.core.memory.client_factory import MemoryClientFactory
|
||||
from app.core.memory.evaluation.common.metrics import (
|
||||
avg_context_tokens,
|
||||
exact_match,
|
||||
@@ -31,6 +30,7 @@ from app.core.memory.utils.config.definitions import (
|
||||
SELECTED_GROUP_ID,
|
||||
SELECTED_LLM_ID,
|
||||
)
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.db import get_db_context
|
||||
from app.repositories.neo4j.neo4j_connector import Neo4jConnector
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@ for _p in (_SRC_DIR, _PROJECT_ROOT):
|
||||
sys.path.insert(0, _p)
|
||||
|
||||
# 对齐 locomo_test 的检索逻辑:直接使用 graph_search 与 Neo4jConnector/Embedder1
|
||||
from app.core.memory.client_factory import MemoryClientFactory
|
||||
from app.core.memory.evaluation.common.metrics import (
|
||||
avg_context_tokens,
|
||||
exact_match,
|
||||
@@ -37,6 +36,7 @@ from app.core.memory.utils.config.definitions import (
|
||||
SELECTED_GROUP_ID,
|
||||
SELECTED_LLM_ID,
|
||||
)
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.core.models.base import RedBearModelConfig
|
||||
from app.db import get_db_context
|
||||
from app.repositories.neo4j.graph_search import search_graph, search_graph_by_embedding
|
||||
|
||||
@@ -19,7 +19,6 @@ from typing import Any, Dict, List, Optional
|
||||
|
||||
from app.core.memory.llm_tools.openai_client import OpenAIClient
|
||||
from app.core.memory.utils.config import definitions as config_defs
|
||||
from app.core.memory.utils.config import get_model_config
|
||||
from app.core.memory.utils.config.get_data import (
|
||||
extract_and_process_changes,
|
||||
get_data,
|
||||
@@ -169,12 +168,18 @@ class ReflectionEngine:
|
||||
self.llm_client = factory.get_llm_client(config_defs.SELECTED_LLM_ID)
|
||||
elif isinstance(self.llm_client, str):
|
||||
# 如果 llm_client 是字符串(model_id),则用它初始化客户端
|
||||
# from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
from app.db import get_db_context
|
||||
# model_id = self.llm_client
|
||||
from app.services.memory_config_service import MemoryConfigService
|
||||
model_id = self.llm_client
|
||||
with get_db_context() as db:
|
||||
factory = MemoryClientFactory(db)
|
||||
# self.llm_client = factory.get_llm_client(model_id)
|
||||
|
||||
# Use MemoryConfigService to get model config
|
||||
config_service = MemoryConfigService(db)
|
||||
model_config = config_service.get_model_config(model_id)
|
||||
|
||||
extra_params={
|
||||
"temperature": 0.2, # 降低温度提高响应速度和一致性
|
||||
"max_tokens": 600, # 限制最大token数
|
||||
@@ -182,7 +187,6 @@ class ReflectionEngine:
|
||||
"stream": False, # 确保非流式输出以获得最快响应
|
||||
}
|
||||
|
||||
model_config = get_model_config(self.llm_client)
|
||||
self.llm_client = OpenAIClient(RedBearModelConfig(
|
||||
model_name=model_config.get("model_name"),
|
||||
provider=model_config.get("provider"),
|
||||
|
||||
@@ -492,7 +492,7 @@ class EmotionAnalyticsService:
|
||||
config_id=int(config_id),
|
||||
service_name="EmotionAnalyticsService.generate_emotion_suggestions"
|
||||
)
|
||||
from app.core.memory.client_factory import MemoryClientFactory
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
factory = MemoryClientFactory(db)
|
||||
llm_client = factory.get_llm_client(str(memory_config.llm_model_id))
|
||||
except Exception as e:
|
||||
|
||||
@@ -4,15 +4,15 @@ User Memory Service
|
||||
处理用户记忆相关的业务逻辑,包括记忆洞察、用户摘要、节点统计和图数据等。
|
||||
"""
|
||||
|
||||
from typing import Dict, List, Optional, Any
|
||||
import uuid
|
||||
from sqlalchemy.orm import Session
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from app.core.logging_config import get_logger
|
||||
from app.repositories.end_user_repository import EndUserRepository
|
||||
from app.repositories.neo4j.neo4j_connector import Neo4jConnector
|
||||
from app.core.memory.analytics.memory_insight import MemoryInsight
|
||||
from app.core.memory.analytics.user_summary import generate_user_summary
|
||||
from app.repositories.end_user_repository import EndUserRepository
|
||||
from app.repositories.neo4j.neo4j_connector import Neo4jConnector
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
@@ -284,8 +284,7 @@ class UserMemoryService:
|
||||
# 使用 end_user_id 调用分析函数
|
||||
try:
|
||||
logger.info(f"使用 end_user_id={end_user_id} 生成用户摘要")
|
||||
result = await analytics_user_summary(end_user_id)
|
||||
summary = result.get("summary", "")
|
||||
summary = await generate_user_summary(end_user_id)
|
||||
|
||||
if not summary:
|
||||
logger.warning(f"end_user_id {end_user_id} 的用户摘要生成结果为空")
|
||||
|
||||
Reference in New Issue
Block a user