AgentExecutor.from_agent_and_tools(agent=agent, tools=tools) -> throws KeyError. 
Labels: name: area: agent, name: auto:bug

### System Info

Langchain 0.1.0
Python 3.10.12


### Who can help?

@hwchase17 


### Information

- [X] 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

from langchain.agents.agent_toolkits import O365Toolkit

otoolkit = O365Toolkit()
o365_tools = otoolkit.get_tools()
tools.append(o365_tools)

from langchain_experimental.openai_assistant import OpenAIAssistantRunnable
agent = OpenAIAssistantRunnable.create_assistant(
    name="My assistant",
    # instructions="""You are a admin agent, tasked with the following jobs:
        1. Read and post messages on Microsoft 365 Outlook"""
    tools=tools,
    model="gpt-4-1106-preview",
    as_agent=True
)

from langchain.agents.agent import AgentExecutor

agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools)



from langchain.agents.agent import AgentExecutor

agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools)
-------------------------------------------------------------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[13], line 3
      1 from langchain.agents.agent import AgentExecutor
----> 3 agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools)
    
File ~/smith/lib/python3.10/site-packages/langchain/agents/agent.py:891, in AgentExecutor.from_agent_and_tools(cls, agent, tools, callbacks, **kwargs)
    882 @classmethod
    883 def from_agent_and_tools(
    884     cls,
   (...)
    888     **kwargs: Any,
    889 ) -> AgentExecutor:
    890     """Create from agent and tools."""
--> 891     return cls(
    892         agent=agent,
    893         tools=tools,
    894         callbacks=callbacks,
    895         **kwargs,
    896     )

File ~/smith/lib/python3.10/site-packages/langchain_core/load/serializable.py:107, in Serializable.__init__(self, **kwargs)
    106 def __init__(self, **kwargs: Any) -> None:
--> 107     super().__init__(**kwargs)
    108     self._lc_kwargs = kwargs

File ~/smith/lib/python3.10/site-packages/pydantic/main.py:339, in pydantic.main.BaseModel.__init__()

File ~/smith/lib/python3.10/site-packages/pydantic/main.py:1102, in pydantic.main.validate_model()

File ~/smith/lib/python3.10/site-packages/langchain/agents/agent.py:916, in AgentExecutor.validate_return_direct_tool(cls, values)
    914 """Validate that tools are compatible with agent."""
    915 agent = values["agent"]
--> 916 tools = values["tools"]
    917 if isinstance(agent, BaseMultiActionAgent):
    918     for tool in tools:

KeyError: 'tools'

### Expected behavior

agent_executor should get created properly, this was working a week ago.