Skip to main content

CodeInterpreterAPI is an (unofficial) open source python interface for the ChatGPT CodeInterpreter.

Project description

👾 Code Interpreter API

Version code-check Downloads License PyVersion

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

Docs

Checkout the documentation for more information.

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=sk-**********
from codeinterpreterapi import CodeInterpreterSession, settings


# create a session and close it automatically
with CodeInterpreterSession() as session:
    # generate a response based on user input
    response = session.generate_response(
        "Plot the bitcoin chart of year 2023"
    )
    # output the response
    response.show()

Bitcoin YTD Bitcoin YTD Chart Output

Dataset Analysis

from codeinterpreterapi import CodeInterpreterSession, File

# this example uses async but normal sync like above works too
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 = [
            # attach files to the request
            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:
            # iterate over the files (display if image)
            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.

Before submitting a pull request, please run the pre-commit hooks to ensure that the code is formatted correctly.

pre-commit install
pre-commit run --all-files

Thanks!

Streamlit WebApp

To start the web application created with streamlit:

streamlit run frontend/app.py --browser.gatherUsageStats=False

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! ❤️

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_yayi-0.1.15.tar.gz (227.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

codeinterpreterapi_yayi-0.1.15-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file codeinterpreterapi_yayi-0.1.15.tar.gz.

File metadata

  • Download URL: codeinterpreterapi_yayi-0.1.15.tar.gz
  • Upload date:
  • Size: 227.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.2

File hashes

Hashes for codeinterpreterapi_yayi-0.1.15.tar.gz
Algorithm Hash digest
SHA256 fde832197f5b9759e98b068512a531477719e1c9cfc27de981efbfd5dfb7262b
MD5 8601e0b969ffaf6b0b7b1d624a400efb
BLAKE2b-256 29e2bf4dce298c49e34ab65520acbf59e4c18688c0984015e15c2747ff507337

See more details on using hashes here.

File details

Details for the file codeinterpreterapi_yayi-0.1.15-py3-none-any.whl.

File metadata

File hashes

Hashes for codeinterpreterapi_yayi-0.1.15-py3-none-any.whl
Algorithm Hash digest
SHA256 70f217b319c801c150afc76f1f5f398ebccb26ba213e5227aa2b93fa583afbbf
MD5 545443d2711aa76bda2e30d82cebe01f
BLAKE2b-256 7b3cadb8532cb45814f49da1bd811009571a0f1aeef72fe4e8c6c6ea0e09ccd7

See more details on using hashes here.

Supported by

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