Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -152,73 +152,85 @@ if __name__ == "__main__":
|
|
| 152 |
)
|
| 153 |
st.header("📖 Patent Chat: Google Patents Chat Demo")
|
| 154 |
|
| 155 |
-
# Fetch query parameters safely
|
| 156 |
-
query_params = st.query_params
|
| 157 |
-
default_patent_link = query_params.get("patent_link", "https://patents.google.com/patent/US8676427B1/en")
|
| 158 |
-
|
| 159 |
# Input for Google Patent Link
|
| 160 |
-
patent_link = st.text_area(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
|
| 162 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 163 |
if st.button("Load and Process Patent"):
|
| 164 |
if not patent_link:
|
| 165 |
-
st.warning("Please enter a Google patent link
|
| 166 |
st.stop()
|
| 167 |
|
| 168 |
# Extract patent number
|
| 169 |
patent_number = extract_patent_number(patent_link)
|
| 170 |
if not patent_number:
|
| 171 |
-
st.error("Invalid patent link format.
|
| 172 |
st.stop()
|
| 173 |
|
| 174 |
st.write(f"Patent number: **{patent_number}**")
|
| 175 |
|
| 176 |
-
# File
|
| 177 |
pdf_path = os.path.join(tempfile.gettempdir(), f"{patent_number}.pdf")
|
| 178 |
-
if os.path.isfile(pdf_path):
|
| 179 |
-
st.write("✅ File already downloaded.")
|
| 180 |
-
else:
|
| 181 |
st.write("📥 Downloading patent file...")
|
| 182 |
pdf_path = download_pdf(patent_number)
|
| 183 |
st.write(f"✅ File downloaded: {pdf_path}")
|
| 184 |
-
|
| 185 |
-
# Generate and display PDF preview
|
| 186 |
-
st.write("🖼️ Generating PDF preview...")
|
| 187 |
-
preview_image_path = preview_pdf(pdf_path)
|
| 188 |
-
|
| 189 |
-
if preview_image_path:
|
| 190 |
-
st.image(preview_image_path, caption="First Page Preview", use_column_width=True)
|
| 191 |
else:
|
| 192 |
-
st.
|
| 193 |
-
|
| 194 |
-
# Load the document into the system
|
| 195 |
-
st.write("🔄 Loading document into the system...")
|
| 196 |
|
| 197 |
-
#
|
| 198 |
-
if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 199 |
st.session_state.chain = load_chain(pdf_path)
|
| 200 |
-
st.session_state.LOADED_PATENT = patent_number
|
|
|
|
| 201 |
st.session_state.messages = [{"role": "assistant", "content": "Hello! How can I assist you with this patent?"}]
|
| 202 |
-
st.success("🚀 Document successfully loaded!
|
| 203 |
else:
|
| 204 |
-
st.
|
| 205 |
|
| 206 |
-
#
|
| 207 |
-
if
|
| 208 |
-
st.session_state.
|
| 209 |
|
| 210 |
# Display previous chat messages
|
| 211 |
for message in st.session_state.messages:
|
| 212 |
with st.chat_message(message["role"]):
|
| 213 |
st.markdown(message["content"])
|
| 214 |
|
| 215 |
-
# User input
|
| 216 |
-
if
|
| 217 |
if user_input := st.chat_input("What is your question?"):
|
|
|
|
| 218 |
st.session_state.messages.append({"role": "user", "content": user_input})
|
| 219 |
with st.chat_message("user"):
|
| 220 |
st.markdown(user_input)
|
| 221 |
|
|
|
|
| 222 |
with st.chat_message("assistant"):
|
| 223 |
message_placeholder = st.empty()
|
| 224 |
full_response = ""
|
|
@@ -226,7 +238,7 @@ if __name__ == "__main__":
|
|
| 226 |
with st.spinner("Generating response..."):
|
| 227 |
try:
|
| 228 |
assistant_response = st.session_state.chain({"question": user_input})
|
| 229 |
-
full_response = assistant_response
|
| 230 |
except Exception as e:
|
| 231 |
full_response = f"An error occurred: {e}"
|
| 232 |
|
|
|
|
| 152 |
)
|
| 153 |
st.header("📖 Patent Chat: Google Patents Chat Demo")
|
| 154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 155 |
# Input for Google Patent Link
|
| 156 |
+
patent_link = st.text_area(
|
| 157 |
+
"Enter Google Patent Link:",
|
| 158 |
+
value="https://patents.google.com/patent/US8676427B1/en",
|
| 159 |
+
height=100
|
| 160 |
+
)
|
| 161 |
|
| 162 |
+
# Initialize session state
|
| 163 |
+
if "LOADED_PATENT" not in st.session_state:
|
| 164 |
+
st.session_state.LOADED_PATENT = None
|
| 165 |
+
if "pdf_preview" not in st.session_state:
|
| 166 |
+
st.session_state.pdf_preview = None
|
| 167 |
+
if "loaded_pdf_path" not in st.session_state:
|
| 168 |
+
st.session_state.loaded_pdf_path = None
|
| 169 |
+
if "chain" not in st.session_state:
|
| 170 |
+
st.session_state.chain = None
|
| 171 |
+
if "messages" not in st.session_state:
|
| 172 |
+
st.session_state.messages = [{"role": "assistant", "content": "Hello! How can I assist you with this patent?"}]
|
| 173 |
+
|
| 174 |
+
# Load and process patent
|
| 175 |
if st.button("Load and Process Patent"):
|
| 176 |
if not patent_link:
|
| 177 |
+
st.warning("Please enter a valid Google patent link.")
|
| 178 |
st.stop()
|
| 179 |
|
| 180 |
# Extract patent number
|
| 181 |
patent_number = extract_patent_number(patent_link)
|
| 182 |
if not patent_number:
|
| 183 |
+
st.error("Invalid patent link format.")
|
| 184 |
st.stop()
|
| 185 |
|
| 186 |
st.write(f"Patent number: **{patent_number}**")
|
| 187 |
|
| 188 |
+
# File handling
|
| 189 |
pdf_path = os.path.join(tempfile.gettempdir(), f"{patent_number}.pdf")
|
| 190 |
+
if not os.path.isfile(pdf_path):
|
|
|
|
|
|
|
| 191 |
st.write("📥 Downloading patent file...")
|
| 192 |
pdf_path = download_pdf(patent_number)
|
| 193 |
st.write(f"✅ File downloaded: {pdf_path}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 194 |
else:
|
| 195 |
+
st.write("✅ File already downloaded.")
|
|
|
|
|
|
|
|
|
|
| 196 |
|
| 197 |
+
# Generate preview if not already stored
|
| 198 |
+
if st.session_state.LOADED_PATENT != patent_number:
|
| 199 |
+
st.write("🖼️ Generating PDF preview...")
|
| 200 |
+
preview_image_path = preview_pdf(pdf_path)
|
| 201 |
+
if preview_image_path:
|
| 202 |
+
st.session_state.pdf_preview = preview_image_path
|
| 203 |
+
else:
|
| 204 |
+
st.warning("Failed to generate PDF preview.")
|
| 205 |
+
st.session_state.pdf_preview = None
|
| 206 |
+
|
| 207 |
+
# Load the chain and store metadata
|
| 208 |
st.session_state.chain = load_chain(pdf_path)
|
| 209 |
+
st.session_state.LOADED_PATENT = patent_number
|
| 210 |
+
st.session_state.loaded_pdf_path = pdf_path
|
| 211 |
st.session_state.messages = [{"role": "assistant", "content": "Hello! How can I assist you with this patent?"}]
|
| 212 |
+
st.success("🚀 Document successfully loaded!")
|
| 213 |
else:
|
| 214 |
+
st.info("✅ This patent is already loaded.")
|
| 215 |
|
| 216 |
+
# Display the PDF preview if available
|
| 217 |
+
if st.session_state.pdf_preview:
|
| 218 |
+
st.image(st.session_state.pdf_preview, caption="First Page Preview", use_container_width=True)
|
| 219 |
|
| 220 |
# Display previous chat messages
|
| 221 |
for message in st.session_state.messages:
|
| 222 |
with st.chat_message(message["role"]):
|
| 223 |
st.markdown(message["content"])
|
| 224 |
|
| 225 |
+
# User input for questions
|
| 226 |
+
if st.session_state.chain:
|
| 227 |
if user_input := st.chat_input("What is your question?"):
|
| 228 |
+
# User message
|
| 229 |
st.session_state.messages.append({"role": "user", "content": user_input})
|
| 230 |
with st.chat_message("user"):
|
| 231 |
st.markdown(user_input)
|
| 232 |
|
| 233 |
+
# Assistant response
|
| 234 |
with st.chat_message("assistant"):
|
| 235 |
message_placeholder = st.empty()
|
| 236 |
full_response = ""
|
|
|
|
| 238 |
with st.spinner("Generating response..."):
|
| 239 |
try:
|
| 240 |
assistant_response = st.session_state.chain({"question": user_input})
|
| 241 |
+
full_response = assistant_response.get("answer", "I couldn't process that question.")
|
| 242 |
except Exception as e:
|
| 243 |
full_response = f"An error occurred: {e}"
|
| 244 |
|