PDFExtractor / app.py
Vela
Created a PdfExtraction application with basic functionality
f7d4608
raw
history blame
2.78 kB
from application.services import streamlit_function, llm_service
from application.services import gemini_model, openai_model
import streamlit as st
from google.genai.errors import ClientError
from application.utils import logger
import test
logger = logger.get_logger()
streamlit_function.config_homepage()
pdf_file = streamlit_function.upload_file("pdf", label="Upload Sustainability Report PDF")
available_files = ["Select a pdf file"]
for file in llm_service.get_files():
available_files.append(file.filename)
selected_file = st.selectbox("Select a existing file", available_files)
for key in ["gpt4o_mini_result", "gpt4o_result", "gemini_result", "pdf_file"]:
if key not in st.session_state:
st.session_state[key] = None
if st.session_state.pdf_file:
with st.container():
col1, col2, col3 = st.columns([5, 5, 5], gap="small")
with col1:
if st.button("Generate GPT-4o-min Response"):
with st.spinner("Calling GPT-4o-mini..."):
result = llm_service.extract_emissions_data_as_json("openai","gpt-4o-mini",pdf_file)
# result= openai_model.extract_emissions_data_as_json("openai","gpt-4o-mini",pdf_file)
st.session_state.gpt4o_mini_result = result
if st.session_state.gpt4o_mini_result:
st.write("Extracted Metrics by gpt-4o-mini")
st.json(st.session_state.gpt4o_mini_result)
with col2:
if st.button("Generate GPT-4o Response"):
with st.spinner("Calling gpt-4o..."):
result= llm_service.extract_emissions_data_as_json("openai","gpt-4o",pdf_file)
st.session_state.gpt4o_result = result
if st.session_state.gpt4o_result:
st.write("Extracted Metrics by gpt-4o")
st.json(st.session_state.gpt4o_result)
with col3:
try:
if st.button("Generate Gemini Response"):
with st.spinner("Calling gemini-1.5-pro-latest..."):
result = llm_service.extract_emissions_data_as_json("gemini","gemini-2.0-flash", st.session_state.pdf_file)
# result = gemini_model.extract_emissions_data_as_json("gemini","gemini-2.0-flash", pdf_file)
st.session_state.gemini_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.gemini_result:
st.write("Extracted Metrics by gemini-1.5-pro-latest")
st.json(st.session_state.gemini_result)