Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -6,7 +6,6 @@ import json
|
|
6 |
import requests
|
7 |
from PIL import Image
|
8 |
from openai import OpenAI
|
9 |
-
from io import BytesIO
|
10 |
|
11 |
# ------------------ App Configuration ------------------
|
12 |
st.set_page_config(page_title="Document AI Assistant", layout="wide")
|
@@ -55,8 +54,7 @@ show_image = st.sidebar.checkbox("π Show Document Image", value=True)
|
|
55 |
|
56 |
# ------------------ Assistant Query Function ------------------
|
57 |
def query_assistant(prompt):
|
58 |
-
st.session_state.messages.
|
59 |
-
st.chat_message("user").write(prompt)
|
60 |
|
61 |
try:
|
62 |
if st.session_state.thread_id is None:
|
@@ -90,8 +88,7 @@ def query_assistant(prompt):
|
|
90 |
for message in reversed(messages.data):
|
91 |
if message.role == "assistant":
|
92 |
assistant_message = message.content[0].text.value
|
93 |
-
st.
|
94 |
-
st.session_state.messages.append({"role": "assistant", "content": assistant_message})
|
95 |
|
96 |
# Extract GitHub image URL if available
|
97 |
image_match = re.search(
|
@@ -108,7 +105,24 @@ def query_assistant(prompt):
|
|
108 |
return None
|
109 |
|
110 |
# ------------------ Layout ------------------
|
111 |
-
left, center
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
|
113 |
# ------------------ Left Column: Document Image ------------------
|
114 |
with left:
|
@@ -120,30 +134,3 @@ with left:
|
|
120 |
st.session_state.image_updated = False
|
121 |
except Exception as e:
|
122 |
st.warning("β οΈ Could not load image.")
|
123 |
-
|
124 |
-
# ------------------ Center Column: Chat UI ------------------
|
125 |
-
with center:
|
126 |
-
st.subheader("π¬ Document AI Assistant")
|
127 |
-
for message in reversed(st.session_state.messages):
|
128 |
-
role, content = message["role"], message["content"]
|
129 |
-
st.chat_message(role).write(content)
|
130 |
-
|
131 |
-
if prompt := st.chat_input("Type your question about the document..."):
|
132 |
-
query_assistant(prompt)
|
133 |
-
|
134 |
-
# ------------------ Right Column: Structured Summary + FAQ (Trigger Assistant) ------------------
|
135 |
-
with right:
|
136 |
-
st.subheader("π Summary & FAQ (from Assistant)")
|
137 |
-
|
138 |
-
col1, col2 = st.columns(2)
|
139 |
-
show_summary = col1.button("π Load Summary")
|
140 |
-
show_faq = col2.button("β Load FAQ")
|
141 |
-
|
142 |
-
if st.session_state.image_url:
|
143 |
-
match = re.search(r'/(\d{3})\.png', st.session_state.image_url)
|
144 |
-
if match:
|
145 |
-
page_number = int(match.group(1))
|
146 |
-
if show_summary:
|
147 |
-
query_assistant(f"Summarize the section on page {page_number}.")
|
148 |
-
if show_faq:
|
149 |
-
query_assistant(f"Provide FAQs for the section on page {page_number}.")
|
|
|
6 |
import requests
|
7 |
from PIL import Image
|
8 |
from openai import OpenAI
|
|
|
9 |
|
10 |
# ------------------ App Configuration ------------------
|
11 |
st.set_page_config(page_title="Document AI Assistant", layout="wide")
|
|
|
54 |
|
55 |
# ------------------ Assistant Query Function ------------------
|
56 |
def query_assistant(prompt):
|
57 |
+
st.session_state.messages.insert(0, {"role": "user", "content": prompt}) # insert at top
|
|
|
58 |
|
59 |
try:
|
60 |
if st.session_state.thread_id is None:
|
|
|
88 |
for message in reversed(messages.data):
|
89 |
if message.role == "assistant":
|
90 |
assistant_message = message.content[0].text.value
|
91 |
+
st.session_state.messages.insert(0, {"role": "assistant", "content": assistant_message})
|
|
|
92 |
|
93 |
# Extract GitHub image URL if available
|
94 |
image_match = re.search(
|
|
|
105 |
return None
|
106 |
|
107 |
# ------------------ Layout ------------------
|
108 |
+
left, center = st.columns([1, 2])
|
109 |
+
|
110 |
+
# ------------------ Center Column: Chat UI with Static Input on Top ------------------
|
111 |
+
with center:
|
112 |
+
st.subheader("π¬ Document AI Assistant")
|
113 |
+
|
114 |
+
# Static Chat Input Bar
|
115 |
+
with st.container():
|
116 |
+
prompt = st.text_input("π‘ Ask a question about the document:", key="chat_input")
|
117 |
+
if prompt:
|
118 |
+
query_assistant(prompt)
|
119 |
+
st.experimental_rerun()
|
120 |
+
|
121 |
+
# Show messages: latest at top
|
122 |
+
for message in st.session_state.messages:
|
123 |
+
role = message["role"]
|
124 |
+
with st.chat_message(role):
|
125 |
+
st.markdown(message["content"])
|
126 |
|
127 |
# ------------------ Left Column: Document Image ------------------
|
128 |
with left:
|
|
|
134 |
st.session_state.image_updated = False
|
135 |
except Exception as e:
|
136 |
st.warning("β οΈ Could not load image.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|