GitHunt
DA

datashaman/editai

Simple REPL using OpenAI's edit API.

editai

Simple REPL using OpenAI's edit API.

installation

python setup.py install

or

pip install .
cp .env.example .env
vim .env

Set your OpenAI API Key in the .env file.

usage

editai [--input filename] [--temperature float]

If filename is - it reads from stdin. Temperature is anywhere from 0 to 1, 1 by default.

When prompted, enter an instruction to change the input. The application will use the output
from OpenAI as the input for the next instruction.

special instructions

  • :d - delete the current input, setting it to "".
  • :q - quit the REPL.
  • :t float - set the temperature for the next request. Must be value from 0 to 1.
  • :u - undo the last change to the input. Infinite stack of undos.
  • :w filename - write input to a filename.
  • :! or :!python - execute the input in python.
  • :!node or :!js or :!javascript - execute the input in node.

If you press Enter, submitting nothing, the current input is displayed.

sample sessions

Fibonacci

$ editai --temperature 0.2

>>> Write a function in python that calculates fibonacci
def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(9))

>>> add documentation
def fibonacci(n):
    """
    Returns the nth number in the fibonacci sequence
    """
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(9))

>>> :d

>>> write a function in javascript that calculate fibonacci
function fibonacci(n) {
    if (n < 2) {
        return n;
    }
    return fibonacci(n - 1) + fibonacci(n - 2);
}

console.log(fibonacci(5));

>>> :w fib.js
>>> :q

$ cat fib.js
function fibonacci(n) {
    if (n < 2) {
        return n;
    }
    return fibonacci(n - 1) + fibonacci(n - 2);
}

console.log(fibonacci(5));

FizzBuzz

$ editai --temperature 0.2

>>> implement fizzbuzz in python
for i in range(1,101):
    if i % 3 == 0 and i % 5 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

>>> make it shorter
for i in range(1,101):
    print("Fizz"*(i%3==0)+"Buzz"*(i%5==0) or i)

Languages

Python98.2%Shell1.8%

Contributors

Created December 30, 2022
Updated December 30, 2022