Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import os | |
| from application.schemas.response_schema import ( | |
| GEMINI_GHG_PARAMETERS, GEMINI_ENVIRONMENTAL_PARAMETERS_CSRD, | |
| GEMINI_ENVIRONMENT_PARAMETERS, GEMINI_SOCIAL_PARAMETERS, | |
| GEMINI_GOVERNANCE_PARAMETERS, GEMINI_MATERIALITY_PARAMETERS, | |
| GEMINI_NET_ZERO_INTERVENTION_PARAMETERS | |
| ) | |
| from application.services import gemini_api_service, streamlit_function | |
| from application.utils import logger | |
| logger = logger.get_logger() | |
| streamlit_function.config_homepage() | |
| st.title("Sustainability Report Analyzer") | |
| st.write("Upload your sustainability report PDF and generate insights using Gemini models.") | |
| AVAILABLE_MODELS = [ | |
| "gemini-1.5-pro-latest", | |
| "gemini-2.0-flash", | |
| "gemini-1.5-flash", | |
| "gemini-2.5-pro-exp-03-25" | |
| ] | |
| RESPONSE_SCHEMAS = { | |
| "Greenhouse Gas (GHG) Protocol Parameters": GEMINI_GHG_PARAMETERS, | |
| # "Environmental Parameters (CSRD)": GEMINI_ENVIRONMENTAL_PARAMETERS_CSRD, | |
| # "Environmental Parameters": GEMINI_ENVIRONMENT_PARAMETERS, | |
| # "Social Parameters": GEMINI_SOCIAL_PARAMETERS, | |
| # "Governance Parameters": GEMINI_GOVERNANCE_PARAMETERS, | |
| # "Materiality Parameters": GEMINI_MATERIALITY_PARAMETERS, | |
| # "Net Zero Intervention Parameters": GEMINI_NET_ZERO_INTERVENTION_PARAMETERS, | |
| } | |
| selected_model = st.selectbox("Select Gemini Model", options=AVAILABLE_MODELS) | |
| uploaded_files = streamlit_function.upload_file("pdf", label="๐ค Upload Sustainability Report PDF") | |
| if uploaded_files: | |
| st.session_state.uploaded_files = uploaded_files | |
| if "uploaded_files" not in st.session_state: | |
| st.session_state.uploaded_files = [] | |
| if st.session_state.uploaded_files: | |
| columns = st.columns(3) | |
| for i, pdf_file in enumerate(st.session_state.uploaded_files): | |
| with columns[i % 3]: | |
| file_name = pdf_file.name.removesuffix(".pdf") | |
| st.write(f"๐ **File {i+1}:** `{pdf_file.name}`") | |
| extract_btn = st.button(f"Extract Data from File {i+1}", key=f"extract_{i}") | |
| result_key = f"{selected_model}_result_file_{i+1}" | |
| if extract_btn: | |
| with st.spinner(f"Extracting data from `{pdf_file.name}` using `{selected_model}`..."): | |
| try: | |
| all_results = {} | |
| for label, schema in RESPONSE_SCHEMAS.items(): | |
| result = gemini_api_service.extract_emissions_data_as_json("gemini", selected_model, pdf_file, schema) | |
| streamlit_function.export_results_to_excel(result, sheet_name=selected_model, filename=file_name, column=label) | |
| all_results[label] = result | |
| st.session_state[result_key] = all_results | |
| st.success("Data extraction complete.") | |
| except Exception as e: | |
| logger.error(f"Extraction failed: {e}") | |
| st.error("Failed to extract data.") | |
| if st.session_state.get(result_key): | |
| st.write(f"๐งพ **Extracted Metrics for File {i+1}:**") | |
| st.json(st.session_state[result_key]) | |
| file_path = f"data/{file_name}.xlsx" | |
| if os.path.exists(file_path): | |
| with open(file_path, "rb") as file: | |
| st.download_button( | |
| label="Download Excel File", | |
| data=file, | |
| file_name=f"{file_name}.xlsx", | |
| mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | |
| ) | |
| # import streamlit as st | |
| # from application.schemas.response_schema import GEMINI_GHG_PARAMETERS, GEMINI_ENVIRONMENTAL_PARAMETERS_CSRD,GEMINI_ENVIRONMENT_PARAMETERS,GEMINI_SOCIAL_PARAMETERS, GEMINI_GOVERNANCE_PARAMETERS, GEMINI_MATERIALITY_PARAMETERS, GEMINI_NET_ZERO_INTERVENTION_PARAMETERS | |
| # from application.services import streamlit_function, gemini_model | |
| # from application.utils import logger | |
| # import test | |
| # logger = logger.get_logger() | |
| # streamlit_function.config_homepage() | |
| # st.title("Sustainability Report Analyzer") | |
| # st.write("Upload your sustainability report PDF and generate insights using different models.") | |
| # MODEL = ["gemini-1.5-pro-latest", "gemini-2.0-flash", "gemini-1.5-flash", "gemini-2.5-pro-exp-03-25"] | |
| # MODEL_1 = "gemini-1.5-pro-latest" | |
| # MODEL_2 = "gemini-2.0-flash" | |
| # MODEL_3 = "gemini-1.5-flash" | |
| # API_1 = "gemini" | |
| # API_2 = "gemini" | |
| # API_3 = "gemini" | |
| # response_schema = [ GEMINI_GHG_PARAMETERS, GEMINI_ENVIRONMENTAL_PARAMETERS_CSRD, | |
| # GEMINI_ENVIRONMENT_PARAMETERS,GEMINI_SOCIAL_PARAMETERS, | |
| # GEMINI_GOVERNANCE_PARAMETERS, GEMINI_MATERIALITY_PARAMETERS, | |
| # GEMINI_NET_ZERO_INTERVENTION_PARAMETERS] | |
| # if "uploaded_files" not in st.session_state: | |
| # st.session_state.uploaded_files = [] | |
| # MODEL = st.selectbox( | |
| # "Select Model", | |
| # options=MODEL, | |
| # index=0, | |
| # ) | |
| # uploaded_files = streamlit_function.upload_file("pdf", label="Upload Sustainability Report PDF") | |
| # if uploaded_files: | |
| # st.session_state.uploaded_files = uploaded_files | |
| # if st.session_state.uploaded_files: | |
| # columns = st.columns([5, 5, 5], gap="small") | |
| # for i, col in enumerate(columns): | |
| # if i < len(st.session_state.uploaded_files): | |
| # pdf_file = st.session_state.uploaded_files[i] | |
| # file_name = pdf_file.name.removesuffix(".pdf") | |
| # result_key = f"{MODEL}_result_file_{i+1}" | |
| # with col: | |
| # st.write(f"**File {i+1}:** `{pdf_file.name}`") | |
| # if st.button(f"Extract Data from File {i+1}", key=f"extract_btn_{i}"): | |
| # with st.spinner(f"Extracting data from File {i+1} using {MODEL}..."): | |
| # for schema in response_schema: | |
| # result = gemini_model.extract_emissions_data_as_json(API_1, MODEL, pdf_file, schema) | |
| # if schema == GEMINI_GHG_PARAMETERS: | |
| # column = "Greenhouse Gas (GHG) Protocol Parameters" | |
| # elif schema == GEMINI_ENVIRONMENTAL_PARAMETERS_CSRD: | |
| # column = "Environmental Parameters (CSRD)" | |
| # elif schema == GEMINI_ENVIRONMENT_PARAMETERS: | |
| # column = "Environmental Parameters" | |
| # elif schema == GEMINI_SOCIAL_PARAMETERS: | |
| # column = "Social Parameters" | |
| # elif schema == GEMINI_GOVERNANCE_PARAMETERS: | |
| # column = "Governance Parameters" | |
| # elif schema == GEMINI_MATERIALITY_PARAMETERS: | |
| # column = "Materiality Parameters" | |
| # elif schema == GEMINI_NET_ZERO_INTERVENTION_PARAMETERS: | |
| # column = "Net Zero Intervention Parameters" | |
| # else: | |
| # column = None | |
| # test.export_results_to_excel(result, sheet_name=MODEL, filename=file_name, column=column ) | |
| # st.session_state[result_key] = result | |
| # if st.session_state.get(result_key): | |
| # st.write(f"**Extracted Metrics for File {i+1}:**") | |
| # st.json(st.session_state[result_key]) |