|
from dotenv import load_dotenv |
|
import os |
|
import streamlit as st |
|
from streamlit_option_menu import option_menu |
|
from Functions import RFPProcessor |
|
|
|
from utills import ( on_click_toggle) |
|
|
|
|
|
|
|
if "vectorstore" not in st.session_state: |
|
st.session_state["vectorstore"] = None |
|
if "pdf_details" not in st.session_state: |
|
st.session_state["pdf_details"] = "" |
|
if "is_data_processed" not in st.session_state: |
|
st.session_state["is_data_processed"] = False |
|
|
|
|
|
|
|
if "generated_bot_results" not in st.session_state: |
|
st.session_state["generated_bot_results"] = [] |
|
if "past_bot_results" not in st.session_state: |
|
st.session_state["past_bot_results"] = [] |
|
if "bot_input" not in st.session_state: |
|
st.session_state["bot_input"] = "" |
|
|
|
|
|
|
|
if "case_summary" not in st.session_state: |
|
st.session_state["case_summary"] = "" |
|
|
|
if "selected_model" not in st.session_state: |
|
st.session_state["selected_model"] = "gpt-3.5-turbo-16k" |
|
|
|
|
|
def main(): |
|
st.set_page_config(page_title="Justice League", |
|
page_icon="⚖️", layout="wide") |
|
top_left_container = st.sidebar.container() |
|
model_name = "GPT-4o" if st.session_state["selected_model"] == "gpt-4o" else "GPT-3.5-turbo" |
|
st.markdown( |
|
""" |
|
<style> |
|
.st-ae.st-af.st-ag.st-ah.st-ai.st-aj.st-ak.st-al.st-am { |
|
position: absolute !important; |
|
top: -80px !important; |
|
z-index: 9999; |
|
} |
|
</style> |
|
""", |
|
unsafe_allow_html=True |
|
) |
|
with top_left_container: |
|
st.markdown("<div style='margin-bottom: -10px; font-size: 15px; position: absolute; z-index: 1; top: -91px; left: 3px'>Toggle for Model Selection</div>", unsafe_allow_html=True) |
|
st.markdown("<div style='margin-bottom: -10px; font-size: 15px; position: absolute; z-index: 1; top: -87px; left: 3px'>(Default : GPT-3.5)</div>", unsafe_allow_html=True) |
|
st.toggle(model_name, value=st.session_state["selected_model"] == "gpt-4o", key="model_toggle", on_change=on_click_toggle, args=None, disabled=False, label_visibility="visible") |
|
|
|
function = RFPProcessor() |
|
|
|
with st.sidebar: |
|
menu_choice = option_menu( |
|
menu_title="Legal Assistant", |
|
options=[ |
|
"Home", |
|
"Legal Bot", |
|
], |
|
icons=["house", "list-task"], |
|
) |
|
|
|
|
|
if menu_choice == "Home": |
|
with st.form("my_form"): |
|
case_name = st.text_input( |
|
"Case Name", |
|
key="Case Name", |
|
type="default", |
|
placeholder="Case Name", |
|
) |
|
files = st.file_uploader( |
|
"Document", type=["pdf", "txt", "docx"], accept_multiple_files=True |
|
) |
|
|
|
submitted = st.form_submit_button("Process Data") |
|
|
|
if submitted: |
|
if case_name and files: |
|
function.process_case_data(case_name, files) |
|
else: |
|
st.warning( |
|
"project_name and file are required to create create stories", |
|
icon="⚠️", |
|
) |
|
if st.session_state["is_data_processed"] == True: |
|
st.title("Summary") |
|
with st.container(): |
|
st.markdown(st.session_state["case_summary"]) |
|
|
|
if menu_choice == "Legal Bot": |
|
if st.session_state["is_data_processed"] == True: |
|
st.title(" Legal Bot ") |
|
st.subheader(" Powered by Coffeebeans") |
|
st.text_input( |
|
"You: ", |
|
st.session_state["bot_input"], |
|
key="bot_input", |
|
placeholder="Your AI Case assistant here! Ask me Queries related to Case", |
|
on_change=function.genrate_legal_bot_result(), |
|
label_visibility="hidden", |
|
) |
|
with st.container(): |
|
for i in range(len(st.session_state["generated_bot_results"]) - 1, -1, -1): |
|
st.success(st.session_state["generated_bot_results"][i], icon="🤖") |
|
st.info(st.session_state["past_bot_results"][i], icon="🧐") |
|
else: |
|
st.warning("Plesase Process Case Details to access this logal case bot", icon="⚠️") |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
main() |
|
|
|
|
|
|