Prasanthkumar commited on
Commit
91e0f03
·
verified ·
1 Parent(s): bf1d4e1

Update Web_Search_tools.py

Browse files
Files changed (1) hide show
  1. Web_Search_tools.py +50 -0
Web_Search_tools.py CHANGED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from supabase.client import Client, create_client
3
+ from langchain_core.tools import tool
4
+ from langchain_community.tools.tavily_search import TavilySearchResults
5
+ from langchain_community.document_loaders import WikipediaLoader
6
+ from langchain_community.document_loaders import ArxivLoader
7
+ from langchain_huggingface import HuggingFaceEmbeddings
8
+ from langchain_community.vectorstores import SupabaseVectorStore
9
+ from langchain.tools.retriever import create_retriever_tool
10
+
11
+
12
+ @tool
13
+ def wiki_search(query: str) -> str:
14
+ """Search Wikipedia for a query and return maximum 2 results.
15
+
16
+ Args:
17
+ query: The search query."""
18
+ search_docs = WikipediaLoader(query=query, load_max_docs=2).load()
19
+ formatted_search_docs = "\n\n---\n\n".join([f'<Document source="{doc.metadata["source"]}" page="{doc.metadata.get("page", "")}"/>\n{doc.page_content}\n</Document>' for doc in search_docs])
20
+ return {"wiki_results": formatted_search_docs}
21
+
22
+ @tool
23
+ def web_search(query: str) -> str:
24
+ """Search Tavily for a query and return maximum 3 results.
25
+
26
+ Args:
27
+ query: The search query."""
28
+ search_docs = TavilySearchResults(max_results=3).invoke(query=query)
29
+ formatted_search_docs = "\n\n---\n\n".join([f'<Document source="{doc.metadata["source"]}" page="{doc.metadata.get("page", "")}"/>\n{doc.page_content}\n</Document>' for doc in search_docs])
30
+ return {"web_results": formatted_search_docs}
31
+
32
+ @tool
33
+ def arxiv_search(query: str) -> str:
34
+ """Search Arxiv for a query and return maximum 3 result.
35
+
36
+ Args:
37
+ query: The search query."""
38
+ search_docs = ArxivLoader(query=query, load_max_docs=3).load()
39
+ formatted_search_docs = "\n\n---\n\n".join([f'<Document source="{doc.metadata["source"]}" page="{doc.metadata.get("page", "")}"/>\n{doc.page_content[:1000]}\n</Document>' for doc in search_docs])
40
+ return {"arxiv_results": formatted_search_docs}
41
+
42
+ @tool
43
+ def similar_question_search(question: str) -> str:
44
+ """Search the vector database for similar questions and return the first results.
45
+
46
+ Args:
47
+ question: the question human provided."""
48
+ matched_docs = vector_store.similarity_search(question, 3)
49
+ formatted_search_docs = "\n\n---\n\n".join([f'<Document source="{doc.metadata["source"]}" page="{doc.metadata.get("page", "")}"/>\n{doc.page_content[:1000]}\n</Document>' for doc in matched_docs])
50
+ return {"similar_questions": formatted_search_docs}