Spaces:
Runtime error
Runtime error
| import chainlit as cl | |
| from rag_pipeline import get_rag_chain, get_semantic_answer | |
| from langchain_core.messages import HumanMessage, AIMessage | |
| # Constant: Kitni history yaad rakhni hai? (10 means last 5 questions and 5 answers) | |
| MAX_HISTORY_LENGTH = 10 | |
| async def start_chat(): | |
| # Chat History Array initialize karein | |
| cl.user_session.set("chat_history", []) | |
| # Chain setup aur session me save | |
| rag_chain = get_rag_chain() | |
| cl.user_session.set("rag_chain", rag_chain) | |
| await cl.Message(content="π Welcome! I am Hammas Shahzad Shani's Official AI Assistant. How can I help you today?").send() | |
| async def main(message: cl.Message): | |
| user_input = message.content | |
| # Session se chain nikalain, fallback logic ke sath | |
| chain = cl.user_session.get("rag_chain") | |
| if not chain: | |
| chain = get_rag_chain() | |
| cl.user_session.set("rag_chain", chain) | |
| chat_history = cl.user_session.get("chat_history", []) | |
| msg = cl.Message(content="Thinking... π") | |
| await msg.send() | |
| try: | |
| # History ke sath answer fetch karein | |
| # Note: Agar get_semantic_answer synchronous hai, toh run_in_executor use karna behtar hota hai for async speed | |
| answer = get_semantic_answer(chain, user_input, chat_history) | |
| msg.content = answer | |
| await msg.update() | |
| # Naya sawal aur jawab history mein save karein | |
| chat_history.extend([ | |
| HumanMessage(content=user_input), | |
| AIMessage(content=answer) | |
| ]) | |
| # --- NEW OPTIMIZATION: Keep only the most recent messages --- | |
| if len(chat_history) > MAX_HISTORY_LENGTH: | |
| chat_history = chat_history[-MAX_HISTORY_LENGTH:] | |
| cl.user_session.set("chat_history", chat_history) | |
| except Exception as e: | |
| msg.content = f"β οΈ Error: {str(e)}" | |
| await msg.update() |