motleycrew.agents.parent

Classes

MotleyAgentParent([prompt_prefix, ...])

Parent class for all motleycrew agents.

class motleycrew.agents.parent.MotleyAgentParent(prompt_prefix: str | ChatPromptTemplate | None = None, description: str | None = None, name: str | None = None, agent_factory: MotleyAgentFactory | None = None, tools: Sequence[MotleySupportedTool] | None = None, force_output_handler: bool = False, verbose: bool = False)

Bases: MotleyAgentAbstractParent, ABC

Parent class for all motleycrew agents.

This class is abstract and should be subclassed by all agents in motleycrew.

In most cases, it’s better to use one of the specialized agent classes, such as LangchainMotleyAgent or LlamaIndexMotleyAgent, which provide various useful features, such as observability and output handling, out of the box.

If you need to create a custom agent, subclass this class and implement the invoke method.

__init__(prompt_prefix: str | ChatPromptTemplate | None = None, description: str | None = None, name: str | None = None, agent_factory: MotleyAgentFactory | None = None, tools: Sequence[MotleySupportedTool] | None = None, force_output_handler: bool = False, verbose: bool = False)
Parameters:
  • 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.

  • 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.

  • agent_factory

    Factory function to create the agent. The factory function should accept a dictionary of tools and return the agent. It is usually called right before the agent is invoked for the first time.

    See motleycrew.common.types.MotleyAgentFactory for more details.

  • 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.

  • verbose – Whether to log verbose output.

property kv_store: dict
compose_prompt(input_dict: dict, prompt: ChatPromptTemplate | str, as_messages: bool = False) str | list[BaseMessage]

Compose the agent’s prompt from the prompt prefix and the provided prompt.

Parameters:
  • input_dict – The input dictionary to the agent.

  • prompt – The prompt to be added to the agent’s prompt.

  • as_messages – Whether the prompt should be returned as a Langchain messages list instead of a single string.

Returns:

The composed prompt.

property agent

Getter for the inner agent that makes sure it’s already materialized. The inner agent should always be accessed via this property method.

property is_materialized

Whether the agent is materialized.

get_output_handlers()

Get all output handlers (tools with return_direct set to True).

materialize()

Materialize the agent by creating the agent instance using the agent factory. This method should be called before invoking the agent for the first time.

add_tools(tools: Sequence[MotleySupportedTool])

Add tools to the agent.

Parameters:

tools – The tools to add to the agent.

as_tool(**kwargs) MotleyTool

Convert the agent to a tool to be used by other agents via delegation.

Parameters:

kwargs – Additional arguments to pass to the tool. See motleycrew.tools.tool.MotleyTool for more details.

abstract 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.