Unknown parsing error on custom tool + custom agent implementation
Labels: name: bug

### System Info

langchain: 0.0.215
python: 3.10.11
OS: Ubuntu 18.04

### Who can help?

@hwchase17 @agola11 

### Information

- [ ] The official example notebooks/scripts
- [X] My own modified scripts

### Related Components

- [X] LLMs/Chat Models
- [ ] Embedding Models
- [ ] Prompts / Prompt Templates / Prompt Selectors
- [ ] Output Parsers
- [ ] Document Loaders
- [ ] Vector Stores / Retrievers
- [ ] Memory
- [X] Agents / Agent Executors
- [X] Tools / Toolkits
- [ ] Chains
- [ ] Callbacks/Tracing
- [ ] Async

### Reproduction

I'm implementing two custom tools that return column names and unique values in them. Their definition is as follows
```
def get_unique_values(column_name):
    all_values = metadata[column_name]
    return all_values

def get_column_names():
    return COLUMN_NAMES


tools = [
    Tool(
        name="Get all column names",
        func=get_column_names,
        description="Useful for getting the names of all available columns. This doesn't have any arguments as input and simply invoking it would return the list of columns",
    ),
    Tool(
        name="Get distinct values of a column",
        func=get_unique_values,
        description="Useful for getting distinct values of a particular column. Knowing the distinct values is important to decide if a particular column should be considered in a given context or not. The input to this function should be a string representing the column name whose unique values are needed to be found out. For example, `gender` would be the input if you wanted to know what unique values are in `gender` column.",
    ),
]

```

I'm using a custom agent as well defined as follows: (The definition is quite straightforward and taken from the official docs)
```
prompt = CustomPromptTemplate(
    template=template,
    tools=tools,
    input_variables=["input", "intermediate_steps"],
)

llm_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
)
```

When I provide a prompt using `agent_executor.run()` I get the error pasted below.

Surprisingly, if I define the as follows, I don't get an error. Rather it doesn't follow my prompt template because there's no LLMChain used here and hence gets stuck in meaningless back and forth actions.
```
agent_executor = initialize_agent(
    tools,
    llm,
    agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
)
```

Error trace
```
> Entering new  chain...
Traceback (most recent call last):
  File "/home/user/proj/agent_exp.py", line 245, in <module>
    agent_executor.run(
  File "/home/user/anaconda3/envs/proj/lib/python3.10/site-packages/langchain/chains/base.py", line 290, in run
    return self(args[0], callbacks=callbacks, tags=tags)[_output_key]
  File "/home/user/anaconda3/envs/proj/lib/python3.10/site-packages/langchain/chains/base.py", line 166, in __call__
    raise e
  File "/home/user/anaconda3/envs/proj/lib/python3.10/site-packages/langchain/chains/base.py", line 160, in __call__
    self._call(inputs, run_manager=run_manager)
  File "/home/user/anaconda3/envs/proj/lib/python3.10/site-packages/langchain/agents/agent.py", line 987, in _call
    next_step_output = self._take_next_step(
  File "/home/user/anaconda3/envs/proj/lib/python3.10/site-packages/langchain/agents/agent.py", line 803, in _take_next_step
    raise e
  File "/home/user/anaconda3/envs/proj/lib/python3.10/site-packages/langchain/agents/agent.py", line 792, in _take_next_step
    output = self.agent.plan(
  File "/home/user/anaconda3/envs/proj/lib/python3.10/site-packages/langchain/agents/agent.py", line 345, in plan
    return self.output_parser.parse(output)
  File "/home/user/proj/agent_exp.py", line 102, in parse
    raise OutputParserException(f"Could not parse LLM output: `{llm_output}`")
langchain.schema.OutputParserException: Could not parse LLM output: `Thought: I need to get all the column names
Action: Get all column names`
```

### Expected behavior

The agent should have called these functions appropriately and returned a list of columns that have the string datatype