From 083b5b7d66369443354ebd92ba650af81af1b632 Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Tue, 21 Feb 2023 13:22:23 -0800 Subject: [PATCH] datetime tool --- langchain/agents/load_tools.py | 6 ++++++ langchain/tools/datetime.py | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 langchain/tools/datetime.py diff --git a/langchain/agents/load_tools.py b/langchain/agents/load_tools.py index 606bc1279ff..e7f98229477 100644 --- a/langchain/agents/load_tools.py +++ b/langchain/agents/load_tools.py @@ -13,6 +13,7 @@ from langchain.python import PythonREPL from langchain.requests import RequestsWrapper from langchain.tools.base import BaseTool from langchain.tools.bing_search.tool import BingSearchRun +from langchain.tools.datetime import DateTimeTool from langchain.tools.google_search.tool import GoogleSearchResults, GoogleSearchRun from langchain.tools.wolfram_alpha.tool import WolframAlphaQueryRun from langchain.utilities.bash import BashProcess @@ -48,10 +49,15 @@ def _get_terminal() -> BaseTool: ) +def _get_datetime() -> BaseTool: + return DateTimeTool() + + _BASE_TOOLS = { "python_repl": _get_python_repl, "requests": _get_requests, "terminal": _get_terminal, + "datetime": _get_datetime, } diff --git a/langchain/tools/datetime.py b/langchain/tools/datetime.py new file mode 100644 index 00000000000..f06c3344a56 --- /dev/null +++ b/langchain/tools/datetime.py @@ -0,0 +1,24 @@ +"""Tool to get the current date and time.""" +from datetime import datetime + +from langchain.tools.base import BaseTool + + +class DateTimeTool(BaseTool): + """Tool to get the current date and time.""" + + name = "DateTime" + description = ( + "A method to get the CURRENT date and time. " + "The input to this should be an empty string." + ) + + def _run(self, query: str) -> str: + """Use the DateTime tool.""" + now = datetime.now() + dt_string = now.strftime("%A, %m/%d/%Y %H:%M:%S") + return f"The current date and time is: {dt_string}" + + async def _arun(self, query: str) -> str: + """Use the DateTime tool asynchronously.""" + raise NotImplementedError("DateTimeTool does not support async")