feat: save full user messages as knowledge entries alongside extracted facts in assistant
This commit is contained in:
@@ -108,6 +108,9 @@ class Assistant:
|
||||
self.background_tasks = set()
|
||||
self.last_result = None
|
||||
self.init_database()
|
||||
from rp.memory import KnowledgeStore, FactExtractor
|
||||
self.knowledge_store = KnowledgeStore(DB_PATH)
|
||||
self.fact_extractor = FactExtractor()
|
||||
self.messages.append(init_system_message(args))
|
||||
try:
|
||||
from rp.core.enhanced_assistant import EnhancedAssistant
|
||||
@@ -482,6 +485,26 @@ def process_message(assistant, message):
|
||||
from rp.core.knowledge_context import inject_knowledge_context
|
||||
|
||||
inject_knowledge_context(assistant, message)
|
||||
# Save the user message as a fact
|
||||
import time
|
||||
import uuid
|
||||
from rp.memory import KnowledgeEntry
|
||||
|
||||
categories = assistant.fact_extractor.categorize_content(message)
|
||||
entry_id = str(uuid.uuid4())[:16]
|
||||
entry = KnowledgeEntry(
|
||||
entry_id=entry_id,
|
||||
category=categories[0] if categories else "user_message",
|
||||
content=message,
|
||||
metadata={
|
||||
"type": "user_message",
|
||||
"confidence": 1.0,
|
||||
"source": "user_input",
|
||||
},
|
||||
created_at=time.time(),
|
||||
updated_at=time.time(),
|
||||
)
|
||||
assistant.knowledge_store.add_entry(entry)
|
||||
assistant.messages.append({"role": "user", "content": message})
|
||||
logger.debug(f"Processing user message: {message[:100]}...")
|
||||
logger.debug(f"Current message count: {len(assistant.messages)}")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import json
|
||||
import logging
|
||||
import time
|
||||
import uuid
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
@@ -17,7 +18,7 @@ from rp.config import (
|
||||
)
|
||||
from rp.core.advanced_context import AdvancedContextManager
|
||||
from rp.core.api import call_api
|
||||
from rp.memory import ConversationMemory, FactExtractor, KnowledgeStore
|
||||
from rp.memory import ConversationMemory, FactExtractor, KnowledgeStore, KnowledgeEntry
|
||||
from rp.tools.base import get_tools_definition
|
||||
from rp.workflows import WorkflowEngine, WorkflowStorage
|
||||
|
||||
@@ -132,10 +133,6 @@ class EnhancedAssistant:
|
||||
facts = self.fact_extractor.extract_facts(user_message)
|
||||
for fact in facts[:5]:
|
||||
entry_id = str(uuid.uuid4())[:16]
|
||||
import time
|
||||
|
||||
from rp.memory import KnowledgeEntry
|
||||
|
||||
categories = self.fact_extractor.categorize_content(fact["text"])
|
||||
entry = KnowledgeEntry(
|
||||
entry_id=entry_id,
|
||||
@@ -150,6 +147,23 @@ class EnhancedAssistant:
|
||||
updated_at=time.time(),
|
||||
)
|
||||
self.knowledge_store.add_entry(entry)
|
||||
|
||||
# Save the entire user message as a fact
|
||||
entry_id = str(uuid.uuid4())[:16]
|
||||
categories = self.fact_extractor.categorize_content(user_message)
|
||||
entry = KnowledgeEntry(
|
||||
entry_id=entry_id,
|
||||
category=categories[0] if categories else "user_message",
|
||||
content=user_message,
|
||||
metadata={
|
||||
"type": "user_message",
|
||||
"confidence": 1.0,
|
||||
"source": "user_input",
|
||||
},
|
||||
created_at=time.time(),
|
||||
updated_at=time.time(),
|
||||
)
|
||||
self.knowledge_store.add_entry(entry)
|
||||
if self.context_manager and ADVANCED_CONTEXT_ENABLED:
|
||||
enhanced_messages, context_info = self.context_manager.create_enhanced_context(
|
||||
self.base.messages, user_message, include_knowledge=True
|
||||
|
||||
Reference in New Issue
Block a user