Final_Assignment / tools /tool_collection_common.py
Alfred828's picture
Create tools/tool_collection_common.py
c15b707 verified
from langchain.tools import StructuredTool
from langchain_community.tools import DuckDuckGoSearchRun
from agents.wiki_agent import WikipediaEnToolAgentInput, wikipedia_en_tool_agent
from config import settings
from tools.encyclopedia import EncyclopediaRetrieveInput, EncyclopediaRetriever
from tools.get_hub_stats import HubStatInput, get_hub_stats
from tools.get_weather import WeatherInput, get_weather
class ToolsCollection:
@staticmethod
def get_tools(needed_tools: list[str]) -> list:
tools = []
for nt in needed_tools:
if nt == "search_tool":
tools.append(DuckDuckGoSearchRun())
elif nt == "get_weather":
tools.append(
StructuredTool(
name="get_weather",
func=get_weather,
description=get_weather.__doc__,
args_schema=WeatherInput,
)
)
elif nt == "hub_stats_tool":
tools.append(
StructuredTool(
name="hub_stats_tool",
func=get_hub_stats,
description=get_hub_stats.__doc__,
args_schema=HubStatInput,
)
)
elif nt == "wikipedia_en_tool_agent":
tools.append(
StructuredTool(
name="wikipedia_en_tool_agent",
func=wikipedia_en_tool_agent,
description=wikipedia_en_tool_agent.__doc__,
args_schema=WikipediaEnToolAgentInput,
)
)
elif nt == "EncyclopediaRetriever":
retriver = EncyclopediaRetriever(["gaia"], settings.PROJ_PATH)
tools.append(
StructuredTool(
name="get_related_question_from_encyclopedia",
func=retriver.get_related_question,
description=retriver.get_related_question.__doc__,
args_schema=EncyclopediaRetrieveInput,
)
)
return tools