David Chu commited on
Commit
d2f1b05
·
unverified ·
1 Parent(s): 9490f88

feat: inform model if a search query has no results

Browse files
Files changed (1) hide show
  1. app/tools/literature.py +10 -2
app/tools/literature.py CHANGED
@@ -1,13 +1,18 @@
1
  from xml.etree import ElementTree
2
 
3
  import httpx
 
4
  from tenacity import retry, stop_after_attempt, wait_random_exponential
5
 
6
  from app.config import settings
7
  from app.tools.utils import generate_id
8
 
9
 
10
- @retry(stop=stop_after_attempt(3), wait=wait_random_exponential(multiplier=0.5, max=10))
 
 
 
 
11
  def search_semantic_scholar(
12
  query: str, top_k: int = 20, min_citation_count: int = 5
13
  ) -> list[dict]:
@@ -29,7 +34,10 @@ def search_semantic_scholar(
29
  timeout=10.0,
30
  )
31
  resp.raise_for_status()
32
- return resp.json().get("data", [])
 
 
 
33
 
34
 
35
  @retry(stop=stop_after_attempt(5), wait=wait_random_exponential(multiplier=0.5, max=10))
 
1
  from xml.etree import ElementTree
2
 
3
  import httpx
4
+ from pydantic_ai import ModelRetry
5
  from tenacity import retry, stop_after_attempt, wait_random_exponential
6
 
7
  from app.config import settings
8
  from app.tools.utils import generate_id
9
 
10
 
11
+ @retry(
12
+ stop=stop_after_attempt(3),
13
+ wait=wait_random_exponential(multiplier=0.5, max=10),
14
+ reraise=True,
15
+ )
16
  def search_semantic_scholar(
17
  query: str, top_k: int = 20, min_citation_count: int = 5
18
  ) -> list[dict]:
 
34
  timeout=10.0,
35
  )
36
  resp.raise_for_status()
37
+ data = resp.json().get("data", [])
38
+ if not data:
39
+ raise ModelRetry(f"No results for '{query}'. Try different keywords.")
40
+ return data
41
 
42
 
43
  @retry(stop=stop_after_attempt(5), wait=wait_random_exponential(multiplier=0.5, max=10))