Synthesize Execute Instruct Debug Rank
Project description
Synthesize Execute Instruct Debug Rank
A framework for AI-assisted program synthesis. Given a problem description and some input-output examples, the framework generates a program that solves the problem.
Paper
You can find an in-depth discussion of this tool, the philosophy it implements and its usage in our paper, Fully Autonomous Programming with Large Language Models. Consider citing it if you use SEIDR in your research.
Usage
from seidr import dev
help(dev)
Reproducing the experiments from our paper
The experiments are contained in benchmark.py and benchmark_humaneval.py files. When you run this file, the AI-generated programs are commited to a dedicated github repository, while the metrics (i.e. how many tests every program passes) will be logged in your Weights and Biases
Prerequisites
Set up Weights and Biases
- Create an account on Weights and Biases
- Install the Weights and Biases library
- Run
wandb loginand follow the instructions
Set up a GitHub repository
- Go to github, log in to the account that's going to push AI-generated code. Remember the $username and $email for that account.
- Go here and generate an access $token
- Set
GIT_USERto "Bot" or whatever the name of the committer shall be - Set
GIT_EMAILto $email - Set
GIT_REMOTEto https://$username:$token@github.com/$repo
Note that you can use a non-GitHub git hosting.
Set up OpenAI access
OpenAI account is needed with access to gpt-3.5-turbo and
an OPENAI_API_KEY environment variable
set to your OpenAI API access token.
Set up Ollama
Run Ollama with Llama 3-8B or another model locally
or on a server.
In the latter case, start the Ollama server with the following commands and note the URL:PORT pair:
OLLAMA_HOST=URL:PORT ollama serve &
OLLAMA_HOST=URL:PORT ollama pull llama3 &
Example .config file layout:
# Github
export GIT_REMOTE=https://USERNAME:KEY@github.com/SOLUTIONS_REPO
export GIT_USER=...
export GIT_EMAIL=...
# Data
export DATA_PATH=...
# OpenAI
export OPENAI_API_KEY=...
export OPENAI_ORG=...
# WandB
export WANDB_ENTITY=...
export WANDB_DIR=...
Run the experiments
If you're using Slurm, write a run.sh file with python benchmark.py
and run it with sbatch run.sh --array=1-500.
If not, run TASK_ID=n python benchmark.py to re-run one of our experiments exactly,
or set the parameters yourself as below.
For example, for basement problem in PSB2, run SEIDR without lexicase selection as follows:
python3 benchmark.py \
--task_id 0 \
--problem bowling \
--language Python \
--branching_factor 2 \
--max_programs 100 \
--drafts_per_prompt 2 \
--explanations_per_program 2 \
--repairs_per_explanation 2 \
--beam_width 2 \
--log INFO \
--lexicase_selection False \
--dataset humaneval \
--model_name gpt-3.5-turbo \
--valid_examples 50 \
--experiment_id 0
To run an example with SEIDR with Llama 3 served by Ollama at URL:PORT on HumanEval with lexicase, run the following:
python3 benchmark_humaneval.py \
--task_id 0 \
--problem Python/0 \
--language Python \
--branching_factor 2 \
--max_programs 100 \
--drafts_per_prompt 2 \
--explanations_per_program 2 \
--repairs_per_explanation 2 \
--beam_width 2 \
--log INFO \
--lexicase_selection True \
--dataset humaneval \
--model_name llama3 \
--experiment_id 0 \
--ollama_url "http://URL:PORT"
Example Slurm scripts are stored in scripts/ and tables with hyperparameters in /config
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file seidr-3.5.0.tar.gz.
File metadata
- Download URL: seidr-3.5.0.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.1 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a22fb242813106f6450e49a1a32e114d5983dd1ff03d1df8e16d29ab7552805c
|
|
| MD5 |
65981fecfc8a15081047298a08461e4e
|
|
| BLAKE2b-256 |
b9bf2d1e0f145a6480ab5612e1fa3889154540b3bd24abe4c928551b0a21f70b
|
File details
Details for the file seidr-3.5.0-py3-none-any.whl.
File metadata
- Download URL: seidr-3.5.0-py3-none-any.whl
- Upload date:
- Size: 19.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.1 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a89c5d7ffd57fadc8e725b50e46edc4742cd35830ae3975c78a39513b09974a6
|
|
| MD5 |
e6cc48a9ba974b45ad0328e1c472ca80
|
|
| BLAKE2b-256 |
e9d4ce27a8149ce7bf587d4b7c2444c8608ec7a4dbd14e72ffa9bacfc9aff216
|