Skip to main content

Jupyter kernel that can generate Python code from natural language prompts

Project description

ICortex Kernel

Github Actions Status License

ICortex is a Jupyter kernel that lets you program using plain English, by generating Python code from natural language prompts:

https://user-images.githubusercontent.com/2453968/196814906-1a0de2a1-27a7-4aec-a960-0eb21fbe2879.mp4

TODO: Prompts are given using the %prompt magic now, update the video accordingly

It is ...

  • a drop-in replacement for the IPython kernel. Prompts can be executed with the magic commands %prompt or %p for short.
  • an interface for Natural Language Programming interface—prompts written in plain English automatically generate Python code which can then be executed globally.
  • interactive—install missing packages directly, decide whether to execute the generated code or not, and so on, directly in the Jupyter Notebook cell.
  • open source and fully extensible—if you think we are missing a model or an API, you can request it by creating an issue, or implement it yourself by subclassing ServiceBase under icortex/services.

ICortex is currently in alpha, so expect breaking changes. We are giving free credits to our first users—join our Discord to help us shape this product.

Installation

To install the ICortex Kernel, run the following in the main project directory:

pip install icortex

This will install the Python package and the icortex command line interface. You will need to run icortex once to install the kernel spec to Jupyter.

Using ICortex

Before you can use ICortex in Jupyter, you need to configure it for your current project.

If you are using the terminal:

icortex init

Alternatively, you can initialize directly in a Jupyter Notebook (instructions on how to start JupyterLab):

%icortex init

The shell will then instruct you step by step and create a configuration file icortex.toml in the current directory.

Choosing a code generation service

ICortex supports different code generation services such as the TextCortex API, OpenAI Codex API, local HuggingFace transformers, and so on.

To use the TextCortex code generation API,

  1. sign up on the website,
  2. generate an API key on the dashboard,
  3. and proceed to configure icortex for your current project:

asciicast

If you use up the starter credits and would like to continue testing out ICortex, hit us up on our Discord on #icortex channel and we will charge your account with more free credits.

You can also try out different services e.g. OpenAI's Codex API, if you have access. You can also run code generation models from HuggingFace locally, which we have optimized to run on the CPU—though these produce lower quality outputs due to being smaller.

Usage

Executing prompts

To execute a prompt with ICortex, use the %prompt magic command (or %p for short) as a prefix. Copy and paste the following prompt into a cell and try to run it:

%p print Hello World. Then print the Fibonacci numbers till 100

Depending on the response, you should see an output similar to the following:

print('Hello World.', end=' ')
a, b = 0, 1
while b < 100:
    print(b, end=' ')
    a, b = b, a+b

Hello World.
1 1 2 3 5 8 13 21 34 55 89

You can also specify variables or options with command line flags, e.g. to auto-install packages, auto-execute the returned code and so on. To see the complete list of variables for your chosen service, run:

%help

Using ICortex CLI

ICortex comes with a full-fledged CLI similar to git or Docker CLI, which you can use to configure how you generate code in your project. To see all the commands you can invoke, run

icortex help

For example the command icortex service lets you configure the code generation service you would like to use. To see how to use each command, call them with help

icortex service help

Accessing ICortex CLI inside Jupyter

You can still access the icortex CLI in a Jupyter Notebook or shell by using the magic command %icortex. For example running the following in the terminal switches to a local HuggingFace model:

icortex service set huggingface

To do the same in a Jupyter Notebook, you can run

%icortex service set huggingface

in a cell, which initializes and switches to the new service directly in your Jupyter session.

Getting help

Feel free to ask questions in our Discord.

Uninstalling

To uninstall, run

pip uninstall icortex

This removes the package, however, it may still leave the kernel spec in Jupyter's kernel directories, causing it to continue showing up in JupyterLab. If that is the case, run

jupyter kernelspec uninstall icortex -y

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

icortex-0.1.0.tar.gz (99.4 kB view details)

Uploaded Source

Built Distribution

icortex-0.1.0-py3-none-any.whl (102.1 kB view details)

Uploaded Python 3

File details

Details for the file icortex-0.1.0.tar.gz.

File metadata

  • Download URL: icortex-0.1.0.tar.gz
  • Upload date:
  • Size: 99.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for icortex-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cf1f8f04d2a205896ebe1ef744a1cd7967cdf4de1d8ed2f3b6184ad237829e59
MD5 0e97e9bc0da85dee136e4a9de134741b
BLAKE2b-256 caf3468982badc44b7575e9cc5b03f715cd42fb98e5d48d8a0e73de901320977

See more details on using hashes here.

File details

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

File metadata

  • Download URL: icortex-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 102.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for icortex-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d66bc56ee5fc7b01588de296be12bb5579b9aeaaefd528b27ee7f5d92ab9d753
MD5 e50b6f132513ec7e39e4803af0b8b463
BLAKE2b-256 a39db651968c5349c6e114c1b9ba8809d5d455724fd438e4cebb700eeab0a5f6

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