vaibhav-vibe commited on
Commit
6254bcb
·
1 Parent(s): 7e238a2

Adding Tools

Browse files
Files changed (1) hide show
  1. agent.py +56 -1
agent.py CHANGED
@@ -1,11 +1,66 @@
1
  import os
2
  from dotenv import load_dotenv
3
  from langchain_core.messages import SystemMessage, HumanMessage
 
 
 
 
4
 
5
  load_dotenv()
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  with open("system_prompt.txt", "r", encoding="utf-8") as f:
8
  system_prompt = f.read()
9
 
10
  sys_msg = SystemMessage(system_prompt)
11
- print(sys_msg)
 
 
 
1
  import os
2
  from dotenv import load_dotenv
3
  from langchain_core.messages import SystemMessage, HumanMessage
4
+ from langchain_community.document_loaders import WikipediaLoader, ArxivLoader
5
+ from langchain_community.tools.tavily_search import TavilySearchResults
6
+ from langchain_core.tools import tool
7
+ from supabase.client import Client, create_client
8
 
9
  load_dotenv()
10
 
11
+
12
+ @tool
13
+ def wikipedia_search(query: str) -> str:
14
+ """Search Wikipedia for a query and return maximum 2 results
15
+ Args:
16
+ query: The search string
17
+ """
18
+ docs = WikipediaLoader(query=query, load_max_docs=2).load()
19
+ all_search_docs = "\n\n---\n\n".join(
20
+ [
21
+ f'<Document source="{doc.metadata["source"]}" page="{doc.metadata.get("page", "")}"/>\n{doc.page_content}\n</Document>'
22
+ for doc in docs
23
+ ]
24
+ )
25
+ return {"wikipedia_results": all_search_docs}
26
+
27
+
28
+ @tool
29
+ def web_search(query: str) -> str:
30
+ """Search Tavily for a query and return maximum 3 results.
31
+
32
+ Args:
33
+ query: The search query."""
34
+ docs = TavilySearchResults(max_results=3).invoke(query=query)
35
+ all_search_docs = "\n\n---\n\n".join(
36
+ [
37
+ f'<Document source="{doc.metadata["source"]}" page="{doc.metadata.get("page", "")}"/>\n{doc.page_content}\n</Document>'
38
+ for doc in docs
39
+ ]
40
+ )
41
+ return {"web_results": all_search_docs}
42
+
43
+
44
+ @tool
45
+ def arvix_search(query: str) -> str:
46
+ """Search Arxiv for a query and return maximum 3 result.
47
+
48
+ Args:
49
+ query: The search query."""
50
+ search_docs = ArxivLoader(query=query, load_max_docs=3).load()
51
+ formatted_search_docs = "\n\n---\n\n".join(
52
+ [
53
+ f'<Document source="{doc.metadata["source"]}" page="{doc.metadata.get("page", "")}"/>\n{doc.page_content[:1000]}\n</Document>'
54
+ for doc in search_docs
55
+ ]
56
+ )
57
+ return {"arvix_results": formatted_search_docs}
58
+
59
+
60
  with open("system_prompt.txt", "r", encoding="utf-8") as f:
61
  system_prompt = f.read()
62
 
63
  sys_msg = SystemMessage(system_prompt)
64
+ supabase: Client = create_client(
65
+ os.environ.get("SUPABASE_URL"), os.environ.get("SUPABASE_SERVICE_KEY")
66
+ )