Upload 2 files
Browse files- agentic/langgraph_agent.py +2 -1
- agentic/tools.py +36 -4
agentic/langgraph_agent.py
CHANGED
|
@@ -40,7 +40,8 @@ class LangGraphAgent4GAIA:
|
|
| 40 |
add_list,
|
| 41 |
web_search,
|
| 42 |
arxiv_search,
|
| 43 |
-
wiki_search
|
|
|
|
| 44 |
]
|
| 45 |
|
| 46 |
# 1. Build graph
|
|
|
|
| 40 |
add_list,
|
| 41 |
web_search,
|
| 42 |
arxiv_search,
|
| 43 |
+
wiki_search,
|
| 44 |
+
read_xlsx_file
|
| 45 |
]
|
| 46 |
|
| 47 |
# 1. Build graph
|
agentic/tools.py
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
from langchain_core.tools import tool
|
| 2 |
from langchain_community.tools import DuckDuckGoSearchResults
|
| 3 |
from langchain_community.tools.tavily_search import TavilySearchResults
|
| 4 |
from langchain_community.document_loaders import ArxivLoader, WikipediaLoader
|
| 5 |
-
from typing import List
|
| 6 |
|
| 7 |
@tool
|
| 8 |
def add(a: int, b: int) -> int:
|
|
@@ -78,7 +81,7 @@ def web_search(query: str) -> str:
|
|
| 78 |
search_docs = TavilySearchResults(max_results=3).invoke({'query': query})
|
| 79 |
formatted_search_docs = "\n\n---\n\n".join(
|
| 80 |
[
|
| 81 |
-
f'<Document
|
| 82 |
for doc in search_docs
|
| 83 |
])
|
| 84 |
return f"web_results:\n{formatted_search_docs}"
|
|
@@ -93,7 +96,7 @@ def arxiv_search(query: str) -> str:
|
|
| 93 |
search_docs = ArxivLoader(query=query, load_max_docs=3).load()
|
| 94 |
formatted_search_docs = "\n\n---\n\n".join(
|
| 95 |
[
|
| 96 |
-
f'<Document
|
| 97 |
for doc in search_docs
|
| 98 |
])
|
| 99 |
return f"arxiv_content:\n{formatted_search_docs}"
|
|
@@ -108,7 +111,36 @@ def wiki_search(query: str) -> str:
|
|
| 108 |
search_docs = WikipediaLoader(query=query, load_max_docs=2).load()
|
| 109 |
formatted_search_docs = "\n\n---\n\n".join(
|
| 110 |
[
|
| 111 |
-
f'<Document
|
| 112 |
for doc in search_docs
|
| 113 |
])
|
| 114 |
return f"wikipedia_content:\n{formatted_search_docs}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import requests
|
| 2 |
+
import pandas as pd
|
| 3 |
+
from io import BytesIO
|
| 4 |
+
from typing import List
|
| 5 |
from langchain_core.tools import tool
|
| 6 |
from langchain_community.tools import DuckDuckGoSearchResults
|
| 7 |
from langchain_community.tools.tavily_search import TavilySearchResults
|
| 8 |
from langchain_community.document_loaders import ArxivLoader, WikipediaLoader
|
|
|
|
| 9 |
|
| 10 |
@tool
|
| 11 |
def add(a: int, b: int) -> int:
|
|
|
|
| 81 |
search_docs = TavilySearchResults(max_results=3).invoke({'query': query})
|
| 82 |
formatted_search_docs = "\n\n---\n\n".join(
|
| 83 |
[
|
| 84 |
+
f'<Document title="{doc["title"]}>"\n{doc["content"]}\n</Document>'
|
| 85 |
for doc in search_docs
|
| 86 |
])
|
| 87 |
return f"web_results:\n{formatted_search_docs}"
|
|
|
|
| 96 |
search_docs = ArxivLoader(query=query, load_max_docs=3).load()
|
| 97 |
formatted_search_docs = "\n\n---\n\n".join(
|
| 98 |
[
|
| 99 |
+
f'<Document title="{doc.metadata["Title"]}>"\n{doc.metadata["Summary"]}\n</Document>'
|
| 100 |
for doc in search_docs
|
| 101 |
])
|
| 102 |
return f"arxiv_content:\n{formatted_search_docs}"
|
|
|
|
| 111 |
search_docs = WikipediaLoader(query=query, load_max_docs=2).load()
|
| 112 |
formatted_search_docs = "\n\n---\n\n".join(
|
| 113 |
[
|
| 114 |
+
f'<Document title="{doc.metadata["Title"]}>"\n{doc.metadata["Summary"]}\n</Document>'
|
| 115 |
for doc in search_docs
|
| 116 |
])
|
| 117 |
return f"wikipedia_content:\n{formatted_search_docs}"
|
| 118 |
+
|
| 119 |
+
|
| 120 |
+
@tool
|
| 121 |
+
def read_xlsx_file(file_location: str) -> str:
|
| 122 |
+
"""Read an .xlsx file from a path and return its contents as a string.
|
| 123 |
+
|
| 124 |
+
Args:
|
| 125 |
+
file_location (str): Path to the xlsx file.
|
| 126 |
+
"""
|
| 127 |
+
# Build the full file URL
|
| 128 |
+
base_name = file_location.split(".")[0]
|
| 129 |
+
file_url = f"https://agents-course-unit4-scoring.hf.space/files/{base_name}"
|
| 130 |
+
|
| 131 |
+
# Download the file
|
| 132 |
+
response = requests.get(file_url)
|
| 133 |
+
if response.status_code != 200:
|
| 134 |
+
raise RuntimeError(f"Failed to download file: {file_url}")
|
| 135 |
+
|
| 136 |
+
# Load the xlsx file into a pandas ExcelFile object
|
| 137 |
+
df_dict = pd.read_excel(BytesIO(response.content), sheet_name=None)
|
| 138 |
+
|
| 139 |
+
# Convert all sheets to a single formatted string
|
| 140 |
+
text_output = ""
|
| 141 |
+
for sheet_name, sheet_df in df_dict.items():
|
| 142 |
+
text_output += f"--- Sheet: {sheet_name} ---\n"
|
| 143 |
+
text_output += sheet_df.to_string(index=False)
|
| 144 |
+
text_output += "\n\n"
|
| 145 |
+
|
| 146 |
+
return f"xlsx file content:\n{text_output.strip()}"
|