motleycrew.agents.langchain
Modules
- class motleycrew.agents.langchain.LangchainMotleyAgent(description: str | None = None, name: str | None = None, prompt_prefix: str | ChatPromptTemplate | None = None, agent_factory: MotleyAgentFactory[AgentExecutor] | None = None, tools: Sequence[MotleySupportedTool] | None = None, force_output_handler: bool = False, chat_history: bool | GetSessionHistoryCallable = True, input_as_messages: bool = False, runnable_config: RunnableConfig | None = None, verbose: bool = False)
Bases:
MotleyAgentParent
,LangchainOutputHandlingAgentMixin
MotleyCrew wrapper for Langchain agents.
- __init__(description: str | None = None, name: str | None = None, prompt_prefix: str | ChatPromptTemplate | None = None, agent_factory: MotleyAgentFactory[AgentExecutor] | None = None, tools: Sequence[MotleySupportedTool] | None = None, force_output_handler: bool = False, chat_history: bool | GetSessionHistoryCallable = True, input_as_messages: bool = False, runnable_config: RunnableConfig | None = None, verbose: bool = False)
- Parameters:
description –
Description of the agent.
Unlike the prompt prefix, it is not included in the prompt. The description is only used for describing the agent’s purpose when giving it as a tool to other agents.
name –
Name of the agent. The name is used for identifying the agent when it is given as a tool to other agents, as well as for logging purposes.
It is not included in the agent’s prompt.
prompt_prefix – Prefix to the agent’s prompt. Can be used for providing additional context, such as the agent’s role or backstory.
agent_factory –
Factory function to create the agent. The factory function should accept a dictionary of tools and return an AgentExecutor instance.
See
motleycrew.common.types.MotleyAgentFactory
for more details.Alternatively, you can use the
from_agent()
method to wrap an existing AgentExecutor.tools – Tools to add to the agent.
force_output_handler – Whether to force the agent to return through an output handler. If True, at least one tool must have return_direct set to True.
chat_history –
Whether to use chat history or not. If True, uses InMemoryChatMessageHistory. If a callable is passed, it is used to get the chat history by session_id.
See
langchain_core.runnables.history.RunnableWithMessageHistory
for more details.input_as_messages – Whether the agent expects a list of messages as input instead of a single string.
runnable_config – Default Langchain config to use when invoking the agent. It can be used to add callbacks, metadata, etc.
verbose – Whether to log verbose output.
- materialize()
Materialize the agent and wrap it in RunnableWithMessageHistory if needed.
- invoke(input: dict, config: RunnableConfig | None = None, **kwargs: Any) Any
Transform a single input into an output. Override to implement.
- Parameters:
input – The input to the Runnable.
config – A config to use when invoking the Runnable. The config supports standard keys like ‘tags’, ‘metadata’ for tracing purposes, ‘max_concurrency’ for controlling how much work to do in parallel, and other keys. Please refer to the RunnableConfig for more details.
- Returns:
The output of the Runnable.
- async ainvoke(input: dict, config: RunnableConfig | None = None, **kwargs: Any) Any
Default implementation of ainvoke, calls invoke from a thread.
The default implementation allows usage of async code even if the Runnable did not implement a native async version of invoke.
Subclasses should override this method if they can run asynchronously.
- static from_agent(agent: AgentExecutor, description: str | None = None, prompt_prefix: str | None = None, tools: Sequence[MotleySupportedTool] | None = None, runnable_config: RunnableConfig | None = None, verbose: bool = False) LangchainMotleyAgent
Create a LangchainMotleyAgent from a
langchain.agents.AgentExecutor
instance.Using this method, you can wrap an existing AgentExecutor without providing a factory function.
- Parameters:
agent – AgentExecutor instance to wrap.
prompt_prefix – Prefix to the agent’s prompt. Can be used for providing additional context, such as the agent’s role or backstory.
description –
Description of the agent.
Unlike the prompt prefix, it is not included in the prompt. The description is only used for describing the agent’s purpose when giving it as a tool to other agents.
tools – Tools to add to the agent.
runnable_config – Default Langchain config to use when invoking the agent. It can be used to add callbacks, metadata, etc.
verbose – Whether to log verbose output.
- class motleycrew.agents.langchain.LegacyReActMotleyAgent(tools: Sequence[MotleySupportedTool], description: str | None = None, name: str | None = None, prompt_prefix: str | None = None, chat_history: bool | GetSessionHistoryCallable = True, force_output_handler: bool = False, prompt: str | None = None, handle_parsing_errors: bool = True, handle_tool_errors: bool = True, llm: BaseLanguageModel | None = None, runnable_config: RunnableConfig | None = None, verbose: bool = False)
Bases:
LangchainMotleyAgent
Basic ReAct agent compatible with older models without dedicated tool calling support.
It’s probably better to use the more advanced
motleycrew.agents.langchain.tool_calling_react.ReActToolCallingAgent
with newer models.- __init__(tools: Sequence[MotleySupportedTool], description: str | None = None, name: str | None = None, prompt_prefix: str | None = None, chat_history: bool | GetSessionHistoryCallable = True, force_output_handler: bool = False, prompt: str | None = None, handle_parsing_errors: bool = True, handle_tool_errors: bool = True, llm: BaseLanguageModel | None = None, runnable_config: RunnableConfig | None = None, verbose: bool = False)
- Parameters:
tools – Tools to add to the agent.
description – Description of the agent.
name – Name of the agent.
prompt_prefix – Prefix to the agent’s prompt.
output_handler – Output handler for the agent.
chat_history – Whether to use chat history or not.
force_output_handler – Whether to force the agent to return through an output handler.
prompt – Custom prompt to use with the agent.
handle_parsing_errors – Whether to handle parsing errors.
handle_tool_errors – Whether to handle tool errors.
llm – Language model to use.
runnable_config – Default Langchain config to use when invoking the agent. It can be used to add callbacks, metadata, etc.
verbose – Whether to log verbose output.
- class motleycrew.agents.langchain.ReActToolCallingMotleyAgent(tools: Sequence[MotleySupportedTool], description: str | None = None, name: str | None = None, prompt_prefix: str | ChatPromptTemplate | None = None, prompt: ChatPromptTemplate | None = None, chat_history: bool | GetSessionHistoryCallable = True, force_output_handler: bool = False, handle_parsing_errors: bool = False, llm: BaseChatModel | None = None, max_iterations: int | None = 15, intermediate_steps_processor: Callable | None = None, runnable_config: RunnableConfig | None = None, verbose: bool = False)
Bases:
LangchainMotleyAgent
Universal ReAct-style agent that supports tool calling.
This agent only works with newer models that support tool calling. If you are using an older model, you should use
motleycrew.agents.langchain.LegacyReActMotleyAgent
instead.- __init__(tools: Sequence[MotleySupportedTool], description: str | None = None, name: str | None = None, prompt_prefix: str | ChatPromptTemplate | None = None, prompt: ChatPromptTemplate | None = None, chat_history: bool | GetSessionHistoryCallable = True, force_output_handler: bool = False, handle_parsing_errors: bool = False, llm: BaseChatModel | None = None, max_iterations: int | None = 15, intermediate_steps_processor: Callable | None = None, runnable_config: RunnableConfig | None = None, verbose: bool = False)
- Parameters:
tools – Tools to add to the agent.
description – Description of the agent.
name – Name of the agent.
prompt_prefix – Prefix to the agent’s prompt.
prompt – The prompt to use. See Prompt section below for more on the expected input variables.
chat_history – Whether to use chat history or not. If True, uses InMemoryChatMessageHistory. If a callable is passed, it is used to get the chat history by session_id. See
langchain_core.runnables.history.RunnableWithMessageHistory
for more details.force_output_handler – Whether to force the agent to return through an output handler. If True, at least one tool must have return_direct set to True.
handle_parsing_errors – Whether to handle parsing errors.
handle_tool_errors – Whether to handle tool errors. If True, handle_tool_error and handle_validation_error in all tools are set to True.
llm – Language model to use.
max_iterations – The maximum number of agent iterations.
intermediate_steps_processor – Function that modifies the intermediate steps array in some way before each agent iteration.
runnable_config – Default Langchain config to use when invoking the agent. It can be used to add callbacks, metadata, etc.
verbose – Whether to log verbose output.
- Prompt:
The prompt must have agent_scratchpad, chat_history, and additional_notes ``MessagesPlaceholder``s. If a prompt is not passed in, the default one is used.
The default prompt slightly varies depending on the language model used. See
motleycrew.agents.langchain.tool_calling_react_prompts
for more details.