|
|
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 |
|
|
|
|
|
|
|
|
|