Spaces:
Runtime error
Runtime error
Add tools
Browse files- pyproject.toml +1 -0
- src/gaia_solving_agent/tools.py +41 -1
- uv.lock +29 -0
pyproject.toml
CHANGED
|
@@ -12,6 +12,7 @@ dependencies = [
|
|
| 12 |
"llama-index-llms-nebius>=0.1.2",
|
| 13 |
"llama-index-multi-modal-llms-mistralai>=0.4.0",
|
| 14 |
"llama-index-multi-modal-llms-nebius>=0.4.0",
|
|
|
|
| 15 |
"llama-index-readers-web>=0.4.2",
|
| 16 |
"llama-index-readers-youtube-transcript>=0.3.0",
|
| 17 |
"llama-index-tools-duckduckgo>=0.3.0",
|
|
|
|
| 12 |
"llama-index-llms-nebius>=0.1.2",
|
| 13 |
"llama-index-multi-modal-llms-mistralai>=0.4.0",
|
| 14 |
"llama-index-multi-modal-llms-nebius>=0.4.0",
|
| 15 |
+
"llama-index-readers-papers>=0.3.2",
|
| 16 |
"llama-index-readers-web>=0.4.2",
|
| 17 |
"llama-index-readers-youtube-transcript>=0.3.0",
|
| 18 |
"llama-index-tools-duckduckgo>=0.3.0",
|
src/gaia_solving_agent/tools.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
from llama_index.core.schema import ImageDocument
|
| 2 |
from llama_index.core.tools import FunctionTool
|
| 3 |
from llama_index.core.tools.ondemand_loader_tool import OnDemandLoaderTool
|
| 4 |
from llama_index.core.tools.tool_spec.base import BaseToolSpec
|
|
@@ -7,6 +7,7 @@ from llama_index.multi_modal_llms.mistralai import MistralAIMultiModal
|
|
| 7 |
from llama_index.multi_modal_llms.nebius import NebiusMultiModal
|
| 8 |
from llama_index.readers.web import SimpleWebPageReader
|
| 9 |
from llama_index.readers.youtube_transcript import YoutubeTranscriptReader
|
|
|
|
| 10 |
from tavily import AsyncTavilyClient
|
| 11 |
from workflows import Context
|
| 12 |
|
|
@@ -28,6 +29,35 @@ async def tavily_search_web(query: str) -> str:
|
|
| 28 |
return str(await client.search(query))
|
| 29 |
|
| 30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
async def vllm_ask_image_tool(ctx: Context, query: str) -> str:
|
| 32 |
"""
|
| 33 |
Asynchronously processes a visual-linguistic query paired with image data
|
|
@@ -119,3 +149,13 @@ If you are provided with a youtube link in the wrong format, make it fit one the
|
|
| 119 |
""",
|
| 120 |
)
|
| 121 |
youtube_transcript_reader_toolspec = LoadAndSearchToolSpec.from_defaults(youtube_transcript_reader_tool)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from llama_index.core.schema import ImageDocument, Document
|
| 2 |
from llama_index.core.tools import FunctionTool
|
| 3 |
from llama_index.core.tools.ondemand_loader_tool import OnDemandLoaderTool
|
| 4 |
from llama_index.core.tools.tool_spec.base import BaseToolSpec
|
|
|
|
| 7 |
from llama_index.multi_modal_llms.nebius import NebiusMultiModal
|
| 8 |
from llama_index.readers.web import SimpleWebPageReader
|
| 9 |
from llama_index.readers.youtube_transcript import YoutubeTranscriptReader
|
| 10 |
+
from llama_index.readers.papers import ArxivReader
|
| 11 |
from tavily import AsyncTavilyClient
|
| 12 |
from workflows import Context
|
| 13 |
|
|
|
|
| 29 |
return str(await client.search(query))
|
| 30 |
|
| 31 |
|
| 32 |
+
async def get_text_representation_of_additional_file(ctx: Context) -> str :
|
| 33 |
+
"""
|
| 34 |
+
Retrieves the text representation of an additional file stored in the llamaindex context.
|
| 35 |
+
|
| 36 |
+
If the retrieved file is not a valid `Document` instance, it produces a
|
| 37 |
+
message indicating the mismatched type. Otherwise, it retrieves the text content
|
| 38 |
+
from the `Document`.
|
| 39 |
+
|
| 40 |
+
Parameters
|
| 41 |
+
----------
|
| 42 |
+
ctx : Context
|
| 43 |
+
The llamaindex context object which contains the additional file.
|
| 44 |
+
|
| 45 |
+
Returns
|
| 46 |
+
-------
|
| 47 |
+
str
|
| 48 |
+
The text representation of the additional file if it is a `Document` instance;
|
| 49 |
+
otherwise, a descriptive message indicating the mismatched type.
|
| 50 |
+
"""
|
| 51 |
+
additional_file = await ctx.store.get("additional_file")
|
| 52 |
+
if not isinstance(additional_file, Document):
|
| 53 |
+
return f"The additional file is not a LlamaIndex Document but a {type(additional_file)} object. I cannot get text representation, you should try other tool."
|
| 54 |
+
|
| 55 |
+
text_representation = additional_file.get_text_content()
|
| 56 |
+
if not text_representation:
|
| 57 |
+
return f"The additional {additional_file.__class__.__name__} file does not have any text content. I cannot get text representation, you should try other tool."
|
| 58 |
+
return text_representation
|
| 59 |
+
|
| 60 |
+
|
| 61 |
async def vllm_ask_image_tool(ctx: Context, query: str) -> str:
|
| 62 |
"""
|
| 63 |
Asynchronously processes a visual-linguistic query paired with image data
|
|
|
|
| 149 |
""",
|
| 150 |
)
|
| 151 |
youtube_transcript_reader_toolspec = LoadAndSearchToolSpec.from_defaults(youtube_transcript_reader_tool)
|
| 152 |
+
|
| 153 |
+
|
| 154 |
+
research_paper_reader_tool = OnDemandLoaderTool.from_defaults(
|
| 155 |
+
ArxivReader(),
|
| 156 |
+
name="research_paper_reader_tool",
|
| 157 |
+
description=r"""
|
| 158 |
+
Gets a search query, return a list of Documents of the top corresponding scientific papers on Arxiv.
|
| 159 |
+
""",
|
| 160 |
+
)
|
| 161 |
+
research_paper_reader_toolspec = LoadAndSearchToolSpec.from_defaults(research_paper_reader_tool)
|
uv.lock
CHANGED
|
@@ -18,6 +18,7 @@ dependencies = [
|
|
| 18 |
{ name = "llama-index-llms-nebius" },
|
| 19 |
{ name = "llama-index-multi-modal-llms-mistralai" },
|
| 20 |
{ name = "llama-index-multi-modal-llms-nebius" },
|
|
|
|
| 21 |
{ name = "llama-index-readers-web" },
|
| 22 |
{ name = "llama-index-readers-youtube-transcript" },
|
| 23 |
{ name = "llama-index-tools-duckduckgo" },
|
|
@@ -46,6 +47,7 @@ requires-dist = [
|
|
| 46 |
{ name = "llama-index-llms-nebius", specifier = ">=0.1.2" },
|
| 47 |
{ name = "llama-index-multi-modal-llms-mistralai", specifier = ">=0.4.0" },
|
| 48 |
{ name = "llama-index-multi-modal-llms-nebius", specifier = ">=0.4.0" },
|
|
|
|
| 49 |
{ name = "llama-index-readers-web", specifier = ">=0.4.2" },
|
| 50 |
{ name = "llama-index-readers-youtube-transcript", specifier = ">=0.3.0" },
|
| 51 |
{ name = "llama-index-tools-duckduckgo", specifier = ">=0.3.0" },
|
|
@@ -298,6 +300,19 @@ wheels = [
|
|
| 298 |
{ url = "https://files.pythonhosted.org/packages/46/27/be2ead7273ecf3be0c5b3ebf9e4bccedcd49ab45a7909e82588f56189cd2/arize_phoenix_otel-0.12.1-py3-none-any.whl", hash = "sha256:85167dd061d7d4e14c98edd5733afe151da8027d69f2ecfe29a6aa2484906fa3", size = 13871, upload-time = "2025-06-24T15:58:33.702Z" },
|
| 299 |
]
|
| 300 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 301 |
[[package]]
|
| 302 |
name = "asttokens"
|
| 303 |
version = "3.0.0"
|
|
@@ -1666,6 +1681,20 @@ wheels = [
|
|
| 1666 |
{ url = "https://files.pythonhosted.org/packages/68/4f/e30d4257fe9e4224f5612b77fe99aaceddae411b2e74ca30534491de3e6f/llama_index_readers_llama_parse-0.4.0-py3-none-any.whl", hash = "sha256:574e48386f28d2c86c3f961ca4a4906910312f3400dd0c53014465bfbc6b32bf", size = 2472, upload-time = "2024-11-18T00:00:07.293Z" },
|
| 1667 |
]
|
| 1668 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1669 |
[[package]]
|
| 1670 |
name = "llama-index-readers-web"
|
| 1671 |
version = "0.4.2"
|
|
|
|
| 18 |
{ name = "llama-index-llms-nebius" },
|
| 19 |
{ name = "llama-index-multi-modal-llms-mistralai" },
|
| 20 |
{ name = "llama-index-multi-modal-llms-nebius" },
|
| 21 |
+
{ name = "llama-index-readers-papers" },
|
| 22 |
{ name = "llama-index-readers-web" },
|
| 23 |
{ name = "llama-index-readers-youtube-transcript" },
|
| 24 |
{ name = "llama-index-tools-duckduckgo" },
|
|
|
|
| 47 |
{ name = "llama-index-llms-nebius", specifier = ">=0.1.2" },
|
| 48 |
{ name = "llama-index-multi-modal-llms-mistralai", specifier = ">=0.4.0" },
|
| 49 |
{ name = "llama-index-multi-modal-llms-nebius", specifier = ">=0.4.0" },
|
| 50 |
+
{ name = "llama-index-readers-papers", specifier = ">=0.3.2" },
|
| 51 |
{ name = "llama-index-readers-web", specifier = ">=0.4.2" },
|
| 52 |
{ name = "llama-index-readers-youtube-transcript", specifier = ">=0.3.0" },
|
| 53 |
{ name = "llama-index-tools-duckduckgo", specifier = ">=0.3.0" },
|
|
|
|
| 300 |
{ url = "https://files.pythonhosted.org/packages/46/27/be2ead7273ecf3be0c5b3ebf9e4bccedcd49ab45a7909e82588f56189cd2/arize_phoenix_otel-0.12.1-py3-none-any.whl", hash = "sha256:85167dd061d7d4e14c98edd5733afe151da8027d69f2ecfe29a6aa2484906fa3", size = 13871, upload-time = "2025-06-24T15:58:33.702Z" },
|
| 301 |
]
|
| 302 |
|
| 303 |
+
[[package]]
|
| 304 |
+
name = "arxiv"
|
| 305 |
+
version = "2.2.0"
|
| 306 |
+
source = { registry = "https://pypi.org/simple" }
|
| 307 |
+
dependencies = [
|
| 308 |
+
{ name = "feedparser" },
|
| 309 |
+
{ name = "requests" },
|
| 310 |
+
]
|
| 311 |
+
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" }
|
| 312 |
+
wheels = [
|
| 313 |
+
{ 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" },
|
| 314 |
+
]
|
| 315 |
+
|
| 316 |
[[package]]
|
| 317 |
name = "asttokens"
|
| 318 |
version = "3.0.0"
|
|
|
|
| 1681 |
{ url = "https://files.pythonhosted.org/packages/68/4f/e30d4257fe9e4224f5612b77fe99aaceddae411b2e74ca30534491de3e6f/llama_index_readers_llama_parse-0.4.0-py3-none-any.whl", hash = "sha256:574e48386f28d2c86c3f961ca4a4906910312f3400dd0c53014465bfbc6b32bf", size = 2472, upload-time = "2024-11-18T00:00:07.293Z" },
|
| 1682 |
]
|
| 1683 |
|
| 1684 |
+
[[package]]
|
| 1685 |
+
name = "llama-index-readers-papers"
|
| 1686 |
+
version = "0.3.2"
|
| 1687 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1688 |
+
dependencies = [
|
| 1689 |
+
{ name = "arxiv" },
|
| 1690 |
+
{ name = "defusedxml" },
|
| 1691 |
+
{ name = "llama-index-core" },
|
| 1692 |
+
]
|
| 1693 |
+
sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/9340fd0ac123508cbcdd9673f153aa47d5ab39c66b7af192fdd13d1c5b02/llama_index_readers_papers-0.3.2.tar.gz", hash = "sha256:825bbc1875744a7e3e84ed8d2776eaba848c57357af1ec84984325a83a742ac1", size = 5238, upload-time = "2025-04-03T20:00:24.86Z" }
|
| 1694 |
+
wheels = [
|
| 1695 |
+
{ url = "https://files.pythonhosted.org/packages/79/2e/6a5dea06fb2d19b499f8db92e29855d32fa4c529bce5360b8e689b866781/llama_index_readers_papers-0.3.2-py3-none-any.whl", hash = "sha256:9166790e26f968db010f1f87c31ef335d0e78e583348ac749a632cd0c8540bea", size = 6774, upload-time = "2025-04-03T20:00:24.05Z" },
|
| 1696 |
+
]
|
| 1697 |
+
|
| 1698 |
[[package]]
|
| 1699 |
name = "llama-index-readers-web"
|
| 1700 |
version = "0.4.2"
|