om4r932 commited on
Commit
f72945a
·
1 Parent(s): b10b6fd
Files changed (1) hide show
  1. app.py +20 -3
app.py CHANGED
@@ -13,7 +13,8 @@ async def make_request(url: str, data: Dict[str, Any]):
13
  return response.json()
14
  except:
15
  return None
16
-
 
17
  @server.tool()
18
  async def search_academic_papers_arxiv(keyword: str, limit: int = 5) -> str:
19
  """
@@ -37,6 +38,7 @@ async def get_arxiv_pub_text(arxiv_id: str) -> str:
37
  return "Unable to extract PDF | arXiv PDF not found"
38
  return response["message"]["text"]
39
 
 
40
  @server.tool()
41
  async def get_document_url(doc_id: str) -> str:
42
  """
@@ -68,8 +70,9 @@ async def search_specifications_with_keywords(keywords: str, threshold: int = 60
68
  results = response["results"]
69
  return "\n---\n".join([f"Specification ID: {spec['id']}\nTitle: {spec['title']}\nType: {'Technical Specification' if spec['spec_type'] == 'TS' else 'Technical Report'}\nVersion: {spec.get('version', 'unavailable')}\nScope: {spec.get('scope', 'unavailable')}\nWorking Group: {spec.get('working_group', 'not defined')}\nURL: {spec.get('url', 'unavailable')}" for spec in results])
70
 
 
71
  @server.tool()
72
- async def get_spec_text(spec_id: str) -> Union[Dict[str, str], str]:
73
  """
74
  Extract specification from 3GPP or ETSI
75
  Returns a dictionary k:v where k is the section (1., 2.2.1, ...) and v, the content of k, or a string if failed
@@ -78,6 +81,20 @@ async def get_spec_text(spec_id: str) -> Union[Dict[str, str], str]:
78
  response = await make_request('https://organizedprogrammers-specsplitter.hf.space/extract_text/structured', {"spec_id": spec_id})
79
  if not response:
80
  return "Unable to extract specification text"
81
- return response
 
 
82
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  app = server.streamable_http_app
 
13
  return response.json()
14
  except:
15
  return None
16
+
17
+ # arXiv
18
  @server.tool()
19
  async def search_academic_papers_arxiv(keyword: str, limit: int = 5) -> str:
20
  """
 
38
  return "Unable to extract PDF | arXiv PDF not found"
39
  return response["message"]["text"]
40
 
41
+ # DocFinder
42
  @server.tool()
43
  async def get_document_url(doc_id: str) -> str:
44
  """
 
70
  results = response["results"]
71
  return "\n---\n".join([f"Specification ID: {spec['id']}\nTitle: {spec['title']}\nType: {'Technical Specification' if spec['spec_type'] == 'TS' else 'Technical Report'}\nVersion: {spec.get('version', 'unavailable')}\nScope: {spec.get('scope', 'unavailable')}\nWorking Group: {spec.get('working_group', 'not defined')}\nURL: {spec.get('url', 'unavailable')}" for spec in results])
72
 
73
+ # SpecSplitter
74
  @server.tool()
75
+ async def get_spec_text(spec_id: str) -> str:
76
  """
77
  Extract specification from 3GPP or ETSI
78
  Returns a dictionary k:v where k is the section (1., 2.2.1, ...) and v, the content of k, or a string if failed
 
81
  response = await make_request('https://organizedprogrammers-specsplitter.hf.space/extract_text/structured', {"spec_id": spec_id})
82
  if not response:
83
  return "Unable to extract specification text"
84
+ return "\n".join([f"{k}: {v}" for k, v in response.keys()])
85
+
86
+ # SERPent
87
 
88
+ @server.tool()
89
+ async def search_google_patents(queries: List[str], n_results: int) -> str:
90
+ """
91
+ Search patents from Google Patents
92
+ You can generate multiple queries (at least 1)
93
+ Returns a list of patents from queries, for each query, {n_results} patents will be retrieved
94
+ Args: queries -> list of string, n_results -> integer [by default: 10]
95
+ """
96
+ response = await make_request("https://organizedprogrammers-serpent.hf.space/serp/search_patents", {"queries": queries, "n_results": n_results})
97
+ if not response:
98
+ return "Unable to fetch patents"
99
+ return "\n".join(f"[Patent ID: {patent['id']} | Title: {patent['title']} | Body: {patent['body']}]" for patent in response.results)
100
  app = server.streamable_http_app