Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -184,11 +184,14 @@ def _build_image_parts_from_indices(indices: List[int]) -> List[Dict[str, Any]]:
|
|
184 |
|
185 |
SYSTEM = (
|
186 |
"""
|
187 |
-
You are a PDF research agent.
|
|
|
|
|
|
|
|
|
|
|
188 |
|
189 |
Workflow:
|
190 |
-
• When you need pages, call the tool: mcp_test_search(query: string, k: int).
|
191 |
-
• The app will attach the images for the LAST search result you produced in this turn in a follow-up message.
|
192 |
• Use ONLY the provided images for grounding and cite as (p.<page>).
|
193 |
• If an answer is not present, say “Not found in the provided pages.”
|
194 |
|
@@ -236,7 +239,7 @@ def stream_agent(question: str,
|
|
236 |
|
237 |
# Optional seeding: attach some likely pages on round 1
|
238 |
try:
|
239 |
-
seed_indices = search(question, k=5) or []
|
240 |
except Exception as e:
|
241 |
yield f"❌ Search failed: {e}", "", ""
|
242 |
return
|
@@ -337,7 +340,7 @@ def stream_agent(question: str,
|
|
337 |
|
338 |
# Capture tool RESULT text and try to parse indices
|
339 |
elif etype.startswith("response.tool_result"):
|
340 |
-
print("
|
341 |
delta_text = getattr(event, "delta", "") or getattr(event, "output_text", "")
|
342 |
if delta_text:
|
343 |
tool_result_buffer += str(delta_text)
|
@@ -368,7 +371,7 @@ def stream_agent(question: str,
|
|
368 |
pending_indices = list(seed_indices)
|
369 |
|
370 |
while round_idx <= max_rounds:
|
371 |
-
print(round_idx, pending_indices)
|
372 |
for final_md, summary_md, log_md in run_round(round_idx, pending_indices):
|
373 |
yield final_md, summary_md, log_md
|
374 |
|
|
|
184 |
|
185 |
SYSTEM = (
|
186 |
"""
|
187 |
+
You are a PDF research agent with a single tool: mcp_test_search(query: string, k: int).
|
188 |
+
Act iteratively:
|
189 |
+
1) Split the user question into 1–4 focused sub-queries. Subqueries should be asked as natural language questions in the english language, not just keywords.
|
190 |
+
2) For each sub-query, call mcp_test_search (k=5 by default; increase to up to 10 if you need to go deep).
|
191 |
+
3) You will receive the output of mcp_test_search as a list of indices correspondinf to page numbers. Print them out and stop generating. You will be fed the corresponding pages as images in a follow-up message.
|
192 |
+
3) Stop early when confident; otherwise refine and repeat, up to 4 iterations and 20 searches in total. If info is missing, try to continue searching using new keywords and queries.
|
193 |
|
194 |
Workflow:
|
|
|
|
|
195 |
• Use ONLY the provided images for grounding and cite as (p.<page>).
|
196 |
• If an answer is not present, say “Not found in the provided pages.”
|
197 |
|
|
|
239 |
|
240 |
# Optional seeding: attach some likely pages on round 1
|
241 |
try:
|
242 |
+
seed_indices = [] # search(question, k=5) or []
|
243 |
except Exception as e:
|
244 |
yield f"❌ Search failed: {e}", "", ""
|
245 |
return
|
|
|
340 |
|
341 |
# Capture tool RESULT text and try to parse indices
|
342 |
elif etype.startswith("response.tool_result"):
|
343 |
+
print("A tool output was detected")
|
344 |
delta_text = getattr(event, "delta", "") or getattr(event, "output_text", "")
|
345 |
if delta_text:
|
346 |
tool_result_buffer += str(delta_text)
|
|
|
371 |
pending_indices = list(seed_indices)
|
372 |
|
373 |
while round_idx <= max_rounds:
|
374 |
+
print("Round ", round_idx, ", Indices: ", pending_indices)
|
375 |
for final_md, summary_md, log_md in run_round(round_idx, pending_indices):
|
376 |
yield final_md, summary_md, log_md
|
377 |
|