Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -60,7 +60,7 @@ except Exception as e:
|
|
| 60 |
log_debug(f"β Model initialization failed: {str(e)}")
|
| 61 |
raise
|
| 62 |
|
| 63 |
-
def extract_text_from_pdf_url(url
|
| 64 |
"""Extract text from PDF with debug logging"""
|
| 65 |
debug_state = log_debug(f"π Fetching PDF: {url[:60]}...")
|
| 66 |
try:
|
|
@@ -77,24 +77,21 @@ def extract_text_from_pdf_url(url, debug_state):
|
|
| 77 |
debug_state = log_debug(error_msg)
|
| 78 |
return f"[Error loading PDF: {str(e)}]", debug_state
|
| 79 |
|
| 80 |
-
def generate_answer(query, pdf_urls_str
|
| 81 |
"""Main processing function with debug output"""
|
| 82 |
try:
|
| 83 |
debug_state = log_debug(f"π New query: {query}")
|
| 84 |
-
debug_console(debug_state)
|
| 85 |
|
| 86 |
if not query or not pdf_urls_str:
|
| 87 |
debug_state = log_debug("β Missing question or PDF URLs")
|
| 88 |
-
|
| 89 |
-
return "Please provide both inputs"
|
| 90 |
|
| 91 |
pdf_urls = [url.strip() for url in pdf_urls_str.strip().split("\n") if url.strip()]
|
| 92 |
sources = []
|
| 93 |
feedback = "### PDF Load Report:\n"
|
| 94 |
|
| 95 |
for url in pdf_urls:
|
| 96 |
-
text, debug_state = extract_text_from_pdf_url(url
|
| 97 |
-
debug_console(debug_state)
|
| 98 |
if not text.startswith("[Error"):
|
| 99 |
# Create source document with metadata
|
| 100 |
sources.append({
|
|
@@ -107,11 +104,9 @@ def generate_answer(query, pdf_urls_str, debug_console):
|
|
| 107 |
|
| 108 |
if not sources:
|
| 109 |
debug_state = log_debug("β No valid PDFs processed")
|
| 110 |
-
|
| 111 |
-
return feedback + "\nNo valid PDFs processed"
|
| 112 |
|
| 113 |
debug_state = log_debug(f"π§ Generating answer using {len(sources)} sources...")
|
| 114 |
-
debug_console(debug_state)
|
| 115 |
|
| 116 |
try:
|
| 117 |
# Generate without attention_mask parameter
|
|
@@ -121,25 +116,20 @@ def generate_answer(query, pdf_urls_str, debug_console):
|
|
| 121 |
backend = response.get('backend_used', 'unknown')
|
| 122 |
|
| 123 |
debug_state = log_debug(f"π‘ Answer generated using {backend}")
|
| 124 |
-
debug_console(debug_state)
|
| 125 |
full_output = f"{feedback}\n\n### Answer:\n{answer}\n\n_Generated using {backend}_"
|
| 126 |
-
return full_output
|
| 127 |
|
| 128 |
except Exception as e:
|
| 129 |
error_msg = f"β Generation error: {str(e)}"
|
| 130 |
debug_state = log_debug(error_msg)
|
| 131 |
-
debug_console(debug_state)
|
| 132 |
debug_state = log_debug(traceback.format_exc())
|
| 133 |
-
|
| 134 |
-
return feedback + f"\n\nβ Error: {str(e)}"
|
| 135 |
|
| 136 |
except Exception as e:
|
| 137 |
error_msg = f"β System error: {str(e)}"
|
| 138 |
debug_state = log_debug(error_msg)
|
| 139 |
-
debug_console(debug_state)
|
| 140 |
debug_state = log_debug(traceback.format_exc())
|
| 141 |
-
|
| 142 |
-
return error_msg
|
| 143 |
|
| 144 |
# Create the Gradio interface
|
| 145 |
with gr.Blocks(title="Pleias RAG QA", css="""
|
|
@@ -172,20 +162,17 @@ with gr.Blocks(title="Pleias RAG QA", css="""
|
|
| 172 |
elem_classes=["debug-console"]
|
| 173 |
)
|
| 174 |
|
|
|
|
|
|
|
|
|
|
| 175 |
submit_btn.click(
|
| 176 |
fn=generate_answer,
|
| 177 |
inputs=[question, pdf_urls],
|
| 178 |
-
outputs=[output],
|
| 179 |
-
js="""
|
| 180 |
-
function updateDebugConsole(debug_state) {
|
| 181 |
-
const debugConsole = document.querySelector('.debug-console textarea');
|
| 182 |
-
if (debugConsole) {
|
| 183 |
-
debugConsole.value = debug_state;
|
| 184 |
-
}
|
| 185 |
-
}
|
| 186 |
-
"""
|
| 187 |
)
|
| 188 |
|
|
|
|
|
|
|
| 189 |
if __name__ == "__main__":
|
| 190 |
log_debug("π Launching interface...")
|
| 191 |
demo.launch(
|
|
|
|
| 60 |
log_debug(f"β Model initialization failed: {str(e)}")
|
| 61 |
raise
|
| 62 |
|
| 63 |
+
def extract_text_from_pdf_url(url):
|
| 64 |
"""Extract text from PDF with debug logging"""
|
| 65 |
debug_state = log_debug(f"π Fetching PDF: {url[:60]}...")
|
| 66 |
try:
|
|
|
|
| 77 |
debug_state = log_debug(error_msg)
|
| 78 |
return f"[Error loading PDF: {str(e)}]", debug_state
|
| 79 |
|
| 80 |
+
def generate_answer(query, pdf_urls_str):
|
| 81 |
"""Main processing function with debug output"""
|
| 82 |
try:
|
| 83 |
debug_state = log_debug(f"π New query: {query}")
|
|
|
|
| 84 |
|
| 85 |
if not query or not pdf_urls_str:
|
| 86 |
debug_state = log_debug("β Missing question or PDF URLs")
|
| 87 |
+
return "Please provide both inputs", debug_state
|
|
|
|
| 88 |
|
| 89 |
pdf_urls = [url.strip() for url in pdf_urls_str.strip().split("\n") if url.strip()]
|
| 90 |
sources = []
|
| 91 |
feedback = "### PDF Load Report:\n"
|
| 92 |
|
| 93 |
for url in pdf_urls:
|
| 94 |
+
text, debug_state = extract_text_from_pdf_url(url)
|
|
|
|
| 95 |
if not text.startswith("[Error"):
|
| 96 |
# Create source document with metadata
|
| 97 |
sources.append({
|
|
|
|
| 104 |
|
| 105 |
if not sources:
|
| 106 |
debug_state = log_debug("β No valid PDFs processed")
|
| 107 |
+
return feedback + "\nNo valid PDFs processed", debug_state
|
|
|
|
| 108 |
|
| 109 |
debug_state = log_debug(f"π§ Generating answer using {len(sources)} sources...")
|
|
|
|
| 110 |
|
| 111 |
try:
|
| 112 |
# Generate without attention_mask parameter
|
|
|
|
| 116 |
backend = response.get('backend_used', 'unknown')
|
| 117 |
|
| 118 |
debug_state = log_debug(f"π‘ Answer generated using {backend}")
|
|
|
|
| 119 |
full_output = f"{feedback}\n\n### Answer:\n{answer}\n\n_Generated using {backend}_"
|
| 120 |
+
return full_output, debug_state
|
| 121 |
|
| 122 |
except Exception as e:
|
| 123 |
error_msg = f"β Generation error: {str(e)}"
|
| 124 |
debug_state = log_debug(error_msg)
|
|
|
|
| 125 |
debug_state = log_debug(traceback.format_exc())
|
| 126 |
+
return feedback + f"\n\nβ Error: {str(e)}", debug_state
|
|
|
|
| 127 |
|
| 128 |
except Exception as e:
|
| 129 |
error_msg = f"β System error: {str(e)}"
|
| 130 |
debug_state = log_debug(error_msg)
|
|
|
|
| 131 |
debug_state = log_debug(traceback.format_exc())
|
| 132 |
+
return error_msg, debug_state
|
|
|
|
| 133 |
|
| 134 |
# Create the Gradio interface
|
| 135 |
with gr.Blocks(title="Pleias RAG QA", css="""
|
|
|
|
| 162 |
elem_classes=["debug-console"]
|
| 163 |
)
|
| 164 |
|
| 165 |
+
def update_debug_console():
|
| 166 |
+
return "\n".join(debug_messages)
|
| 167 |
+
|
| 168 |
submit_btn.click(
|
| 169 |
fn=generate_answer,
|
| 170 |
inputs=[question, pdf_urls],
|
| 171 |
+
outputs=[output, debug_console],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 172 |
)
|
| 173 |
|
| 174 |
+
demo.load(update_debug_console, None, debug_console, every=1)
|
| 175 |
+
|
| 176 |
if __name__ == "__main__":
|
| 177 |
log_debug("π Launching interface...")
|
| 178 |
demo.launch(
|