Source code for langchain_experimental.plan_and_execute.executors.agent_executor

from typing import List

from langchain.agents.agent import AgentExecutor
from langchain.agents.structured_chat.base import StructuredChatAgent
from langchain.tools import BaseTool
from langchain_core.language_models import BaseLanguageModel

from langchain_experimental.plan_and_execute.executors.base import ChainExecutor

HUMAN_MESSAGE_TEMPLATE = """Previous steps: {previous_steps}

Current objective: {current_step}

{agent_scratchpad}"""

TASK_PREFIX = """{objective}

"""


[docs]def load_agent_executor( llm: BaseLanguageModel, tools: List[BaseTool], verbose: bool = False, include_task_in_prompt: bool = False, ) -> ChainExecutor: """ Load an agent executor. Args: llm: BaseLanguageModel tools: List[BaseTool] verbose: bool. Defaults to False. include_task_in_prompt: bool. Defaults to False. Returns: ChainExecutor """ input_variables = ["previous_steps", "current_step", "agent_scratchpad"] template = HUMAN_MESSAGE_TEMPLATE if include_task_in_prompt: input_variables.append("objective") template = TASK_PREFIX + template agent = StructuredChatAgent.from_llm_and_tools( llm, tools, human_message_template=template, input_variables=input_variables, ) agent_executor = AgentExecutor.from_agent_and_tools( agent=agent, tools=tools, verbose=verbose ) return ChainExecutor(chain=agent_executor)