Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -4,7 +4,7 @@ from transformers import pipeline
|
|
| 4 |
from duckduckgo_search import DDGS
|
| 5 |
from datetime import datetime
|
| 6 |
|
| 7 |
-
# Initialize a lightweight text generation model on CPU
|
| 8 |
generator = pipeline("text-generation", model="distilgpt2", device=-1) # -1 ensures CPU by default
|
| 9 |
|
| 10 |
# Web search function (CPU-based)
|
|
@@ -57,7 +57,7 @@ def process_deep_research(query: str, history: list):
|
|
| 57 |
"""Handle the deep research process."""
|
| 58 |
if not history:
|
| 59 |
history = []
|
| 60 |
-
|
| 61 |
# Fetch web results (CPU)
|
| 62 |
web_results = get_web_results(query)
|
| 63 |
sources_html = format_sources(web_results)
|
|
@@ -65,9 +65,11 @@ def process_deep_research(query: str, history: list):
|
|
| 65 |
# Generate answer (GPU via @spaces.GPU)
|
| 66 |
prompt = format_prompt(query, web_results)
|
| 67 |
answer = generate_answer(prompt)
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
|
|
|
|
|
|
| 71 |
|
| 72 |
# Custom CSS for a cool, lightweight UI
|
| 73 |
css = """
|
|
@@ -163,26 +165,27 @@ with gr.Blocks(title="Deep Research Engine - ZeroGPU", css=css) as demo:
|
|
| 163 |
with gr.Column():
|
| 164 |
sources_output = gr.HTML(label="Sources", elem_classes="sources-list")
|
| 165 |
|
| 166 |
-
# Chat history
|
| 167 |
with gr.Row():
|
| 168 |
-
history_display = gr.Chatbot(label="History", elem_classes="history-box")
|
| 169 |
|
| 170 |
# Event handling
|
| 171 |
def handle_search(query, history):
|
| 172 |
answer, sources, new_history = process_deep_research(query, history)
|
| 173 |
return answer, sources, new_history
|
| 174 |
|
|
|
|
| 175 |
search_btn.click(
|
| 176 |
fn=handle_search,
|
| 177 |
inputs=[search_input, history_state],
|
| 178 |
-
outputs=[answer_output, sources_output, history_display]
|
| 179 |
-
_js="() => [document.querySelector('.search-box input').value, null]"
|
| 180 |
).then(
|
| 181 |
fn=lambda x: x,
|
| 182 |
inputs=[history_display],
|
| 183 |
outputs=[history_state]
|
| 184 |
)
|
| 185 |
|
|
|
|
| 186 |
search_input.submit(
|
| 187 |
fn=handle_search,
|
| 188 |
inputs=[search_input, history_state],
|
|
|
|
| 4 |
from duckduckgo_search import DDGS
|
| 5 |
from datetime import datetime
|
| 6 |
|
| 7 |
+
# Initialize a lightweight text generation model on CPU
|
| 8 |
generator = pipeline("text-generation", model="distilgpt2", device=-1) # -1 ensures CPU by default
|
| 9 |
|
| 10 |
# Web search function (CPU-based)
|
|
|
|
| 57 |
"""Handle the deep research process."""
|
| 58 |
if not history:
|
| 59 |
history = []
|
| 60 |
+
|
| 61 |
# Fetch web results (CPU)
|
| 62 |
web_results = get_web_results(query)
|
| 63 |
sources_html = format_sources(web_results)
|
|
|
|
| 65 |
# Generate answer (GPU via @spaces.GPU)
|
| 66 |
prompt = format_prompt(query, web_results)
|
| 67 |
answer = generate_answer(prompt)
|
| 68 |
+
|
| 69 |
+
# Convert tuple history to messages format (role/content)
|
| 70 |
+
new_history = history + [{"role": "user", "content": query}, {"role": "assistant", "content": answer}]
|
| 71 |
+
|
| 72 |
+
return answer, sources_html, new_history
|
| 73 |
|
| 74 |
# Custom CSS for a cool, lightweight UI
|
| 75 |
css = """
|
|
|
|
| 165 |
with gr.Column():
|
| 166 |
sources_output = gr.HTML(label="Sources", elem_classes="sources-list")
|
| 167 |
|
| 168 |
+
# Chat history (using messages format)
|
| 169 |
with gr.Row():
|
| 170 |
+
history_display = gr.Chatbot(label="History", elem_classes="history-box", type="messages")
|
| 171 |
|
| 172 |
# Event handling
|
| 173 |
def handle_search(query, history):
|
| 174 |
answer, sources, new_history = process_deep_research(query, history)
|
| 175 |
return answer, sources, new_history
|
| 176 |
|
| 177 |
+
# Remove _js parameter from click event
|
| 178 |
search_btn.click(
|
| 179 |
fn=handle_search,
|
| 180 |
inputs=[search_input, history_state],
|
| 181 |
+
outputs=[answer_output, sources_output, history_display]
|
|
|
|
| 182 |
).then(
|
| 183 |
fn=lambda x: x,
|
| 184 |
inputs=[history_display],
|
| 185 |
outputs=[history_state]
|
| 186 |
)
|
| 187 |
|
| 188 |
+
# Remove _js parameter from submit event
|
| 189 |
search_input.submit(
|
| 190 |
fn=handle_search,
|
| 191 |
inputs=[search_input, history_state],
|