Spaces:
Sleeping
Sleeping
File size: 4,078 Bytes
f7d4608 d1ca23a 75115cd f7d4608 22481bd f7d4608 22481bd f7d4608 d1ca23a f7d4608 d1ca23a f7d4608 d1ca23a f7d4608 d1ca23a f7d4608 22481bd d1ca23a f7d4608 d1ca23a 75115cd d1ca23a f7d4608 d1ca23a 75115cd d1ca23a f7d4608 d1ca23a 75115cd d1ca23a f7d4608 d1ca23a f7d4608 d1ca23a 22481bd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import streamlit as st
import os
from application.services import gemini_api_service, streamlit_function
from google.genai.errors import ClientError
from application.utils import logger
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, FULL_RESPONSE_SCHEMA
)
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-exp"]
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"
pdf_file = streamlit_function.upload_file("pdf", label="Upload Sustainability Report PDF")
for key in [f"{MODEL_1}_result", f"{MODEL_2}_result", f"{MODEL_3}_result", "pdf_file"]:
if key not in st.session_state:
st.session_state[key] = None
if "excel_file" not in st.session_state:
st.session_state["excel_file"] = None
if st.session_state.pdf_file:
with st.container():
col1, col2, col3 = st.columns([5, 5, 5], gap="small")
file_name = st.session_state.pdf_file[0].name.removesuffix(".pdf")
excel_file=None
with col1:
if st.button(f"Generate {MODEL_1} Response"):
with st.spinner(f"Calling {MODEL_1}..."):
result = gemini_api_service.extract_emissions_data_as_json(API_1 , MODEL_1, st.session_state.pdf_file[0],FULL_RESPONSE_SCHEMA)
excel_file = streamlit_function.export_results_to_excel(result, MODEL_1, file_name)
st.session_state[f"{MODEL_1}_result"] = result
if st.session_state[f"{MODEL_1}_result"]:
st.write(f"Extracted Metrics by {MODEL_1}_result")
st.json(st.session_state[f"{MODEL_1}_result"])
with col2:
if st.button(f"Generate {MODEL_2} Response"):
with st.spinner(f"Calling {MODEL_2}..."):
result = gemini_api_service.extract_emissions_data_as_json(API_2, MODEL_2, st.session_state.pdf_file[0],FULL_RESPONSE_SCHEMA)
excel_file = streamlit_function.export_results_to_excel(result, MODEL_2, file_name)
st.session_state[f"{MODEL_2}_result"] = result
if st.session_state[f"{MODEL_2}_result"]:
st.write(f"Extracted Metrics by {MODEL_2}_result")
st.json(st.session_state[f"{MODEL_2}_result"])
with col3:
try:
if st.button(f"Generate {MODEL_3} Response"):
with st.spinner(f"Calling {MODEL_3}..."):
result = gemini_api_service.extract_emissions_data_as_json(API_3, MODEL_3, st.session_state.pdf_file[0], FULL_RESPONSE_SCHEMA)
excel_file = streamlit_function.export_results_to_excel(result, MODEL_3, file_name)
st.session_state[f"{MODEL_3}_result"] = result
except ClientError as e:
st.error(f"Gemini API Error: {e}")
logger.error("Error Details:", e.message, e.response)
if st.session_state[f"{MODEL_3}_result"]:
st.write(f"Extracted Metrics by {MODEL_3}_result")
st.json(st.session_state[f"{MODEL_3}_result"])
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"
) |