Skip to main content

Fork of https://github.com/shroominic/codeinterpreter-api

Project description

Code Interpreter API

A LangChain implementation of the ChatGPT Code Interpreter. Using CodeBoxes as backend for sandboxed python code execution. CodeBox is the simplest cloud infrastructure for your LLM Apps. You can run everything local except the LLM using your own OpenAI API Key.

Features

  • Dataset Analysis, Stock Charting, Image Manipulation, ....
  • Internet access and auto Python package installation
  • Input text + files -> Receive text + files
  • Conversation Memory: respond based on previous inputs
  • Run everything local except the OpenAI API (OpenOrca or others maybe soon)
  • Use CodeBox API for easy scaling in production (coming soon)

Installation

Get your OpenAI API Key here and install the package.

pip install "codeinterpreterapi[all]"

Everything for local experiments are installed with the all extra. For deployments, you can use pip install codeinterpreterapi instead which does not install the additional dependencies.

Usage

To configure OpenAI and Azure OpenAI, ensure that you set the appropriate environment variables (or use a .env file):

For OpenAI, set the OPENAI_API_KEY environment variable:

export OPENAI_API_KEY=your_openai_api_key  

For Azure OpenAI, set the following environment variables:

export OPENAI_API_TYPE=azure  
export OPENAI_API_VERSION=your_api_version  
export OPENAI_API_BASE=your_api_base  
export OPENAI_API_KEY=your_azure_openai_api_key  
export DEPLOYMENT_NAME=your_deployment_name  

Remember to replace the placeholders with your actual API keys and other required information.

from codeinterpreterapi import CodeInterpreterSession


async def main():
    # create a session
    session = CodeInterpreterSession()
    await session.astart()

    # generate a response based on user input
    response = await session.generate_response(
        "Plot the bitcoin chart of 2023 YTD"
    )

    # output the response (text + image)
    print("AI: ", response.content)
    for file in response.files:
        file.show_image()

    # terminate the session
    await session.astop()


if __name__ == "__main__":
    import asyncio
    # run the async function
    asyncio.run(main())

Bitcoin YTD
Bitcoin YTD Chart Output

Dataset Analysis

from codeinterpreterapi import CodeInterpreterSession, File


async def main():
    # context manager for auto start/stop of the session
    async with CodeInterpreterSession() as session:
        # define the user request
        user_request = "Analyze this dataset and plot something interesting about it."
        files = [
            File.from_path("examples/assets/iris.csv"),
        ]

        # generate the response
        response = await session.generate_response(
            user_request, files=files
        )

        # output to the user
        print("AI: ", response.content)
        for file in response.files:
            file.show_image()


if __name__ == "__main__":
    import asyncio

    asyncio.run(main())

Iris Dataset Analysis
Iris Dataset Analysis Output

Production

In case you want to deploy to production, you can utilize the CodeBox API for seamless scalability.

Please contact me if you are interested in this, as it is still in the early stages of development.

Contributing

There are some remaining TODOs in the code. So, if you want to contribute, feel free to do so. You can also suggest new features. Code refactoring is also welcome. Just open an issue or pull request and I will review it.

Please also submit any bugs you find as an issue with a minimal code example or screenshot. This helps me a lot in improving the code.

Thanks!

Streamlit WebApp

To start the web application created with streamlit:

streamlit run frontend/app.py

License

MIT

Contact

You can contact me at contact@shroominic.com. But I prefer to use Twitter or Discord DMs.

Support this project

If you would like to help this project with a donation, you can click here. Thanks, this helps a lot! ❤️

Star History

Star History Chart

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codeinterpreterapi-warren-0.1.0.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file codeinterpreterapi-warren-0.1.0.tar.gz.

File metadata

File hashes

Hashes for codeinterpreterapi-warren-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5f917c10624967058d10e7d14e5689d4b40d3f5a638fc05ad2852b3a68359f80
MD5 1f5773b4056beaa8bb2a0817e38280f6
BLAKE2b-256 3b83e0f2fa179e8577314a8a26ee2ec734e057f03b83151ff438650b55b14372

See more details on using hashes here.

File details

Details for the file codeinterpreterapi_warren-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for codeinterpreterapi_warren-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ea459ba83e0f5047fd01bb792f6708ed4fdc1e463e0d0eeea84a33eafe380b04
MD5 43ed99e269b7077203b042a637ce751c
BLAKE2b-256 04ad1d9a603904bb9869ccfd97d6e4f5831024b799a382a9cb8db301c7262c41

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page