Spaces:
Running
Running
Updated fetch function in app.py
Browse files
app.py
CHANGED
@@ -51,7 +51,7 @@ from smolagents import CodeAgent, HfApiModel, tool
|
|
51 |
|
52 |
@tool
|
53 |
def fetch_latest_arxiv_papers(keywords: list, num_results: int = 5) -> list:
|
54 |
-
"""Fetches the latest research papers from arXiv based on
|
55 |
|
56 |
Args:
|
57 |
keywords: A list of keywords to search for relevant papers.
|
@@ -68,9 +68,9 @@ def fetch_latest_arxiv_papers(keywords: list, num_results: int = 5) -> list:
|
|
68 |
try:
|
69 |
print(f"DEBUG: Searching arXiv papers with keywords: {keywords}")
|
70 |
|
71 |
-
#
|
72 |
-
query = "+AND+".join([f"
|
73 |
-
query_encoded = urllib.parse.quote(query) # Encode
|
74 |
|
75 |
url = f"http://export.arxiv.org/api/query?search_query={query_encoded}&start=0&max_results=20&sortBy=submittedDate&sortOrder=descending"
|
76 |
|
@@ -83,8 +83,8 @@ def fetch_latest_arxiv_papers(keywords: list, num_results: int = 5) -> list:
|
|
83 |
title = entry.title.lower()
|
84 |
abstract = entry.summary.lower()
|
85 |
|
86 |
-
# Ensure
|
87 |
-
if
|
88 |
papers.append({
|
89 |
"title": entry.title,
|
90 |
"authors": ", ".join(author.name for author in entry.authors),
|
@@ -93,11 +93,7 @@ def fetch_latest_arxiv_papers(keywords: list, num_results: int = 5) -> list:
|
|
93 |
"link": entry.link
|
94 |
})
|
95 |
|
96 |
-
#
|
97 |
-
if not papers:
|
98 |
-
return [{"error": "No results found. Try different keywords."}]
|
99 |
-
|
100 |
-
# Prioritize papers where keywords appear in the **title**
|
101 |
papers.sort(key=lambda x: sum(kw.lower() in x["title"].lower() for kw in keywords), reverse=True)
|
102 |
|
103 |
return papers[:num_results] # Return top-matching papers
|
|
|
51 |
|
52 |
@tool
|
53 |
def fetch_latest_arxiv_papers(keywords: list, num_results: int = 5) -> list:
|
54 |
+
"""Fetches the latest research papers from arXiv based on provided keywords.
|
55 |
|
56 |
Args:
|
57 |
keywords: A list of keywords to search for relevant papers.
|
|
|
68 |
try:
|
69 |
print(f"DEBUG: Searching arXiv papers with keywords: {keywords}")
|
70 |
|
71 |
+
# Format query using "AND" to enforce strict keyword presence
|
72 |
+
query = "+AND+".join([f"ti:{kw}+OR+abs:{kw}" for kw in keywords])
|
73 |
+
query_encoded = urllib.parse.quote(query) # Encode spaces and special characters
|
74 |
|
75 |
url = f"http://export.arxiv.org/api/query?search_query={query_encoded}&start=0&max_results=20&sortBy=submittedDate&sortOrder=descending"
|
76 |
|
|
|
83 |
title = entry.title.lower()
|
84 |
abstract = entry.summary.lower()
|
85 |
|
86 |
+
# ✅ Ensure at least one keyword appears in the title or abstract
|
87 |
+
if any(kw.lower() in title or kw.lower() in abstract for kw in keywords):
|
88 |
papers.append({
|
89 |
"title": entry.title,
|
90 |
"authors": ", ".join(author.name for author in entry.authors),
|
|
|
93 |
"link": entry.link
|
94 |
})
|
95 |
|
96 |
+
# ✅ Sort papers: First prioritize keyword in title, then abstract
|
|
|
|
|
|
|
|
|
97 |
papers.sort(key=lambda x: sum(kw.lower() in x["title"].lower() for kw in keywords), reverse=True)
|
98 |
|
99 |
return papers[:num_results] # Return top-matching papers
|