File size: 2,784 Bytes
f7d4608
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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)