Spaces:
Running
Running
# src/models/rag.py | |
from dataclasses import dataclass | |
from typing import List, Optional, Dict | |
from datetime import datetime | |
class Message: | |
"""Single message in a conversation""" | |
role: str # 'user' or 'assistant' | |
content: str | |
timestamp: datetime | |
class ConversationContext: | |
"""Conversation context with history""" | |
messages: List[Message] | |
max_messages: int = 10 | |
def add_message(self, role: str, content: str): | |
"""Add a message while maintaining max size""" | |
self.messages.append(Message( | |
role=role, | |
content=content, | |
timestamp=datetime.now() | |
)) | |
# Keep only the most recent messages | |
if len(self.messages) > self.max_messages: | |
self.messages = self.messages[-self.max_messages:] | |
class RAGResponse: | |
"""Enhanced RAG response with conversation context""" | |
response: str | |
context_docs: Optional[List[str]] = None | |
sources: Optional[List[Dict]] = None | |
scores: Optional[List[float]] = None | |
conversation_context: Optional[ConversationContext] = None |