codekingpro/portable-devtools
114k
1"""Tool for asking human input."""2 3from typing import Callable, Optional4 5from langchain_core.callbacks import CallbackManagerForToolRun6from langchain_core.tools import BaseTool7from pydantic import Field8 9 10def _print_func(text: str) -> None:11 print("\n") # noqa: T20112 print(text) # noqa: T20113 14 15class HumanInputRun(BaseTool):16 """Tool that asks user for input."""17 18 name: str = "human"19 description: str = (20 "You can ask a human for guidance when you think you "21 "got stuck or you are not sure what to do next. "22 "The input should be a question for the human."23 )24 prompt_func: Callable[[str], None] = Field(default_factory=lambda: _print_func)25 input_func: Callable = Field(default_factory=lambda: input)26 27 def _run(28 self,29 query: str,30 run_manager: Optional[CallbackManagerForToolRun] = None,31 ) -> str:32 """Use the Human input tool."""33 self.prompt_func(query)34 return self.input_func()35 