!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())

[Skip to main content](#__docusaurus_skipToContent_fallback)

LangChain v0.2 is coming soon! Preview the new docs [here](/v0.2/docs/introduction/).

[

![🦜️🔗 Langchain](/v0.1/img/brand/wordmark.png)![🦜️🔗 Langchain](/v0.1/img/brand/wordmark-dark.png)

](/v0.1/)[Docs](/v0.1/docs/get_started/introduction/)[Use cases](/v0.1/docs/use_cases/)[Integrations](/v0.1/docs/integrations/platforms/)[API Reference](https://api.js.langchain.com)

[More](#)

*   [People](/v0.1/docs/people/)
*   [Community](/v0.1/docs/community/)
*   [Tutorials](/v0.1/docs/additional_resources/tutorials/)
*   [Contributing](/v0.1/docs/contributing/)

[v0.1](#)

*   [v0.2](https://js.langchain.com/v0.2/docs/introduction)
*   [v0.1](/v0.1/docs/get_started/introduction/)

[🦜🔗](#)

*   [LangSmith](https://smith.langchain.com)
*   [LangSmith Docs](https://docs.smith.langchain.com)
*   [LangChain Hub](https://smith.langchain.com/hub)
*   [LangServe](https://github.com/langchain-ai/langserve)
*   [Python Docs](https://python.langchain.com/)

[Chat](https://chatjs.langchain.com)[](https://github.com/langchain-ai/langchainjs)

Search

*   [Get started](/v0.1/docs/get_started/)
    
    *   [Introduction](/v0.1/docs/get_started/introduction/)
    *   [Installation](/v0.1/docs/get_started/installation/)
    *   [Quickstart](/v0.1/docs/get_started/quickstart/)
*   [LangChain Expression Language](/v0.1/docs/expression_language/)
    
    *   [Get started](/v0.1/docs/expression_language/get_started/)
    *   [Why use LCEL?](/v0.1/docs/expression_language/why/)
    *   [Interface](/v0.1/docs/expression_language/interface/)
    *   [Streaming](/v0.1/docs/expression_language/streaming/)
    *   [How to](/v0.1/docs/expression_language/how_to/routing/)
        
    *   [Cookbook](/v0.1/docs/expression_language/cookbook/)
        
    *   [LangChain Expression Language (LCEL)](/v0.1/docs/expression_language/)
*   [Modules](/v0.1/docs/modules/)
    
    *   [Model I/O](/v0.1/docs/modules/model_io/)
        
    *   [Retrieval](/v0.1/docs/modules/data_connection/)
        
    *   [Chains](/v0.1/docs/modules/chains/)
    *   [Agents](/v0.1/docs/modules/agents/)
        
        *   [Quick start](/v0.1/docs/modules/agents/quick_start/)
        *   [Concepts](/v0.1/docs/modules/agents/concepts/)
        *   [Agent Types](/v0.1/docs/modules/agents/agent_types/)
            
            *   [Tool calling](/v0.1/docs/modules/agents/agent_types/tool_calling/)
            *   [OpenAI tools](/v0.1/docs/modules/agents/agent_types/openai_tools_agent/)
            *   [OpenAI functions](/v0.1/docs/modules/agents/agent_types/openai_functions_agent/)
            *   [XML Agent](/v0.1/docs/modules/agents/agent_types/xml/)
            *   [Conversational](/v0.1/docs/modules/agents/agent_types/chat_conversation_agent/)
            *   [OpenAI Assistant](/v0.1/docs/modules/agents/agent_types/openai_assistant/)
            *   [Plan and execute](/v0.1/docs/modules/agents/agent_types/plan_and_execute/)
            *   [ReAct](/v0.1/docs/modules/agents/agent_types/react/)
            *   [Structured chat](/v0.1/docs/modules/agents/agent_types/structured_chat/)
            *   [XML Agent](/v0.1/docs/modules/agents/agent_types/xml_legacy/)
        *   [How-to](/v0.1/docs/modules/agents/how_to/custom_agent/)
            
        *   [Agents](/v0.1/docs/modules/agents/)
        *   [Tools](/v0.1/docs/modules/agents/tools/)
            
    *   [More](/v0.1/docs/modules/memory/)
        
*   [Security](/v0.1/docs/security/)
*   [Guides](/v0.1/docs/guides/)
    
*   [Ecosystem](/v0.1/docs/ecosystem/)
    
*   [LangGraph](/v0.1/docs/langgraph/)
*   * * *
    

*   [](/v0.1/)
*   [Modules](/v0.1/docs/modules/)
*   [Agents](/v0.1/docs/modules/agents/)
*   [Agent Types](/v0.1/docs/modules/agents/agent_types/)
*   Plan and execute

Plan and execute
================

Compatibility

This agent currently only supports Chat Models.

Plan and execute agents accomplish an objective by first planning what to do, then executing the sub tasks. This idea is largely inspired by [BabyAGI](https://github.com/yoheinakajima/babyagi) and then the ["Plan-and-Solve" paper](https://arxiv.org/abs/2305.04091).

The planning is almost always done by an LLM.

The execution is usually done by a separate agent (equipped with tools).

This agent uses a two step process:

1.  First, the agent uses an LLM to create a plan to answer the query with clear steps.
2.  Once it has a plan, it uses an embedded traditional Action Agent to solve each step.

The idea is that the planning step keeps the LLM more "on track" by breaking up a larger task into simpler subtasks. However, this method requires more individual LLM queries and has higher latency compared to Action Agents.

With `PlanAndExecuteAgentExecutor`
==================================

info

This is an experimental chain and is not recommended for production use yet.

tip

See [this section for general instructions on installing integration packages](/v0.1/docs/get_started/installation/#installing-integration-packages).

*   npm
*   Yarn
*   pnpm

    npm install @langchain/openai

    yarn add @langchain/openai

    pnpm add @langchain/openai

    import { Calculator } from "@langchain/community/tools/calculator";import { ChatOpenAI } from "@langchain/openai";import { PlanAndExecuteAgentExecutor } from "langchain/experimental/plan_and_execute";import { SerpAPI } from "@langchain/community/tools/serpapi";const tools = [new Calculator(), new SerpAPI()];const model = new ChatOpenAI({  temperature: 0,  model: "gpt-3.5-turbo",  verbose: true,});const executor = await PlanAndExecuteAgentExecutor.fromLLMAndTools({  llm: model,  tools,});const result = await executor.invoke({  input: `Who is the current president of the United States? What is their current age raised to the second power?`,});console.log({ result });

#### API Reference:

*   [Calculator](https://api.js.langchain.com/classes/langchain_community_tools_calculator.Calculator.html) from `@langchain/community/tools/calculator`
*   [ChatOpenAI](https://api.js.langchain.com/classes/langchain_openai.ChatOpenAI.html) from `@langchain/openai`
*   [PlanAndExecuteAgentExecutor](https://api.js.langchain.com/classes/langchain_experimental_plan_and_execute.PlanAndExecuteAgentExecutor.html) from `langchain/experimental/plan_and_execute`
*   [SerpAPI](https://api.js.langchain.com/classes/langchain_community_tools_serpapi.SerpAPI.html) from `@langchain/community/tools/serpapi`

* * *

#### Help us out by providing feedback on this documentation page:

[

Previous

OpenAI Assistant

](/v0.1/docs/modules/agents/agent_types/openai_assistant/)[

Next

ReAct

](/v0.1/docs/modules/agents/agent_types/react/)

Community

*   [Discord](https://discord.gg/cU2adEyC7w)
*   [Twitter](https://twitter.com/LangChainAI)

GitHub

*   [Python](https://github.com/langchain-ai/langchain)
*   [JS/TS](https://github.com/langchain-ai/langchainjs)

More

*   [Homepage](https://langchain.com)
*   [Blog](https://blog.langchain.dev)

Copyright © 2024 LangChain, Inc.