pdx97 commited on
Commit
f8b4531
·
verified ·
1 Parent(s): 6cdbdc2

Updated fetch function in app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -11
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 **strict keyword presence**.
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
- # Force strict keyword search using "title" and "abstract" only
72
- query = "+AND+".join([f"(ti:\"{kw}\"+OR+abs:\"{kw}\")" for kw in keywords])
73
- query_encoded = urllib.parse.quote(query) # Encode query for URL
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 ALL keywords appear in **either** title or abstract
87
- if all(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,11 +93,7 @@ def fetch_latest_arxiv_papers(keywords: list, num_results: int = 5) -> list:
93
  "link": entry.link
94
  })
95
 
96
- # If no relevant papers found, return "No results found."
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