# main.py import streamlit as st from typing import Optional, Dict, List from config import Config from chat_service import ChatService from chat_manager import ChatManager from chat_state import ChatState from ui_components import UIComponents def main(): config = Config() chat_service = ChatService(config.GROQ_API_KEY) chat_manager = ChatManager(config.SYSTEM_PROMPT) # Initialize session state if "chat_state" not in st.session_state: st.session_state.chat_state = ChatState.initialize() chat_state = st.session_state.chat_state ui = UIComponents() # Setup UI ui.setup_page(config) ui.render_header() ui.render_sidebar(chat_state, chat_manager, chat_service) # Main chat area current_chat = chat_state.temp_chat or ( chat_state.chat_history[chat_state.current_chat_id] if chat_state.current_chat_id else None ) if current_chat: for message in current_chat[1:]: with st.chat_message( message["role"], avatar="🧑🎓" if message["role"] == "user" else "🤖" ): st.write(message["content"]) else: st.markdown( "