memory_BUG_long_term
This commit is contained in:
@@ -22,7 +22,7 @@ from app.utils.config_utils import resolve_config_id
|
|||||||
logger = get_agent_logger(__name__)
|
logger = get_agent_logger(__name__)
|
||||||
template_root = os.path.join(PROJECT_ROOT_, 'memory', 'agent', 'utils', 'prompt')
|
template_root = os.path.join(PROJECT_ROOT_, 'memory', 'agent', 'utils', 'prompt')
|
||||||
|
|
||||||
async def write_rag(end_user_id, user_message, ai_message, user_rag_memory_id):
|
async def write_rag_agent(end_user_id, user_message, ai_message, user_rag_memory_id):
|
||||||
# RAG 模式:组合消息为字符串格式(保持原有逻辑)
|
# RAG 模式:组合消息为字符串格式(保持原有逻辑)
|
||||||
combined_message = f"user: {user_message}\nassistant: {ai_message}"
|
combined_message = f"user: {user_message}\nassistant: {ai_message}"
|
||||||
await write_rag(end_user_id, combined_message, user_rag_memory_id)
|
await write_rag(end_user_id, combined_message, user_rag_memory_id)
|
||||||
@@ -94,27 +94,31 @@ async def write(storage_type, end_user_id, user_message, ai_message, user_rag_me
|
|||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
async def term_memory_save(long_term_messages,actual_config_id,end_user_id,type,scope):
|
async def term_memory_save(long_term_messages,actual_config_id,end_user_id,type,scope):
|
||||||
db = next(get_db())
|
with get_db_context() as db_session:
|
||||||
try:
|
try:
|
||||||
repo = LongTermMemoryRepository(db)
|
repo = LongTermMemoryRepository(db_session)
|
||||||
await long_term_storage(long_term_type=AgentMemory_Long_Term.STRATEGY_CHUNK, langchain_messages=long_term_messages,
|
await long_term_storage(long_term_type=AgentMemory_Long_Term.STRATEGY_CHUNK, langchain_messages=long_term_messages,
|
||||||
memory_config=actual_config_id, end_user_id=end_user_id, scope=scope)
|
memory_config=actual_config_id, end_user_id=end_user_id, scope=scope)
|
||||||
|
|
||||||
|
from app.core.memory.agent.utils.redis_tool import write_store
|
||||||
|
result = write_store.get_session_by_userid(end_user_id)
|
||||||
|
if type==AgentMemory_Long_Term.STRATEGY_CHUNK or AgentMemory_Long_Term.STRATEGY_AGGREGATE:
|
||||||
|
data = await format_parsing(result, "dict")
|
||||||
|
chunk_data = data[:scope]
|
||||||
|
if len(chunk_data)==scope:
|
||||||
|
repo.upsert(end_user_id, chunk_data)
|
||||||
|
logger.info(f'---------写入短长期-----------')
|
||||||
|
else:
|
||||||
|
long_time_data = write_store.find_user_recent_sessions(end_user_id, 5)
|
||||||
|
long_messages = await messages_parse(long_time_data)
|
||||||
|
repo.upsert(end_user_id, long_messages)
|
||||||
|
logger.info(f'写入短长期:')
|
||||||
|
# yield db_session
|
||||||
|
finally:
|
||||||
|
if db_session.in_transaction():
|
||||||
|
db_session.rollback()
|
||||||
|
db_session.close()
|
||||||
|
|
||||||
from app.core.memory.agent.utils.redis_tool import write_store
|
|
||||||
result = write_store.get_session_by_userid(end_user_id)
|
|
||||||
if type==AgentMemory_Long_Term.STRATEGY_CHUNK or AgentMemory_Long_Term.STRATEGY_AGGREGATE:
|
|
||||||
data = await format_parsing(result, "dict")
|
|
||||||
chunk_data = data[:scope]
|
|
||||||
if len(chunk_data)==scope:
|
|
||||||
repo.upsert(end_user_id, chunk_data)
|
|
||||||
logger.info(f'---------写入短长期-----------')
|
|
||||||
else:
|
|
||||||
long_time_data = write_store.find_user_recent_sessions(end_user_id, 5)
|
|
||||||
long_messages = await messages_parse(long_time_data)
|
|
||||||
repo.upsert(end_user_id, long_messages)
|
|
||||||
logger.info(f'写入短长期:')
|
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
'''根据窗口'''
|
'''根据窗口'''
|
||||||
async def window_dialogue(end_user_id,langchain_messages,memory_config,scope):
|
async def window_dialogue(end_user_id,langchain_messages,memory_config,scope):
|
||||||
|
|||||||
@@ -64,11 +64,11 @@ async def long_term_storage(long_term_type:str="chunk",langchain_messages:list=[
|
|||||||
|
|
||||||
|
|
||||||
async def write_long_term(storage_type,end_user_id,message_chat,aimessages,user_rag_memory_id,actual_config_id):
|
async def write_long_term(storage_type,end_user_id,message_chat,aimessages,user_rag_memory_id,actual_config_id):
|
||||||
from app.services.memory_konwledges_server import write_rag
|
from app.core.memory.agent.langgraph_graph.routing.write_router import write_rag_agent
|
||||||
from app.core.memory.agent.langgraph_graph.routing.write_router import term_memory_save
|
from app.core.memory.agent.langgraph_graph.routing.write_router import term_memory_save
|
||||||
from app.core.memory.agent.langgraph_graph.tools.write_tool import agent_chat_messages
|
from app.core.memory.agent.langgraph_graph.tools.write_tool import agent_chat_messages
|
||||||
if storage_type == AgentMemory_Long_Term.STORAGE_RAG:
|
if storage_type == AgentMemory_Long_Term.STORAGE_RAG:
|
||||||
await write_rag(end_user_id, message_chat, aimessages, user_rag_memory_id)
|
await write_rag_agent(end_user_id, message_chat, aimessages, user_rag_memory_id)
|
||||||
else:
|
else:
|
||||||
# AI 回复写入(用户消息和 AI 回复配对,一次性写入完整对话)
|
# AI 回复写入(用户消息和 AI 回复配对,一次性写入完整对话)
|
||||||
CHUNK = AgentMemory_Long_Term.STRATEGY_CHUNK
|
CHUNK = AgentMemory_Long_Term.STRATEGY_CHUNK
|
||||||
|
|||||||
Reference in New Issue
Block a user