akrstova commited on
Commit
32aa30b
·
1 Parent(s): 8bb911a

Add Arxiv search tool

Browse files
Files changed (2) hide show
  1. agent.py +2 -2
  2. tools/search_tools.py +15 -1
agent.py CHANGED
@@ -12,7 +12,7 @@ from langchain.tools.retriever import create_retriever_tool
12
  from supabase.client import Client, create_client
13
 
14
  from tools.math_tools import add, subtract, multiply, divide, modulus, power, sqrt
15
- from tools.search_tools import search_wikipedia, web_search
16
  from tools.image_video_tools import query_image
17
  from tools.file_tools import analyze_excel_file, execute_python_code
18
 
@@ -43,7 +43,7 @@ def build_graph():
43
  max_retries=2,
44
  google_api_key=os.getenv("GOOGLE_API_KEY") # Get API key from environment variable
45
  )
46
- tools = [add, subtract, multiply, divide, modulus, power, sqrt, web_search, search_wikipedia, query_image, analyze_excel_file, execute_python_code]
47
 
48
  llm_with_tools = llm.bind_tools(tools)
49
 
 
12
  from supabase.client import Client, create_client
13
 
14
  from tools.math_tools import add, subtract, multiply, divide, modulus, power, sqrt
15
+ from tools.search_tools import search_wikipedia, web_search, arxiv_search
16
  from tools.image_video_tools import query_image
17
  from tools.file_tools import analyze_excel_file, execute_python_code
18
 
 
43
  max_retries=2,
44
  google_api_key=os.getenv("GOOGLE_API_KEY") # Get API key from environment variable
45
  )
46
+ tools = [add, subtract, multiply, divide, modulus, power, sqrt, web_search, arxiv_search, search_wikipedia, query_image, analyze_excel_file, execute_python_code]
47
 
48
  llm_with_tools = llm.bind_tools(tools)
49
 
tools/search_tools.py CHANGED
@@ -1,7 +1,7 @@
1
  """This module contains tools for searching external sources."""
2
  from langchain_core.tools import tool
3
  from langchain_community.tools.tavily_search import TavilySearchResults
4
- from langchain_community.document_loaders import WikipediaLoader
5
 
6
 
7
  @tool
@@ -44,4 +44,18 @@ def search_wikipedia(query: str) -> str:
44
  return docs[0].page_content
45
  except Exception as e:
46
  raise ValueError(f"Error searching Wikipedia: {str(e)}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
 
1
  """This module contains tools for searching external sources."""
2
  from langchain_core.tools import tool
3
  from langchain_community.tools.tavily_search import TavilySearchResults
4
+ from langchain_community.document_loaders import WikipediaLoader, ArxivLoader
5
 
6
 
7
  @tool
 
44
  return docs[0].page_content
45
  except Exception as e:
46
  raise ValueError(f"Error searching Wikipedia: {str(e)}")
47
+
48
+ @tool
49
+ def arxiv_search(query: str) -> str:
50
+ """Search Arxiv for a query and return maximum 3 result.
51
+
52
+ Args:
53
+ query: The search query."""
54
+ search_docs = ArxivLoader(query=query, load_max_docs=3).load()
55
+ formatted_search_docs = "\n\n---\n\n".join(
56
+ [
57
+ f'<Document source="{doc.metadata["source"]}" page="{doc.metadata.get("page", "")}"/>\n{doc.page_content[:1000]}\n</Document>'
58
+ for doc in search_docs
59
+ ])
60
+ return {"arvix_results": formatted_search_docs}
61