Source code for langchain.agents.tools

"""Interface for tools."""
from typing import List, Optional

from langchain_core.tools import BaseTool, Tool, tool

from langchain.callbacks.manager import (
    AsyncCallbackManagerForToolRun,
    CallbackManagerForToolRun,
)


[docs]class InvalidTool(BaseTool): """Tool that is run when invalid tool name is encountered by agent.""" name: str = "invalid_tool" description: str = "Called when tool name is invalid. Suggests valid tool names." def _run( self, requested_tool_name: str, available_tool_names: List[str], run_manager: Optional[CallbackManagerForToolRun] = None, ) -> str: """Use the tool.""" available_tool_names_str = ", ".join([tool for tool in available_tool_names]) return ( f"{requested_tool_name} is not a valid tool, " f"try one of [{available_tool_names_str}]." ) async def _arun( self, requested_tool_name: str, available_tool_names: List[str], run_manager: Optional[AsyncCallbackManagerForToolRun] = None, ) -> str: """Use the tool asynchronously.""" available_tool_names_str = ", ".join([tool for tool in available_tool_names]) return ( f"{requested_tool_name} is not a valid tool, " f"try one of [{available_tool_names_str}]." )
__all__ = ["InvalidTool", "BaseTool", "tool", "Tool"]