Spaces:
Sleeping
Sleeping
Auto commit at 25-2025-08 23:59:36
Browse files
lily_llm_api/api/routers/document_router.py
CHANGED
|
@@ -12,7 +12,7 @@ from ...models.schemas import (
|
|
| 12 |
DocumentUploadResponse, RAGQueryRequest, RAGQueryResponse,
|
| 13 |
DocumentProcessResponse, MultimodalRAGResponse
|
| 14 |
)
|
| 15 |
-
from ...services.session_registry import set_user_for_room, set_flag_for_room
|
| 16 |
|
| 17 |
logger = logging.getLogger(__name__)
|
| 18 |
router = APIRouter()
|
|
@@ -59,6 +59,11 @@ async def upload_document(
|
|
| 59 |
set_flag_for_room(room_id, "use_rag_images_once", True)
|
| 60 |
except Exception:
|
| 61 |
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
return DocumentUploadResponse(
|
| 63 |
success=True,
|
| 64 |
document_id=result.get("document_id", document_id),
|
|
|
|
| 12 |
DocumentUploadResponse, RAGQueryRequest, RAGQueryResponse,
|
| 13 |
DocumentProcessResponse, MultimodalRAGResponse
|
| 14 |
)
|
| 15 |
+
from ...services.session_registry import set_user_for_room, set_flag_for_room, set_last_document_for_room
|
| 16 |
|
| 17 |
logger = logging.getLogger(__name__)
|
| 18 |
router = APIRouter()
|
|
|
|
| 59 |
set_flag_for_room(room_id, "use_rag_images_once", True)
|
| 60 |
except Exception:
|
| 61 |
pass
|
| 62 |
+
# ๋ฐฉ๋ณ ๋ง์ง๋ง ๋ฌธ์ID ๊ธฐ๋ก (ํ์ ์์ฒญ์์ ๊ธฐ๋ณธ ๋ฌธ์ ์ ํ)
|
| 63 |
+
try:
|
| 64 |
+
set_last_document_for_room(room_id, result.get("document_id", document_id))
|
| 65 |
+
except Exception:
|
| 66 |
+
pass
|
| 67 |
return DocumentUploadResponse(
|
| 68 |
success=True,
|
| 69 |
document_id=result.get("document_id", document_id),
|
lily_llm_api/api/routers/generation_router.py
CHANGED
|
@@ -161,10 +161,24 @@ async def generate(request: Request,
|
|
| 161 |
from lily_llm_core.memory_store import memory_store
|
| 162 |
# ๊ฐ๋จํ ์ต๊ทผ ์์ฝ ์ปจํ
์คํธ๋ฅผ ์ ์ฅํ๊ณ ํคํ ํฝ์ ๋น์(ํ์ ํ์ฅ ์ง์ )
|
| 163 |
summary_text = ""
|
|
|
|
| 164 |
if hasattr(context_manager, 'get_summary_context'):
|
| 165 |
summary_text = context_manager.get_summary_context(session_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
last_ts = time.time()
|
| 167 |
-
memory_store.upsert_room_memory(room_id, summary_text,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 168 |
except Exception as _ms:
|
| 169 |
print(f"โ ๏ธ [DEBUG] ๋ฃธ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ์คํจ: {_ms}")
|
| 170 |
except Exception as _e:
|
|
|
|
| 161 |
from lily_llm_core.memory_store import memory_store
|
| 162 |
# ๊ฐ๋จํ ์ต๊ทผ ์์ฝ ์ปจํ
์คํธ๋ฅผ ์ ์ฅํ๊ณ ํคํ ํฝ์ ๋น์(ํ์ ํ์ฅ ์ง์ )
|
| 163 |
summary_text = ""
|
| 164 |
+
key_topics_csv = ""
|
| 165 |
if hasattr(context_manager, 'get_summary_context'):
|
| 166 |
summary_text = context_manager.get_summary_context(session_id)
|
| 167 |
+
# ํคํ ํฝ ์ถ์ถ์ด ๊ฐ๋ฅํ๋ฉด ํจ๊ป ์ ์ฅ
|
| 168 |
+
try:
|
| 169 |
+
if hasattr(context_manager, 'get_key_topics'):
|
| 170 |
+
topics = context_manager.get_key_topics(session_id)
|
| 171 |
+
if topics:
|
| 172 |
+
key_topics_csv = ",".join(topics)
|
| 173 |
+
except Exception:
|
| 174 |
+
key_topics_csv = ""
|
| 175 |
last_ts = time.time()
|
| 176 |
+
memory_store.upsert_room_memory(room_id, summary_text, key_topics_csv, last_ts)
|
| 177 |
+
# ์ฌ์ฉ์ ์ฅ๊ธฐ ๋ฉ๋ชจ ํ์ด ์์ผ๋ฉด ์์ฑ (๋น ๋
ธํธ)
|
| 178 |
+
try:
|
| 179 |
+
memory_store.upsert_user_memory(user_id, notes="")
|
| 180 |
+
except Exception:
|
| 181 |
+
pass
|
| 182 |
except Exception as _ms:
|
| 183 |
print(f"โ ๏ธ [DEBUG] ๋ฃธ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ์คํจ: {_ms}")
|
| 184 |
except Exception as _e:
|
lily_llm_api/api/routers/user_memory_router.py
CHANGED
|
@@ -49,15 +49,22 @@ async def upsert_room_summary(
|
|
| 49 |
try:
|
| 50 |
from lily_llm_core.memory_store import memory_store
|
| 51 |
import time
|
| 52 |
-
# summary๊ฐ ๋น์ด์์ผ๋ฉด
|
| 53 |
if not summary:
|
| 54 |
try:
|
| 55 |
from lily_llm_core.context_manager import context_manager
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
if
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
except Exception:
|
| 62 |
pass
|
| 63 |
memory_store.upsert_room_memory(room_id, summary, key_topics, time.time())
|
|
|
|
| 49 |
try:
|
| 50 |
from lily_llm_core.memory_store import memory_store
|
| 51 |
import time
|
| 52 |
+
# summary๊ฐ ๋น์ด์์ผ๋ฉด ํด๋น ๋ฃธ์ ์ธ์
๋ค ์ค ์ต๊ทผ ์ธ์
์ ์ฐพ์ ์์ฝ/ํคํ ํฝ์ ์ถ์ถ
|
| 53 |
if not summary:
|
| 54 |
try:
|
| 55 |
from lily_llm_core.context_manager import context_manager
|
| 56 |
+
# room_{room_id}_* ํจํด ๊ฒ์
|
| 57 |
+
candidate_sessions = [sid for sid in getattr(context_manager, 'session_conversations', {}).keys() if str(sid).startswith(f"room_{room_id}_")]
|
| 58 |
+
# ๊ฐ์ฅ ์ต๊ทผ ํด์ด ๋ง์ ์ธ์
์ ์ฐ์ ์ฌ์ฉ
|
| 59 |
+
if candidate_sessions:
|
| 60 |
+
best_sid = max(candidate_sessions, key=lambda sid: len(context_manager.session_conversations.get(sid, [])))
|
| 61 |
+
summary = context_manager.get_summary_context(best_sid)
|
| 62 |
+
try:
|
| 63 |
+
topics = context_manager.get_key_topics(best_sid)
|
| 64 |
+
if topics and not key_topics:
|
| 65 |
+
key_topics = ",".join(topics)
|
| 66 |
+
except Exception:
|
| 67 |
+
pass
|
| 68 |
except Exception:
|
| 69 |
pass
|
| 70 |
memory_store.upsert_room_memory(room_id, summary, key_topics, time.time())
|
lily_llm_api/services/session_registry.py
CHANGED
|
@@ -12,6 +12,7 @@ _session_to_user: Dict[str, str] = {}
|
|
| 12 |
_last_user: Optional[str] = None
|
| 13 |
_last_updated_at: float = 0.0
|
| 14 |
_room_flags: Dict[str, Dict[str, Dict[str, Any]]] = {}
|
|
|
|
| 15 |
|
| 16 |
def set_user_for_room(room_id: Optional[str], user_id: Optional[str]) -> None:
|
| 17 |
if not room_id or not user_id:
|
|
@@ -51,6 +52,8 @@ def clear() -> None:
|
|
| 51 |
global _last_user, _last_updated_at
|
| 52 |
_last_user = None
|
| 53 |
_last_updated_at = 0.0
|
|
|
|
|
|
|
| 54 |
|
| 55 |
# ---- room-scoped one-shot flags ----
|
| 56 |
def set_flag_for_room(room_id: Optional[str], key: str, value: bool = True, ttl_seconds: Optional[float] = None) -> None:
|
|
@@ -115,4 +118,15 @@ def pop_flag_for_room(room_id: Optional[str], key: str) -> Optional[bool]:
|
|
| 115 |
return None
|
| 116 |
return bool(removed.get("value"))
|
| 117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
|
|
|
|
| 12 |
_last_user: Optional[str] = None
|
| 13 |
_last_updated_at: float = 0.0
|
| 14 |
_room_flags: Dict[str, Dict[str, Dict[str, Any]]] = {}
|
| 15 |
+
_room_last_document: Dict[str, str] = {}
|
| 16 |
|
| 17 |
def set_user_for_room(room_id: Optional[str], user_id: Optional[str]) -> None:
|
| 18 |
if not room_id or not user_id:
|
|
|
|
| 52 |
global _last_user, _last_updated_at
|
| 53 |
_last_user = None
|
| 54 |
_last_updated_at = 0.0
|
| 55 |
+
_room_flags.clear()
|
| 56 |
+
_room_last_document.clear()
|
| 57 |
|
| 58 |
# ---- room-scoped one-shot flags ----
|
| 59 |
def set_flag_for_room(room_id: Optional[str], key: str, value: bool = True, ttl_seconds: Optional[float] = None) -> None:
|
|
|
|
| 118 |
return None
|
| 119 |
return bool(removed.get("value"))
|
| 120 |
|
| 121 |
+
# ---- room-scoped last document id ----
|
| 122 |
+
def set_last_document_for_room(room_id: Optional[str], document_id: Optional[str]) -> None:
|
| 123 |
+
if not room_id or not document_id:
|
| 124 |
+
return
|
| 125 |
+
_room_last_document[str(room_id)] = str(document_id)
|
| 126 |
+
|
| 127 |
+
def get_last_document_for_room(room_id: Optional[str]) -> Optional[str]:
|
| 128 |
+
if not room_id:
|
| 129 |
+
return None
|
| 130 |
+
return _room_last_document.get(str(room_id))
|
| 131 |
+
|
| 132 |
|