mirror of
https://github.com/langchain-ai/langchain.git
synced 2026-10-05 09:25:14 +03:00
Updates docs and cookbooks to import ChatOpenAI, OpenAI, and OpenAI Embeddings from `langchain_openai` There are likely more --------- Co-authored-by: Harrison Chase <hw.chase.17@gmail.com>
34 KiB
34 KiB
In [1]:
from langchain.callbacks import HumanApprovalCallbackHandler
from langchain.tools import ShellToolIn [19]:
tool = ShellTool()In [20]:
print(tool.run("echo Hello World!"))Hello World!
In [10]:
tool = ShellTool(callbacks=[HumanApprovalCallbackHandler()])In [15]:
print(tool.run("ls /usr"))Do you approve of the following input? Anything except 'Y'/'Yes' (case-insensitive) will be treated as a no. ls /usr yes [35mX11[m[m [35mX11R6[m[m [1m[36mbin[m[m [1m[36mlib[m[m [1m[36mlibexec[m[m [1m[36mlocal[m[m [1m[36msbin[m[m [1m[36mshare[m[m [1m[36mstandalone[m[m
In [17]:
print(tool.run("ls /private"))Do you approve of the following input? Anything except 'Y'/'Yes' (case-insensitive) will be treated as a no. ls /private no
[0;31m---------------------------------------------------------------------------[0m
[0;31mHumanRejectedException[0m Traceback (most recent call last)
Cell [0;32mIn[17], line 1[0m
[0;32m----> 1[0m [38;5;28mprint[39m([43mtool[49m[38;5;241;43m.[39;49m[43mrun[49m[43m([49m[38;5;124;43m"[39;49m[38;5;124;43mls /private[39;49m[38;5;124;43m"[39;49m[43m)[49m)
File [0;32m~/langchain/langchain/tools/base.py:257[0m, in [0;36mBaseTool.run[0;34m(self, tool_input, verbose, start_color, color, callbacks, **kwargs)[0m
[1;32m 255[0m [38;5;66;03m# TODO: maybe also pass through run_manager is _run supports kwargs[39;00m
[1;32m 256[0m new_arg_supported [38;5;241m=[39m signature([38;5;28mself[39m[38;5;241m.[39m_run)[38;5;241m.[39mparameters[38;5;241m.[39mget([38;5;124m"[39m[38;5;124mrun_manager[39m[38;5;124m"[39m)
[0;32m--> 257[0m run_manager [38;5;241m=[39m [43mcallback_manager[49m[38;5;241;43m.[39;49m[43mon_tool_start[49m[43m([49m
[1;32m 258[0m [43m [49m[43m{[49m[38;5;124;43m"[39;49m[38;5;124;43mname[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mname[49m[43m,[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mdescription[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mdescription[49m[43m}[49m[43m,[49m
[1;32m 259[0m [43m [49m[43mtool_input[49m[43m [49m[38;5;28;43;01mif[39;49;00m[43m [49m[38;5;28;43misinstance[39;49m[43m([49m[43mtool_input[49m[43m,[49m[43m [49m[38;5;28;43mstr[39;49m[43m)[49m[43m [49m[38;5;28;43;01melse[39;49;00m[43m [49m[38;5;28;43mstr[39;49m[43m([49m[43mtool_input[49m[43m)[49m[43m,[49m
[1;32m 260[0m [43m [49m[43mcolor[49m[38;5;241;43m=[39;49m[43mstart_color[49m[43m,[49m
[1;32m 261[0m [43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m,[49m
[1;32m 262[0m [43m[49m[43m)[49m
[1;32m 263[0m [38;5;28;01mtry[39;00m:
[1;32m 264[0m tool_args, tool_kwargs [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39m_to_args_and_kwargs(parsed_input)
File [0;32m~/langchain/langchain/callbacks/manager.py:672[0m, in [0;36mCallbackManager.on_tool_start[0;34m(self, serialized, input_str, run_id, parent_run_id, **kwargs)[0m
[1;32m 669[0m [38;5;28;01mif[39;00m run_id [38;5;129;01mis[39;00m [38;5;28;01mNone[39;00m:
[1;32m 670[0m run_id [38;5;241m=[39m uuid4()
[0;32m--> 672[0m [43m_handle_event[49m[43m([49m
[1;32m 673[0m [43m [49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mhandlers[49m[43m,[49m
[1;32m 674[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mon_tool_start[39;49m[38;5;124;43m"[39;49m[43m,[49m
[1;32m 675[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mignore_agent[39;49m[38;5;124;43m"[39;49m[43m,[49m
[1;32m 676[0m [43m [49m[43mserialized[49m[43m,[49m
[1;32m 677[0m [43m [49m[43minput_str[49m[43m,[49m
[1;32m 678[0m [43m [49m[43mrun_id[49m[38;5;241;43m=[39;49m[43mrun_id[49m[43m,[49m
[1;32m 679[0m [43m [49m[43mparent_run_id[49m[38;5;241;43m=[39;49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mparent_run_id[49m[43m,[49m
[1;32m 680[0m [43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m,[49m
[1;32m 681[0m [43m[49m[43m)[49m
[1;32m 683[0m [38;5;28;01mreturn[39;00m CallbackManagerForToolRun(
[1;32m 684[0m run_id, [38;5;28mself[39m[38;5;241m.[39mhandlers, [38;5;28mself[39m[38;5;241m.[39minheritable_handlers, [38;5;28mself[39m[38;5;241m.[39mparent_run_id
[1;32m 685[0m )
File [0;32m~/langchain/langchain/callbacks/manager.py:157[0m, in [0;36m_handle_event[0;34m(handlers, event_name, ignore_condition_name, *args, **kwargs)[0m
[1;32m 155[0m [38;5;28;01mexcept[39;00m [38;5;167;01mException[39;00m [38;5;28;01mas[39;00m e:
[1;32m 156[0m [38;5;28;01mif[39;00m handler[38;5;241m.[39mraise_error:
[0;32m--> 157[0m [38;5;28;01mraise[39;00m e
[1;32m 158[0m logging[38;5;241m.[39mwarning([38;5;124mf[39m[38;5;124m"[39m[38;5;124mError in [39m[38;5;132;01m{[39;00mevent_name[38;5;132;01m}[39;00m[38;5;124m callback: [39m[38;5;132;01m{[39;00me[38;5;132;01m}[39;00m[38;5;124m"[39m)
File [0;32m~/langchain/langchain/callbacks/manager.py:139[0m, in [0;36m_handle_event[0;34m(handlers, event_name, ignore_condition_name, *args, **kwargs)[0m
[1;32m 135[0m [38;5;28;01mtry[39;00m:
[1;32m 136[0m [38;5;28;01mif[39;00m ignore_condition_name [38;5;129;01mis[39;00m [38;5;28;01mNone[39;00m [38;5;129;01mor[39;00m [38;5;129;01mnot[39;00m [38;5;28mgetattr[39m(
[1;32m 137[0m handler, ignore_condition_name
[1;32m 138[0m ):
[0;32m--> 139[0m [38;5;28;43mgetattr[39;49m[43m([49m[43mhandler[49m[43m,[49m[43m [49m[43mevent_name[49m[43m)[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m
[1;32m 140[0m [38;5;28;01mexcept[39;00m [38;5;167;01mNotImplementedError[39;00m [38;5;28;01mas[39;00m e:
[1;32m 141[0m [38;5;28;01mif[39;00m event_name [38;5;241m==[39m [38;5;124m"[39m[38;5;124mon_chat_model_start[39m[38;5;124m"[39m:
File [0;32m~/langchain/langchain/callbacks/human.py:48[0m, in [0;36mHumanApprovalCallbackHandler.on_tool_start[0;34m(self, serialized, input_str, run_id, parent_run_id, **kwargs)[0m
[1;32m 38[0m [38;5;28;01mdef[39;00m [38;5;21mon_tool_start[39m(
[1;32m 39[0m [38;5;28mself[39m,
[1;32m 40[0m serialized: Dict[[38;5;28mstr[39m, Any],
[0;32m (...)[0m
[1;32m 45[0m [38;5;241m*[39m[38;5;241m*[39mkwargs: Any,
[1;32m 46[0m ) [38;5;241m-[39m[38;5;241m>[39m Any:
[1;32m 47[0m [38;5;28;01mif[39;00m [38;5;28mself[39m[38;5;241m.[39m_should_check(serialized) [38;5;129;01mand[39;00m [38;5;129;01mnot[39;00m [38;5;28mself[39m[38;5;241m.[39m_approve(input_str):
[0;32m---> 48[0m [38;5;28;01mraise[39;00m HumanRejectedException(
[1;32m 49[0m [38;5;124mf[39m[38;5;124m"[39m[38;5;124mInputs [39m[38;5;132;01m{[39;00minput_str[38;5;132;01m}[39;00m[38;5;124m to tool [39m[38;5;132;01m{[39;00mserialized[38;5;132;01m}[39;00m[38;5;124m were rejected.[39m[38;5;124m"[39m
[1;32m 50[0m )
[0;31mHumanRejectedException[0m: Inputs ls /private to tool {'name': 'terminal', 'description': 'Run shell commands on this MacOS machine.'} were rejected.In [ ]:
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain_openai import OpenAIIn [33]:
def _should_check(serialized_obj: dict) -> bool:
# Only require approval on ShellTool.
return serialized_obj.get("name") == "terminal"
def _approve(_input: str) -> bool:
if _input == "echo 'Hello World'":
return True
msg = (
"Do you approve of the following input? "
"Anything except 'Y'/'Yes' (case-insensitive) will be treated as a no."
)
msg += "\n\n" + _input + "\n"
resp = input(msg)
return resp.lower() in ("yes", "y")
callbacks = [HumanApprovalCallbackHandler(should_check=_should_check, approve=_approve)]In [34]:
llm = OpenAI(temperature=0)
tools = load_tools(["wikipedia", "llm-math", "terminal"], llm=llm)
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
)In [38]:
agent.run(
"It's 2023 now. How many years ago did Konrad Adenauer become Chancellor of Germany.",
callbacks=callbacks,
)Out [38]:
'Konrad Adenauer became Chancellor of Germany in 1949, 74 years ago.'
In [36]:
agent.run("print 'Hello World' in the terminal", callbacks=callbacks)Out [36]:
'Hello World'
In [39]:
agent.run("list all directories in /private", callbacks=callbacks)Do you approve of the following input? Anything except 'Y'/'Yes' (case-insensitive) will be treated as a no. ls /private no
[0;31m---------------------------------------------------------------------------[0m
[0;31mHumanRejectedException[0m Traceback (most recent call last)
Cell [0;32mIn[39], line 1[0m
[0;32m----> 1[0m [43magent[49m[38;5;241;43m.[39;49m[43mrun[49m[43m([49m[38;5;124;43m"[39;49m[38;5;124;43mlist all directories in /private[39;49m[38;5;124;43m"[39;49m[43m,[49m[43m [49m[43mcallbacks[49m[38;5;241;43m=[39;49m[43mcallbacks[49m[43m)[49m
File [0;32m~/langchain/langchain/chains/base.py:236[0m, in [0;36mChain.run[0;34m(self, callbacks, *args, **kwargs)[0m
[1;32m 234[0m [38;5;28;01mif[39;00m [38;5;28mlen[39m(args) [38;5;241m!=[39m [38;5;241m1[39m:
[1;32m 235[0m [38;5;28;01mraise[39;00m [38;5;167;01mValueError[39;00m([38;5;124m"[39m[38;5;124m`run` supports only one positional argument.[39m[38;5;124m"[39m)
[0;32m--> 236[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[43m([49m[43margs[49m[43m[[49m[38;5;241;43m0[39;49m[43m][49m[43m,[49m[43m [49m[43mcallbacks[49m[38;5;241;43m=[39;49m[43mcallbacks[49m[43m)[49m[[38;5;28mself[39m[38;5;241m.[39moutput_keys[[38;5;241m0[39m]]
[1;32m 238[0m [38;5;28;01mif[39;00m kwargs [38;5;129;01mand[39;00m [38;5;129;01mnot[39;00m args:
[1;32m 239[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m(kwargs, callbacks[38;5;241m=[39mcallbacks)[[38;5;28mself[39m[38;5;241m.[39moutput_keys[[38;5;241m0[39m]]
File [0;32m~/langchain/langchain/chains/base.py:140[0m, in [0;36mChain.__call__[0;34m(self, inputs, return_only_outputs, callbacks)[0m
[1;32m 138[0m [38;5;28;01mexcept[39;00m ([38;5;167;01mKeyboardInterrupt[39;00m, [38;5;167;01mException[39;00m) [38;5;28;01mas[39;00m e:
[1;32m 139[0m run_manager[38;5;241m.[39mon_chain_error(e)
[0;32m--> 140[0m [38;5;28;01mraise[39;00m e
[1;32m 141[0m run_manager[38;5;241m.[39mon_chain_end(outputs)
[1;32m 142[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39mprep_outputs(inputs, outputs, return_only_outputs)
File [0;32m~/langchain/langchain/chains/base.py:134[0m, in [0;36mChain.__call__[0;34m(self, inputs, return_only_outputs, callbacks)[0m
[1;32m 128[0m run_manager [38;5;241m=[39m callback_manager[38;5;241m.[39mon_chain_start(
[1;32m 129[0m {[38;5;124m"[39m[38;5;124mname[39m[38;5;124m"[39m: [38;5;28mself[39m[38;5;241m.[39m[38;5;18m__class__[39m[38;5;241m.[39m[38;5;18m__name__[39m},
[1;32m 130[0m inputs,
[1;32m 131[0m )
[1;32m 132[0m [38;5;28;01mtry[39;00m:
[1;32m 133[0m outputs [38;5;241m=[39m (
[0;32m--> 134[0m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_call[49m[43m([49m[43minputs[49m[43m,[49m[43m [49m[43mrun_manager[49m[38;5;241;43m=[39;49m[43mrun_manager[49m[43m)[49m
[1;32m 135[0m [38;5;28;01mif[39;00m new_arg_supported
[1;32m 136[0m [38;5;28;01melse[39;00m [38;5;28mself[39m[38;5;241m.[39m_call(inputs)
[1;32m 137[0m )
[1;32m 138[0m [38;5;28;01mexcept[39;00m ([38;5;167;01mKeyboardInterrupt[39;00m, [38;5;167;01mException[39;00m) [38;5;28;01mas[39;00m e:
[1;32m 139[0m run_manager[38;5;241m.[39mon_chain_error(e)
File [0;32m~/langchain/langchain/agents/agent.py:953[0m, in [0;36mAgentExecutor._call[0;34m(self, inputs, run_manager)[0m
[1;32m 951[0m [38;5;66;03m# We now enter the agent loop (until it returns something).[39;00m
[1;32m 952[0m [38;5;28;01mwhile[39;00m [38;5;28mself[39m[38;5;241m.[39m_should_continue(iterations, time_elapsed):
[0;32m--> 953[0m next_step_output [38;5;241m=[39m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_take_next_step[49m[43m([49m
[1;32m 954[0m [43m [49m[43mname_to_tool_map[49m[43m,[49m
[1;32m 955[0m [43m [49m[43mcolor_mapping[49m[43m,[49m
[1;32m 956[0m [43m [49m[43minputs[49m[43m,[49m
[1;32m 957[0m [43m [49m[43mintermediate_steps[49m[43m,[49m
[1;32m 958[0m [43m [49m[43mrun_manager[49m[38;5;241;43m=[39;49m[43mrun_manager[49m[43m,[49m
[1;32m 959[0m [43m [49m[43m)[49m
[1;32m 960[0m [38;5;28;01mif[39;00m [38;5;28misinstance[39m(next_step_output, AgentFinish):
[1;32m 961[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39m_return(
[1;32m 962[0m next_step_output, intermediate_steps, run_manager[38;5;241m=[39mrun_manager
[1;32m 963[0m )
File [0;32m~/langchain/langchain/agents/agent.py:820[0m, in [0;36mAgentExecutor._take_next_step[0;34m(self, name_to_tool_map, color_mapping, inputs, intermediate_steps, run_manager)[0m
[1;32m 818[0m tool_run_kwargs[[38;5;124m"[39m[38;5;124mllm_prefix[39m[38;5;124m"[39m] [38;5;241m=[39m [38;5;124m"[39m[38;5;124m"[39m
[1;32m 819[0m [38;5;66;03m# We then call the tool on the tool input to get an observation[39;00m
[0;32m--> 820[0m observation [38;5;241m=[39m [43mtool[49m[38;5;241;43m.[39;49m[43mrun[49m[43m([49m
[1;32m 821[0m [43m [49m[43magent_action[49m[38;5;241;43m.[39;49m[43mtool_input[49m[43m,[49m
[1;32m 822[0m [43m [49m[43mverbose[49m[38;5;241;43m=[39;49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mverbose[49m[43m,[49m
[1;32m 823[0m [43m [49m[43mcolor[49m[38;5;241;43m=[39;49m[43mcolor[49m[43m,[49m
[1;32m 824[0m [43m [49m[43mcallbacks[49m[38;5;241;43m=[39;49m[43mrun_manager[49m[38;5;241;43m.[39;49m[43mget_child[49m[43m([49m[43m)[49m[43m [49m[38;5;28;43;01mif[39;49;00m[43m [49m[43mrun_manager[49m[43m [49m[38;5;28;43;01melse[39;49;00m[43m [49m[38;5;28;43;01mNone[39;49;00m[43m,[49m
[1;32m 825[0m [43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mtool_run_kwargs[49m[43m,[49m
[1;32m 826[0m [43m [49m[43m)[49m
[1;32m 827[0m [38;5;28;01melse[39;00m:
[1;32m 828[0m tool_run_kwargs [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39magent[38;5;241m.[39mtool_run_logging_kwargs()
File [0;32m~/langchain/langchain/tools/base.py:257[0m, in [0;36mBaseTool.run[0;34m(self, tool_input, verbose, start_color, color, callbacks, **kwargs)[0m
[1;32m 255[0m [38;5;66;03m# TODO: maybe also pass through run_manager is _run supports kwargs[39;00m
[1;32m 256[0m new_arg_supported [38;5;241m=[39m signature([38;5;28mself[39m[38;5;241m.[39m_run)[38;5;241m.[39mparameters[38;5;241m.[39mget([38;5;124m"[39m[38;5;124mrun_manager[39m[38;5;124m"[39m)
[0;32m--> 257[0m run_manager [38;5;241m=[39m [43mcallback_manager[49m[38;5;241;43m.[39;49m[43mon_tool_start[49m[43m([49m
[1;32m 258[0m [43m [49m[43m{[49m[38;5;124;43m"[39;49m[38;5;124;43mname[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mname[49m[43m,[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mdescription[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mdescription[49m[43m}[49m[43m,[49m
[1;32m 259[0m [43m [49m[43mtool_input[49m[43m [49m[38;5;28;43;01mif[39;49;00m[43m [49m[38;5;28;43misinstance[39;49m[43m([49m[43mtool_input[49m[43m,[49m[43m [49m[38;5;28;43mstr[39;49m[43m)[49m[43m [49m[38;5;28;43;01melse[39;49;00m[43m [49m[38;5;28;43mstr[39;49m[43m([49m[43mtool_input[49m[43m)[49m[43m,[49m
[1;32m 260[0m [43m [49m[43mcolor[49m[38;5;241;43m=[39;49m[43mstart_color[49m[43m,[49m
[1;32m 261[0m [43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m,[49m
[1;32m 262[0m [43m[49m[43m)[49m
[1;32m 263[0m [38;5;28;01mtry[39;00m:
[1;32m 264[0m tool_args, tool_kwargs [38;5;241m=[39m [38;5;28mself[39m[38;5;241m.[39m_to_args_and_kwargs(parsed_input)
File [0;32m~/langchain/langchain/callbacks/manager.py:672[0m, in [0;36mCallbackManager.on_tool_start[0;34m(self, serialized, input_str, run_id, parent_run_id, **kwargs)[0m
[1;32m 669[0m [38;5;28;01mif[39;00m run_id [38;5;129;01mis[39;00m [38;5;28;01mNone[39;00m:
[1;32m 670[0m run_id [38;5;241m=[39m uuid4()
[0;32m--> 672[0m [43m_handle_event[49m[43m([49m
[1;32m 673[0m [43m [49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mhandlers[49m[43m,[49m
[1;32m 674[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mon_tool_start[39;49m[38;5;124;43m"[39;49m[43m,[49m
[1;32m 675[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mignore_agent[39;49m[38;5;124;43m"[39;49m[43m,[49m
[1;32m 676[0m [43m [49m[43mserialized[49m[43m,[49m
[1;32m 677[0m [43m [49m[43minput_str[49m[43m,[49m
[1;32m 678[0m [43m [49m[43mrun_id[49m[38;5;241;43m=[39;49m[43mrun_id[49m[43m,[49m
[1;32m 679[0m [43m [49m[43mparent_run_id[49m[38;5;241;43m=[39;49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mparent_run_id[49m[43m,[49m
[1;32m 680[0m [43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m,[49m
[1;32m 681[0m [43m[49m[43m)[49m
[1;32m 683[0m [38;5;28;01mreturn[39;00m CallbackManagerForToolRun(
[1;32m 684[0m run_id, [38;5;28mself[39m[38;5;241m.[39mhandlers, [38;5;28mself[39m[38;5;241m.[39minheritable_handlers, [38;5;28mself[39m[38;5;241m.[39mparent_run_id
[1;32m 685[0m )
File [0;32m~/langchain/langchain/callbacks/manager.py:157[0m, in [0;36m_handle_event[0;34m(handlers, event_name, ignore_condition_name, *args, **kwargs)[0m
[1;32m 155[0m [38;5;28;01mexcept[39;00m [38;5;167;01mException[39;00m [38;5;28;01mas[39;00m e:
[1;32m 156[0m [38;5;28;01mif[39;00m handler[38;5;241m.[39mraise_error:
[0;32m--> 157[0m [38;5;28;01mraise[39;00m e
[1;32m 158[0m logging[38;5;241m.[39mwarning([38;5;124mf[39m[38;5;124m"[39m[38;5;124mError in [39m[38;5;132;01m{[39;00mevent_name[38;5;132;01m}[39;00m[38;5;124m callback: [39m[38;5;132;01m{[39;00me[38;5;132;01m}[39;00m[38;5;124m"[39m)
File [0;32m~/langchain/langchain/callbacks/manager.py:139[0m, in [0;36m_handle_event[0;34m(handlers, event_name, ignore_condition_name, *args, **kwargs)[0m
[1;32m 135[0m [38;5;28;01mtry[39;00m:
[1;32m 136[0m [38;5;28;01mif[39;00m ignore_condition_name [38;5;129;01mis[39;00m [38;5;28;01mNone[39;00m [38;5;129;01mor[39;00m [38;5;129;01mnot[39;00m [38;5;28mgetattr[39m(
[1;32m 137[0m handler, ignore_condition_name
[1;32m 138[0m ):
[0;32m--> 139[0m [38;5;28;43mgetattr[39;49m[43m([49m[43mhandler[49m[43m,[49m[43m [49m[43mevent_name[49m[43m)[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m
[1;32m 140[0m [38;5;28;01mexcept[39;00m [38;5;167;01mNotImplementedError[39;00m [38;5;28;01mas[39;00m e:
[1;32m 141[0m [38;5;28;01mif[39;00m event_name [38;5;241m==[39m [38;5;124m"[39m[38;5;124mon_chat_model_start[39m[38;5;124m"[39m:
File [0;32m~/langchain/langchain/callbacks/human.py:48[0m, in [0;36mHumanApprovalCallbackHandler.on_tool_start[0;34m(self, serialized, input_str, run_id, parent_run_id, **kwargs)[0m
[1;32m 38[0m [38;5;28;01mdef[39;00m [38;5;21mon_tool_start[39m(
[1;32m 39[0m [38;5;28mself[39m,
[1;32m 40[0m serialized: Dict[[38;5;28mstr[39m, Any],
[0;32m (...)[0m
[1;32m 45[0m [38;5;241m*[39m[38;5;241m*[39mkwargs: Any,
[1;32m 46[0m ) [38;5;241m-[39m[38;5;241m>[39m Any:
[1;32m 47[0m [38;5;28;01mif[39;00m [38;5;28mself[39m[38;5;241m.[39m_should_check(serialized) [38;5;129;01mand[39;00m [38;5;129;01mnot[39;00m [38;5;28mself[39m[38;5;241m.[39m_approve(input_str):
[0;32m---> 48[0m [38;5;28;01mraise[39;00m HumanRejectedException(
[1;32m 49[0m [38;5;124mf[39m[38;5;124m"[39m[38;5;124mInputs [39m[38;5;132;01m{[39;00minput_str[38;5;132;01m}[39;00m[38;5;124m to tool [39m[38;5;132;01m{[39;00mserialized[38;5;132;01m}[39;00m[38;5;124m were rejected.[39m[38;5;124m"[39m
[1;32m 50[0m )
[0;31mHumanRejectedException[0m: Inputs ls /private to tool {'name': 'terminal', 'description': 'Run shell commands on this MacOS machine.'} were rejected.In [ ]: