text: llm_output, re.DOTALL)        if not match:            raise ValueError(f"Could not parse LLM output: `{llm_output}`")        action = match.group(1).strip()        action_input = match.group(2)        # Return the action and action input        return AgentAction(            tool=action, tool_input=action_input.strip(" ").strip('"'), log=llm_output        )output_parser = CustomOutputParser()Specify the LLM modelâ€‹from langchain.chat_models import ChatOpenAIllm = ChatOpenAI(model_name="gpt-4", temperature=0)Agent and agent executorâ€‹# LLM chain consisting of the LLM and a promptllm_chain = LLMChain(llm=llm, prompt=prompt)tool_names = [tool.name for tool in tools]agent = LLMSingleActionAgent(    llm_chain=llm_chain,    output_parser=output_parser,    stop=["\nObservation:"],    allowed_tools=tool_names,)agent_executor = AgentExecutor.from_agent_and_tools(    agent=agent, tools=tools, verbose=True)Run it!â€‹# If you prefer in-line tracing, uncomment this line# agent_executor.agent.llm_chain.verbose = Trueagent_executor.run("How many children did J.S. Bach have?")            > Entering new AgentExecutor chain...    Thought: I need to find the Q number for J.S. Bach.    Action: ItemLookup    Action Input: