[Maybe Bug] `StructuredChatAgent` raises `ValueError` with a `StructuredTool` which has an argument which defaults to a  `dict` default value
Labels: name: area: agent, name: auto:bug

### System Info

OS == Windows 11
Python == 3.10.11
Langchain == 0.0.348

### Who can help?

_No response_

### Information

- [ ] The official example notebooks/scripts
- [ ] My own modified scripts

### Related Components

- [ ] 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

```bash
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr  5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from dotenv import load_dotenv
>>> load_dotenv()
True
>>> from langchain.agents import AgentType, initialize_agent
>>> from langchain.tools import StructuredTool
>>> from langchain.chat_models import ChatOpenAI
>>> llm = ChatOpenAI(model='gpt-3.5-turbo')
>>> def func0(a: int, b: int) -> int:
...         return a+b
...
>>> def func1(a: int, b: int, d: dict[str, int]={}) -> int:
...         print(d)
...         return a+b
...
>>> def func2(a: int, b: int, d: dict[str, int]={'c': 0}) -> int:
...         print(d)
...         return a+b
...
>>> tool0 = StructuredTool.from_function(func0, name=func0.__name__, description='a+b')
>>> tool1 = StructuredTool.from_function(func1, name=func1.__name__, description='a+b')
>>> tool2 = StructuredTool.from_function(func2, name=func2.__name__, description='a+b')
>>> agent0 = initialize_agent(agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, tools=[tool0], llm=llm)
>>> agent1 = initialize_agent(agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, tools=[tool1], llm=llm)
>>> agent2 = initialize_agent(agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, tools=[tool2], llm=llm)
>>> agent0.run('hello')
'Hi there! How can I assist you today?'
>>> agent0.invoke(dict(input='hello'))
{'input': 'hello', 'output': 'Hi there! How can I assist you today?'}
>>> agent1.run('hello')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 507, in run
    return self(args[0], callbacks=callbacks, tags=tags, metadata=metadata)[
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 288, in __call__
    inputs = self.prep_inputs(inputs)
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 435, in prep_inputs
    raise ValueError(
ValueError: A single string input was passed in, but this chain expects multiple inputs ({'', 'input'}). When a chain expects multiple inputs, please call it by passing in a dictionary, eg `chain({'foo': 1, 'bar': 2})`
>>> agent1.invoke(dict(input='hello'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 89, in invoke
    return self(
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 288, in __call__
    inputs = self.prep_inputs(inputs)
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 445, in prep_inputs
    self._validate_inputs(inputs)
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 197, in _validate_inputs
    raise ValueError(f"Missing some input keys: {missing_keys}")
ValueError: Missing some input keys: {''}
>>> agent2.run('hello')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 507, in run
    return self(args[0], callbacks=callbacks, tags=tags, metadata=metadata)[
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 288, in __call__
    inputs = self.prep_inputs(inputs)
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 435, in prep_inputs
    raise ValueError(
ValueError: A single string input was passed in, but this chain expects multiple inputs ({"'c'", 'input'}). When a chain expects multiple inputs, please call it by passing in a dictionary, eg `chain({'foo': 1, 'bar': 2})`
>>> agent2.invoke(dict(input='hello'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 89, in invoke
    return self(
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 288, in __call__
    inputs = self.prep_inputs(inputs)
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 445, in prep_inputs
    self._validate_inputs(inputs)
  File "D:\workspace\agi-baby\venv\lib\site-packages\langchain\chains\base.py", line 197, in _validate_inputs
    raise ValueError(f"Missing some input keys: {missing_keys}")
ValueError: Missing some input keys: {"'c'"}
```

### Expected behavior

Given a `StructuredTool` which has an argument which defaults to a `dict` value, `StructuredChatAgent` with the tool should work.

In the above reproduction codes, `agent1` and `agent2` should works as `agent0` works.