Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import os | |
| from datetime import date | |
| from PIL import Image | |
| from langchain_core.messages import AIMessage, HumanMessage | |
| from src.langgraphagenticai.ui.uiconfigfile import Config | |
| class LoadStreamlitUI: | |
| def __init__(self): | |
| self.config = Config() # config | |
| self.user_controls = {} | |
| def initialize_session(self): | |
| return { | |
| "current_step": "requirements", | |
| "requirements": "", | |
| "user_stories": "", | |
| "po_feedback": "", | |
| "generated_code": "", | |
| "review_feedback": "", | |
| "decision": None | |
| } | |
| def load_streamlit_ui(self): | |
| # ✅ Set page config FIRST before any other Streamlit commands | |
| st.set_page_config(page_title=self.config.get_page_title(), layout="wide") | |
| # Create a container with centered text for the header | |
| st.markdown("<h1 style='text-align: center;'>" + self.config.get_page_title() + "</h1>", unsafe_allow_html=True) | |
| # Load and display the logo below the header and center it | |
| logo_path = "src/langgraphagenticai/ui/assets/logo.png" | |
| if os.path.exists(logo_path): | |
| logo = Image.open(logo_path) | |
| col1, col2, col3 = st.columns([1, 2, 1]) | |
| with col2: | |
| st.image(logo, width=416) # 30% larger than 320px | |
| # Initialize session state variables | |
| st.session_state.timeframe = '' | |
| st.session_state.IsFetchButtonClicked = False | |
| st.session_state.IsSDLC = False | |
| with st.sidebar: | |
| # Get options from config | |
| llm_options = self.config.get_llm_options() | |
| usecase_options = self.config.get_usecase_options() | |
| # LLM selection | |
| self.user_controls["selected_llm"] = st.selectbox("Select LLM", llm_options) | |
| if self.user_controls["selected_llm"] == 'Groq': | |
| # Model selection | |
| model_options = self.config.get_groq_model_options() | |
| self.user_controls["selected_groq_model"] = st.selectbox("Select Model", model_options) | |
| # API key input | |
| self.user_controls["GROQ_API_KEY"] = st.session_state["GROQ_API_KEY"] = st.text_input("API Key", | |
| type="password") | |
| # Validate API key | |
| if not self.user_controls["GROQ_API_KEY"]: | |
| st.warning("⚠️ Please enter your GROQ API key to proceed. Don't have? refer : https://console.groq.com/keys ") | |
| # Use case selection | |
| self.user_controls["selected_usecase"] = st.selectbox("Select Usecases", usecase_options) | |
| if self.user_controls["selected_usecase"] =="Chatbot with Tool": | |
| # API key input | |
| os.environ["TAVILY_API_KEY"] = self.user_controls["TAVILY_API_KEY"] = st.session_state["TAVILY_API_KEY"] = st.text_input("TAVILY API KEY", | |
| type="password") | |
| # Validate API key | |
| if not self.user_controls["TAVILY_API_KEY"]: | |
| st.warning("⚠️ Please enter your TAVILY_API_KEY key to proceed. Don't have? refer : https://app.tavily.com/home") | |
| if "state" not in st.session_state: | |
| st.session_state.state = self.initialize_session() | |
| return self.user_controls | |