Quick-Understand / api /utils /session.py
mafzaal's picture
Refactor user session management and prompt handling in FastAPI and frontend
73641c0
Raw History Blame Contribute Delete
2.4 kB
import logging
from typing import Dict, Any, Optional
from langchain.chains import ConversationChain
logger = logging.getLogger(__name__)
# In-memory storage for user sessions
user_sessions: Dict[str, Dict[str, Any]] = {}
def initialize_session(
session_id: str,
user_id: str,
collection_name: Optional[str] = None
) -> None:
"""
Initialize a new chat session
Args:
session_id: Session ID
user_id: User ID
collection_name: Vector store collection name (optional)
"""
logger.info(f"Initializing session {session_id} for user {user_id}")
user_sessions[session_id] = {
"user_id": user_id,
"collection_name": collection_name or "default",
"chat_history": [],
"rag_chain": None
}
def get_session(session_id: str) -> Dict[str, Any]:
"""
Get a session by ID
Args:
session_id: Session ID
Returns:
Dict: Session data
"""
return user_sessions.get(session_id)
def create_rag_chain(session_id: str) -> ConversationChain:
"""
Create a RAG chain for a session
Args:
session_id: Session ID
Returns:
ConversationChain: The created RAG chain
"""
# Implementation for creating RAG chain
# This would be replaced with actual implementation
logger.info(f"Creating RAG chain for session {session_id}")
# Placeholder for RAG chain creation
rag_chain = ConversationChain()
# Store the chain in the session
if session_id in user_sessions:
user_sessions[session_id]["rag_chain"] = rag_chain
return rag_chain
def clear_chat_history(session_id: str) -> None:
"""
Clear chat history for a session
Args:
session_id: Session ID
"""
logger.info(f"Clearing chat history for session {session_id}")
if session_id in user_sessions:
user_sessions[session_id]["chat_history"] = []
def update_chat_history(session_id: str, user_message: str, ai_message: str) -> None:
"""
Update chat history for a session
Args:
session_id: Session ID
user_message: User message
ai_message: AI response message
"""
if session_id in user_sessions:
user_sessions[session_id]["chat_history"].append({
"user": user_message,
"ai": ai_message
})