zeerafle commited on
Commit
31444ab
·
1 Parent(s): 3d75873

Add arXiv search tool and dependencies

Browse files
Files changed (3) hide show
  1. pyproject.toml +2 -0
  2. tools/arxiv_search.py +18 -0
  3. uv.lock +50 -0
pyproject.toml CHANGED
@@ -5,6 +5,7 @@ description = "Add your description here"
5
  readme = "README.md"
6
  requires-python = ">=3.12"
7
  dependencies = [
 
8
  "google-genai>=1.22.0",
9
  "gradio>=5.34.2",
10
  "langchain-community>=0.3.26",
@@ -12,6 +13,7 @@ dependencies = [
12
  "langgraph>=0.4.10",
13
  "numexpr>=2.11.0",
14
  "pandas>=2.3.0",
 
15
  "python-dotenv>=1.1.1",
16
  "requests>=2.32.4",
17
  "wikipedia>=1.4.0",
 
5
  readme = "README.md"
6
  requires-python = ">=3.12"
7
  dependencies = [
8
+ "arxiv>=2.2.0",
9
  "google-genai>=1.22.0",
10
  "gradio>=5.34.2",
11
  "langchain-community>=0.3.26",
 
13
  "langgraph>=0.4.10",
14
  "numexpr>=2.11.0",
15
  "pandas>=2.3.0",
16
+ "pymupdf>=1.26.1",
17
  "python-dotenv>=1.1.1",
18
  "requests>=2.32.4",
19
  "wikipedia>=1.4.0",
tools/arxiv_search.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain_community.retrievers import ArxivRetriever
2
+ from langchain_core.tools.retriever import create_retriever_tool
3
+
4
+ retriever = ArxivRetriever(
5
+ arxiv_search=None,
6
+ arxiv_exceptions=None,
7
+ load_max_docs=2,
8
+ get_full_documents=True,
9
+ )
10
+
11
+ arxiv_tool = create_retriever_tool(
12
+ retriever=retriever,
13
+ name="arxiv_search",
14
+ description="Useful for searching academic papers on arXiv. Input should be a search query."
15
+ )
16
+
17
+ if __name__ == "__main__":
18
+ print(arxiv_tool.invoke("What is the ImageBind model?"))
uv.lock CHANGED
@@ -111,6 +111,19 @@ wheels = [
111
  { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" },
112
  ]
113
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  [[package]]
115
  name = "attrs"
116
  version = "25.3.0"
@@ -307,6 +320,18 @@ wheels = [
307
  { url = "https://files.pythonhosted.org/packages/59/4a/e17764385382062b0edbb35a26b7cf76d71e27e456546277a42ba6545c6e/fastapi-0.115.13-py3-none-any.whl", hash = "sha256:0a0cab59afa7bab22f5eb347f8c9864b681558c278395e94035a741fc10cd865", size = 95315, upload-time = "2025-06-17T11:49:44.106Z" },
308
  ]
309
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  [[package]]
311
  name = "ffmpy"
312
  version = "0.6.0"
@@ -339,6 +364,7 @@ name = "final-assignment-template"
339
  version = "0.1.0"
340
  source = { virtual = "." }
341
  dependencies = [
 
342
  { name = "google-genai" },
343
  { name = "gradio" },
344
  { name = "langchain", extra = ["google-genai"] },
@@ -346,6 +372,7 @@ dependencies = [
346
  { name = "langgraph" },
347
  { name = "numexpr" },
348
  { name = "pandas" },
 
349
  { name = "python-dotenv" },
350
  { name = "requests" },
351
  { name = "wikipedia" },
@@ -353,6 +380,7 @@ dependencies = [
353
 
354
  [package.metadata]
355
  requires-dist = [
 
356
  { name = "google-genai", specifier = ">=1.22.0" },
357
  { name = "gradio", specifier = ">=5.34.2" },
358
  { name = "langchain", extras = ["google-genai"], specifier = ">=0.3.26" },
@@ -360,6 +388,7 @@ requires-dist = [
360
  { name = "langgraph", specifier = ">=0.4.10" },
361
  { name = "numexpr", specifier = ">=2.11.0" },
362
  { name = "pandas", specifier = ">=2.3.0" },
 
363
  { name = "python-dotenv", specifier = ">=1.1.1" },
364
  { name = "requests", specifier = ">=2.32.4" },
365
  { name = "wikipedia", specifier = ">=1.4.0" },
@@ -1499,6 +1528,21 @@ wheels = [
1499
  { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
1500
  ]
1501
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1502
  [[package]]
1503
  name = "python-dateutil"
1504
  version = "2.9.0.post0"
@@ -1662,6 +1706,12 @@ wheels = [
1662
  { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" },
1663
  ]
1664
 
 
 
 
 
 
 
1665
  [[package]]
1666
  name = "shellingham"
1667
  version = "1.5.4"
 
111
  { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" },
112
  ]
113
 
114
+ [[package]]
115
+ name = "arxiv"
116
+ version = "2.2.0"
117
+ source = { registry = "https://pypi.org/simple" }
118
+ dependencies = [
119
+ { name = "feedparser" },
120
+ { name = "requests" },
121
+ ]
122
+ sdist = { url = "https://files.pythonhosted.org/packages/0b/16/3d72446400a59d1fbda24fed2289661398994164e07d72cfa85e43ce5e36/arxiv-2.2.0.tar.gz", hash = "sha256:6072a2211e95697092ef32acde0144d7de2cfa71208e2751724316c9df322cc0", size = 16910, upload-time = "2025-04-08T06:16:09.824Z" }
123
+ wheels = [
124
+ { url = "https://files.pythonhosted.org/packages/71/1e/e7f0393e836b5347605fc356c24d9f9ae9b26e0f7e52573b80e3d28335eb/arxiv-2.2.0-py3-none-any.whl", hash = "sha256:545b8af5ab301efff7697cd112b5189e631b80521ccbc33fbc1e1f9cff63ca4d", size = 11696, upload-time = "2025-04-08T06:16:08.844Z" },
125
+ ]
126
+
127
  [[package]]
128
  name = "attrs"
129
  version = "25.3.0"
 
320
  { url = "https://files.pythonhosted.org/packages/59/4a/e17764385382062b0edbb35a26b7cf76d71e27e456546277a42ba6545c6e/fastapi-0.115.13-py3-none-any.whl", hash = "sha256:0a0cab59afa7bab22f5eb347f8c9864b681558c278395e94035a741fc10cd865", size = 95315, upload-time = "2025-06-17T11:49:44.106Z" },
321
  ]
322
 
323
+ [[package]]
324
+ name = "feedparser"
325
+ version = "6.0.11"
326
+ source = { registry = "https://pypi.org/simple" }
327
+ dependencies = [
328
+ { name = "sgmllib3k" },
329
+ ]
330
+ sdist = { url = "https://files.pythonhosted.org/packages/ff/aa/7af346ebeb42a76bf108027fe7f3328bb4e57a3a96e53e21fd9ef9dd6dd0/feedparser-6.0.11.tar.gz", hash = "sha256:c9d0407b64c6f2a065d0ebb292c2b35c01050cc0dc33757461aaabdc4c4184d5", size = 286197, upload-time = "2023-12-10T16:03:20.854Z" }
331
+ wheels = [
332
+ { url = "https://files.pythonhosted.org/packages/7c/d4/8c31aad9cc18f451c49f7f9cfb5799dadffc88177f7917bc90a66459b1d7/feedparser-6.0.11-py3-none-any.whl", hash = "sha256:0be7ee7b395572b19ebeb1d6aafb0028dee11169f1c934e0ed67d54992f4ad45", size = 81343, upload-time = "2023-12-10T16:03:19.484Z" },
333
+ ]
334
+
335
  [[package]]
336
  name = "ffmpy"
337
  version = "0.6.0"
 
364
  version = "0.1.0"
365
  source = { virtual = "." }
366
  dependencies = [
367
+ { name = "arxiv" },
368
  { name = "google-genai" },
369
  { name = "gradio" },
370
  { name = "langchain", extra = ["google-genai"] },
 
372
  { name = "langgraph" },
373
  { name = "numexpr" },
374
  { name = "pandas" },
375
+ { name = "pymupdf" },
376
  { name = "python-dotenv" },
377
  { name = "requests" },
378
  { name = "wikipedia" },
 
380
 
381
  [package.metadata]
382
  requires-dist = [
383
+ { name = "arxiv", specifier = ">=2.2.0" },
384
  { name = "google-genai", specifier = ">=1.22.0" },
385
  { name = "gradio", specifier = ">=5.34.2" },
386
  { name = "langchain", extras = ["google-genai"], specifier = ">=0.3.26" },
 
388
  { name = "langgraph", specifier = ">=0.4.10" },
389
  { name = "numexpr", specifier = ">=2.11.0" },
390
  { name = "pandas", specifier = ">=2.3.0" },
391
+ { name = "pymupdf", specifier = ">=1.26.1" },
392
  { name = "python-dotenv", specifier = ">=1.1.1" },
393
  { name = "requests", specifier = ">=2.32.4" },
394
  { name = "wikipedia", specifier = ">=1.4.0" },
 
1528
  { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
1529
  ]
1530
 
1531
+ [[package]]
1532
+ name = "pymupdf"
1533
+ version = "1.26.1"
1534
+ source = { registry = "https://pypi.org/simple" }
1535
+ sdist = { url = "https://files.pythonhosted.org/packages/bd/62/d29612ca33b7844e77d2c789fec359f4c44fd84bdd08ce673f6279d257e9/pymupdf-1.26.1.tar.gz", hash = "sha256:372c77c831f82090ce7a6e4de284ca7c5a78220f63038bb28c5d9b279cd7f4d9", size = 75912371, upload-time = "2025-06-11T22:18:30.932Z" }
1536
+ wheels = [
1537
+ { url = "https://files.pythonhosted.org/packages/32/5a/3399a2caf51c91db650de57464465b830c2d4ea15b23d24a98182202b704/pymupdf-1.26.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:32296f12a7c7f36febd59cee77823a54490313bcaba9879b17def6518186f94e", size = 23054640, upload-time = "2025-06-11T22:14:07.439Z" },
1538
+ { url = "https://files.pythonhosted.org/packages/64/e0/cc3ec6a4d5ada8992b8610f134565ceb517243f12736b50d795cb3459315/pymupdf-1.26.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:aad7949eca62aca40854510cdb125cf873b181726dc9497a90834200f31faa63", size = 22402766, upload-time = "2025-06-11T22:14:25.557Z" },
1539
+ { url = "https://files.pythonhosted.org/packages/e8/cf/d5b1cd775a17a7b83e25cbf4c46f64cf1352c962ca97646e3e01953cf0df/pymupdf-1.26.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3b62c4d443121ed9a2eb967c3a0e45f8dbabcc838db8604ece02c4e868808edc", size = 23448474, upload-time = "2025-06-20T17:51:56.446Z" },
1540
+ { url = "https://files.pythonhosted.org/packages/82/9f/e7101bd24a0f5cbfa0310c8e5c3a8ec0dd9a86986812ff86ac2fbd273c92/pymupdf-1.26.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a65c411eb1cbb79e40c307e10fbad23658f19e9d7334ac4de21d24b58009a7b9", size = 24056183, upload-time = "2025-06-11T22:14:53.777Z" },
1541
+ { url = "https://files.pythonhosted.org/packages/99/39/23ac15cf0edc2877ef366dc7ae041ac199d212433c2c3113661d1a1d5ad0/pymupdf-1.26.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:26cebdcc1b2b7a7445423599ce2e0000f2be0333cce0fa0e6846e5a7da46f965", size = 24258802, upload-time = "2025-06-11T22:15:20.499Z" },
1542
+ { url = "https://files.pythonhosted.org/packages/e1/8c/56bd5951128d5c5c0b64d2942090c2cd7bc44302bac991b941ac736e3d63/pymupdf-1.26.1-cp39-abi3-win32.whl", hash = "sha256:82ed9e106cf564fc959c0691c374ba68443086ba1a1c9f26128eebbc3e6df9e5", size = 16927933, upload-time = "2025-06-11T22:15:59.72Z" },
1543
+ { url = "https://files.pythonhosted.org/packages/a7/1b/0613759a059c8c952c18811c7c7dd0ba5d7945ed13a535719489f533d700/pymupdf-1.26.1-cp39-abi3-win_amd64.whl", hash = "sha256:8deae5168fce37d707f68d1981da6c0bb71f1f176d9835d5914ad46f779a036f", size = 18519587, upload-time = "2025-06-11T22:16:38.155Z" },
1544
+ ]
1545
+
1546
  [[package]]
1547
  name = "python-dateutil"
1548
  version = "2.9.0.post0"
 
1706
  { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" },
1707
  ]
1708
 
1709
+ [[package]]
1710
+ name = "sgmllib3k"
1711
+ version = "1.0.0"
1712
+ source = { registry = "https://pypi.org/simple" }
1713
+ sdist = { url = "https://files.pythonhosted.org/packages/9e/bd/3704a8c3e0942d711c1299ebf7b9091930adae6675d7c8f476a7ce48653c/sgmllib3k-1.0.0.tar.gz", hash = "sha256:7868fb1c8bfa764c1ac563d3cf369c381d1325d36124933a726f29fcdaa812e9", size = 5750, upload-time = "2010-08-24T14:33:52.445Z" }
1714
+
1715
  [[package]]
1716
  name = "shellingham"
1717
  version = "1.5.4"