A simple and 100% Local, Open-Source Code 🐍 Interpreter for 🦙 LLMs
https://github.com/itsPreto/baby-code/assets/45348368/a5319303-aa97-4c01-9e91-7d3f03514139
Leveraging open source gguf models and powered by llama.cpp this project is a humble foundation for enabling LLMs to act as Code Interpreters.
ggml/gguf
models).ggml
format).llama.cpp
and relies on its successful build.git clone --recurse-submodules https://github.com/itsPreto/baby-code
cd baby-code/llama.cpp
pip install -r requirements.txt
cd baby-code && pip install -r requirements.txt
In order to build llama.cpp you have three different options.
Using make
:
On Linux or MacOS:
make
On Windows:
w64devkit
on your pc.w64devkit.exe
.cd
command to reach the llama.cpp
folder.make
Using CMake
:
mkdir build
cd build
cmake ..
cmake --build . --config Release
Load up your chosen model gguf
for local inference using CPU or GPU by simply placing it in the llama.cpp/models
folder and edit the baby_code.py
init config below:
if __name__ == '__main__':
# Run the external command
server_process = subprocess.Popen(
["./llama.cpp/server", "-m", "./llama.cpp/models/wizardcoder-python-13b-v1.0.Q5_K_M.gguf", "-c", "1024",
"-ngl", "1", "--path", "."])
# Pause for 5 seconds
time.sleep(5)
app.run(args.host, port=args.port)
You may also want to customize & configure the flask server at the top of the file, like so:
parser = argparse.ArgumentParser(description="An example of using server.cpp with a similar API to OAI. It must be used together with server.cpp.")
parser.add_argument("--stop", type=str, help="the end of response in chat completions(default: '</s>')", default="</s>")
parser.add_argument("--llama-api", type=str, help="Set the address of server.cpp in llama.cpp(default: http://127.0.0.1:8080)", default='http://127.0.0.1:8080')
parser.add_argument("--api-key", type=str, help="Set the api key to allow only few user(default: NULL)", default="")
parser.add_argument("--host", type=str, help="Set the ip address to listen.(default: 127.0.0.1)", default='127.0.0.1')
parser.add_argument("--port", type=int, help="Set the port to listen.(default: 8081)", default=8081)
root
simply run:
python3 baby_code.py
The server.cpp
will be served to http://127.0.0.1:8080/
by default, while the the Flask (baby_code.py
) currently listens on port 8081.
Contributions to this project are welcome. Please create a fork of the repository, make your changes, and submit a pull request. I'll be creating a few issues for feature tracking soon!!
ALSO~ If anyone would like to start a Discord channel and help me manage it that would be awesome
(I'm not on it that much).
This project is licensed under the MIT License.