Incorrect prompt formatting when initializing ReActDocstoreAgent with a chat model

### System Info

Langchain v0.0.183 

### Who can help?

@hwchase17 
@agola11

### Information

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

### Related Components

- [X] LLMs/Chat Models
- [ ] Embedding Models
- [X] Prompts / Prompt Templates / Prompt Selectors
- [ ] Output Parsers
- [ ] Document Loaders
- [ ] Vector Stores / Retrievers
- [ ] Memory
- [ ] Agents / Agent Executors
- [ ] Tools / Toolkits
- [ ] Chains
- [ ] Callbacks/Tracing
- [ ] Async

### Reproduction

```python
from langchain import Wikipedia
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
from langchain.agents.react.base import DocstoreExplorer
docstore=DocstoreExplorer(Wikipedia())
tools = [
    Tool(
        name="Search",
        func=docstore.search,
        description="useful for when you need to ask with search"
    ),
    Tool(
        name="Lookup",
        func=docstore.lookup,
        description="useful for when you need to ask with lookup"
    )
]


llm = ChatOpenAI()
react = initialize_agent(tools, llm, agent=AgentType.REACT_DOCSTORE, verbose=True)

question = 'Question'
react.run(question)
```
Running this snippet initializes a ReActDocStoreAgent and runs it on the given question.

[initialize_agent( )](https://github.com/hwchase17/langchain/blob/master/langchain/agents/initialize.py#L12) returns an AgentExecutor. During this call an agent is created using the [from_llm_and_tools( )](https://github.com/hwchase17/langchain/blob/master/langchain/agents/agent.py#L528) function. This function creates a new llm_chain for the agent and sets the prompt using agent_cls.create_prompt( ).  Since we are using a ReActDocStoreAgent, [the function](https://github.com/hwchase17/langchain/blob/master/langchain/agents/react/base.py#L35) simply returns the WIKI_PROMPT, which is a PromptTemplate object.

[run( )](https://github.com/hwchase17/langchain/blob/master/langchain/agents/agent.py#L934) from AgentExecutor calls [_take_next_step( )](https://github.com/hwchase17/langchain/blob/master/langchain/agents/agent.py#L748) which calls agent.plan( ).

[plan( )](https://github.com/hwchase17/langchain/blob/master/langchain/agents/agent.py#L425) eventually calls llm_chain.predict( ). Eventually llm_chain calls [generate( )](https://github.com/hwchase17/langchain/blob/master/langchain/chains/llm.py#L72). This function creates a prompt by calling [prep_prompt( )](https://github.com/hwchase17/langchain/blob/master/langchain/chains/llm.py#L94). The prompt is a StringPromptValue since it is created using [format_prompt( )](https://github.com/hwchase17/langchain/blob/master/langchain/prompts/base.py#L230).
This variable is then used as an argument for the function llm.generate_prompt( ). [generate_prompt( )](https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/base.py#L136) converts the prompt to message format using [to_messages( )](https://github.com/hwchase17/langchain/blob/master/langchain/prompts/base.py#L98), which treats the entire prompt as a HumanMessage. 

### Expected behavior

The issue here is that the prompt includes both human and AI messages. Ideally, the questions and observations should be human messages whereas the thoughts and actions should be AI messages. Treating the entire prompt as a human message may decrease prompt quality and lead to suboptimal performance.