!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)

You are viewing the **preview** v0.2 docs. View the **stable** v0.1 docs [here](/v0.1/docs/get_started/introduction/). Leave feedback on the v0.2 docs [here](https://github.com/langchain-ai/langchainjs/discussions/5386).

[

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

](/v0.2/)[Integrations](/v0.2/docs/integrations/platforms/)[API Reference](https://v02.api.js.langchain.com)

[More](#)

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

[v0.2](#)

*   [v0.2](/v0.2/docs/introduction)
*   [v0.1](https://js.langchain.com/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

*   [Providers](/v0.2/docs/integrations/platforms/)
    
    *   [Providers](/v0.2/docs/integrations/platforms/)
    *   [Anthropic](/v0.2/docs/integrations/platforms/anthropic)
    *   [AWS](/v0.2/docs/integrations/platforms/aws)
    *   [Google](/v0.2/docs/integrations/platforms/google)
    *   [Microsoft](/v0.2/docs/integrations/platforms/microsoft)
    *   [OpenAI](/v0.2/docs/integrations/platforms/openai)
*   [Components](/v0.2/docs/integrations/components)
    
    *   [Chat models](/v0.2/docs/integrations/chat/)
        
    *   [LLMs](/v0.2/docs/integrations/llms/)
        
    *   [Embedding models](/v0.2/docs/integrations/text_embedding)
        
    *   [Document loaders](/v0.2/docs/integrations/document_loaders)
        
    *   [Document transformers](/v0.2/docs/integrations/document_transformers)
        
    *   [Vector stores](/v0.2/docs/integrations/vectorstores)
        
    *   [Retrievers](/v0.2/docs/integrations/retrievers)
        
    *   [Tools](/v0.2/docs/integrations/tools)
        
        *   [ChatGPT Plugins](/v0.2/docs/integrations/tools/aiplugin-tool)
        *   [Connery Action Tool](/v0.2/docs/integrations/tools/connery)
        *   [Dall-E Tool](/v0.2/docs/integrations/tools/dalle)
        *   [Discord Tool](/v0.2/docs/integrations/tools/discord)
        *   [DuckDuckGoSearch](/v0.2/docs/integrations/tools/duckduckgo_search)
        *   [Exa Search](/v0.2/docs/integrations/tools/exa_search)
        *   [Gmail Tool](/v0.2/docs/integrations/tools/gmail)
        *   [Google Calendar Tool](/v0.2/docs/integrations/tools/google_calendar)
        *   [Google Places Tool](/v0.2/docs/integrations/tools/google_places)
        *   [Agent with AWS Lambda](/v0.2/docs/integrations/tools/lambda_agent)
        *   [Python interpreter tool](/v0.2/docs/integrations/tools/pyinterpreter)
        *   [SearchApi tool](/v0.2/docs/integrations/tools/searchapi)
        *   [Searxng Search tool](/v0.2/docs/integrations/tools/searxng)
        *   [StackExchange Tool](/v0.2/docs/integrations/tools/stackexchange)
        *   [Tavily Search](/v0.2/docs/integrations/tools/tavily_search)
        *   [Web Browser Tool](/v0.2/docs/integrations/tools/webbrowser)
        *   [Wikipedia tool](/v0.2/docs/integrations/tools/wikipedia)
        *   [WolframAlpha Tool](/v0.2/docs/integrations/tools/wolframalpha)
        *   [Agent with Zapier NLA Integration](/v0.2/docs/integrations/tools/zapier_agent)
    *   [Toolkits](/v0.2/docs/integrations/toolkits)
        
    *   [Stores](/v0.2/docs/integrations/stores/)
        

*   [](/v0.2/)
*   [Components](/v0.2/docs/integrations/components)
*   [Tools](/v0.2/docs/integrations/tools)
*   Python interpreter tool

Python interpreter tool
=======================

danger

This tool executes code and can potentially perform destructive actions. Be careful that you trust any code passed to it!

LangChain offers an experimental tool for executing arbitrary Python code. This can be useful in combination with an LLM that can generate code to perform more powerful computations.

Usage[​](#usage "Direct link to Usage")
---------------------------------------

tip

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

*   npm
*   Yarn
*   pnpm

    npm install @langchain/openai

    yarn add @langchain/openai

    pnpm add @langchain/openai

    import { OpenAI } from "@langchain/openai";import { PythonInterpreterTool } from "langchain/experimental/tools/pyinterpreter";import { ChatPromptTemplate } from "@langchain/core/prompts";import { StringOutputParser } from "@langchain/core/output_parsers";const prompt = ChatPromptTemplate.fromTemplate(  `Generate python code that does {input}. Do not generate anything else.`);const model = new OpenAI({});const interpreter = await PythonInterpreterTool.initialize({  indexURL: "../node_modules/pyodide",});// Note: In Deno, it may be easier to initialize the interpreter yourself:// import pyodideModule from "npm:pyodide/pyodide.js";// import { PythonInterpreterTool } from "npm:langchain/experimental/tools/pyinterpreter";// const pyodide = await pyodideModule.loadPyodide();// const pythonTool = new PythonInterpreterTool({instance: pyodide})const chain = prompt  .pipe(model)  .pipe(new StringOutputParser())  .pipe(interpreter);const result = await chain.invoke({  input: `prints "Hello LangChain"`,});console.log(JSON.parse(result).stdout);// To install python packages:// This uses the loadPackages command.// This works for packages built with pyodide.await interpreter.addPackage("numpy");// But for other packages, you will want to use micropip.// See: https://pyodide.org/en/stable/usage/loading-packages.html// for more informationawait interpreter.addPackage("micropip");// The following is roughly equivalent to:// pyodide.runPython(`import ${pkgname}; ${pkgname}`);const micropip = interpreter.pyodideInstance.pyimport("micropip");await micropip.install("numpy");

#### API Reference:

*   [OpenAI](https://v02.api.js.langchain.com/classes/langchain_openai.OpenAI.html) from `@langchain/openai`
*   [PythonInterpreterTool](https://v02.api.js.langchain.com/classes/langchain_experimental_tools_pyinterpreter.PythonInterpreterTool.html) from `langchain/experimental/tools/pyinterpreter`
*   [ChatPromptTemplate](https://v02.api.js.langchain.com/classes/langchain_core_prompts.ChatPromptTemplate.html) from `@langchain/core/prompts`
*   [StringOutputParser](https://v02.api.js.langchain.com/classes/langchain_core_output_parsers.StringOutputParser.html) from `@langchain/core/output_parsers`

* * *

#### Was this page helpful?

  

#### You can leave detailed feedback [on GitHub](https://github.com/langchain-ai/langchainjs/issues/new?assignees=&labels=03+-+Documentation&projects=&template=documentation.yml&title=DOC%3A+%3CPlease+write+a+comprehensive+title+after+the+%27DOC%3A+%27+prefix%3E).

[

Previous

Agent with AWS Lambda

](/v0.2/docs/integrations/tools/lambda_agent)[

Next

SearchApi tool

](/v0.2/docs/integrations/tools/searchapi)

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.