| import os |
| import streamlit as st |
| from datetime import datetime |
|
|
| from langchain_core.messages import AIMessage, HumanMessage |
| from src.ui.config import LoadConfig |
|
|
| class LoadStreamlitUI: |
| def __init__(self): |
| self.config = LoadConfig() |
| self.user_controls = {} |
|
|
| def initialize_session(self): |
| return { |
| 'current_step': 'requirements', |
| 'requirements': "", |
| 'user_stories': "", |
| 'po_feedback': "", |
| 'generated_code': "", |
| 'review_feedback': "", |
| 'decision': None, |
| } |
| |
| |
| def load_ui(self): |
| st.set_page_config(page_title=" π€" + self.config.get_title(), page_icon=":robot_face:", layout="wide") |
| st.header(" π€" + self.config.get_title()) |
| st.session_state.timeframe = '' |
| st.session_state.IsFetchButtonClicked = False |
| st.session_state.IsSDLC = False |
|
|
| with st.sidebar: |
|
|
| llm_options = self.config.get_llm_options() |
|
|
| |
| self.user_controls['Selected LLM'] = st.selectbox('Select LLM', llm_options) |
|
|
| if self.user_controls['Selected LLM'] == 'Groq': |
| |
| groq_models = self.config.get_groq_models() |
| self.user_controls['Selected Model'] = st.selectbox('Select Groq Model', groq_models) |
|
|
| self.user_controls['API Key'] = st.text_input('Enter Groq API Key', type='password') |
|
|
| if not self.user_controls['API Key']: |
| st.warning('Please enter a valid Groq API key to proceed . If you don\'t have an API key, please visit https://console.groq.com to create one.') |
|
|
| |
| if self.user_controls['Selected LLM'] == 'OpenAI': |
| |
| openai_models = self.config.get_openai_models() |
| self.user_controls['Selected Model'] = st.selectbox('Select OpenAI Model', openai_models) |
|
|
| self.user_controls['API Key'] = st.text_input('Enter OpenAI API Key', type='password') |
|
|
| if not self.user_controls['API Key']: |
| st.warning('Please enter a valid OpenAI API key to proceed . If you don\'t have an API key, please visit https://platform.openai.com/account/api-keys to create one.') |
|
|
| use_case = self.config.get_use_case() |
|
|
| |
| self.user_controls['Selected Use Case'] = st.selectbox('Select Use Case', use_case) |
|
|
| |
| if self.user_controls['Selected Use Case'] == 'Chatbot with Web Search': |
| self.user_controls['Tavily API Key'] = st.text_input('Enter Tavily API Key for Web Search', type='password') |
| if not self.user_controls['Tavily API Key']: |
| st.warning('Tavily API key is required for web search functionality. Get one at https://tavily.com') |
|
|
| |
| st.divider() |
| st.subheader("π Memory Management") |
| |
| |
| if "session_id" in st.session_state: |
| st.text(f"Session: {st.session_state.session_id[-8:]}") |
| |
| |
| if st.button("ποΈ Clear Conversation", help="Clear chat history and start fresh"): |
| if "messages" in st.session_state: |
| st.session_state.messages = [] |
| if "memory_manager" in st.session_state and "session_id" in st.session_state: |
| |
| st.session_state.memory_manager.clear_session(st.session_state.session_id) |
| |
| st.session_state.session_id = f"user_{hash(str(st.session_state))}" |
| st.rerun() |
|
|
|
|
| if 'state' not in st.session_state: |
| st.session_state.state = self.initialize_session() |
|
|
| return self.user_controls |
| |
|
|
|
|