mafzaal's picture
Refactor user session management and prompt handling in FastAPI and frontend
73641c0
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
})