Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| EXAMPLES = { | |
| "has_close_elements — check threshold proximity": { | |
| "docstring": ( | |
| "Check if in given list of numbers, are any two numbers closer to each\n" | |
| "other than given threshold.\n" | |
| ">>> has_close_elements([1.0, 2.0, 3.0], 0.5)\n" | |
| "False\n" | |
| ">>> has_close_elements([1.0, 2.8, 3.0, 4.0, 5.0, 2.0], 0.3)\n" | |
| "True" | |
| ), | |
| "completion": ( | |
| "def has_close_elements(numbers: List[float], threshold: float) -> bool:\n" | |
| " for i in range(len(numbers)):\n" | |
| " for j in range(i + 1, len(numbers)):\n" | |
| " if abs(numbers[i] - numbers[j]) < threshold:\n" | |
| " return True\n" | |
| " return False" | |
| ), | |
| }, | |
| "separate_paren_groups — split nested parentheses": { | |
| "docstring": ( | |
| "Input to this function is a string containing multiple groups of nested\n" | |
| "parentheses. Your goal is to separate those groups into separate strings\n" | |
| "and return the list of those. Separate groups are balanced (each open\n" | |
| "brace is properly closed) and not nested within each other. Ignore any\n" | |
| "spaces in the input string.\n" | |
| ">>> separate_paren_groups('( ) (( )) (( )( ))')\n" | |
| "['()', '(())', '(()())']" | |
| ), | |
| "completion": ( | |
| "def separate_paren_groups(paren_string: str) -> List[str]:\n" | |
| " result = []\n" | |
| " depth = 0\n" | |
| " current = ''\n" | |
| " for char in paren_string:\n" | |
| " if char == '(':\n" | |
| " depth += 1\n" | |
| " current += char\n" | |
| " elif char == ')':\n" | |
| " depth -= 1\n" | |
| " current += char\n" | |
| " if depth == 0:\n" | |
| " result.append(current)\n" | |
| " current = ''\n" | |
| " return result" | |
| ), | |
| }, | |
| "rescale_to_unit — linear normalisation to [0, 1]": { | |
| "docstring": ( | |
| "Given a list of numbers (of at least two elements), apply a linear\n" | |
| "transform to that list, such that the smallest number will become 0 and\n" | |
| "the largest will become 1.\n" | |
| ">>> rescale_to_unit([1.0, 2.0, 3.0, 4.0, 5.0])\n" | |
| "[0.0, 0.25, 0.5, 0.75, 1.0]" | |
| ), | |
| "completion": ( | |
| "def rescale_to_unit(numbers: List[float]) -> List[float]:\n" | |
| " min_val = min(numbers)\n" | |
| " max_val = max(numbers)\n" | |
| " return [(x - min_val) / (max_val - min_val) for x in numbers]" | |
| ), | |
| }, | |
| "remove_duplicates — keep only unique elements": { | |
| "docstring": ( | |
| "From a list of integers, remove all elements that occur more than once.\n" | |
| "Keep the order of elements left the same as in the input.\n" | |
| ">>> remove_duplicates([1, 2, 3, 2, 4])\n" | |
| "[1, 3, 4]" | |
| ), | |
| "completion": ( | |
| "def remove_duplicates(numbers: List[int]) -> List[int]:\n" | |
| " from collections import Counter\n" | |
| " counts = Counter(numbers)\n" | |
| " return [x for x in numbers if counts[x] == 1]" | |
| ), | |
| }, | |
| "sort_third — sort every third index in-place": { | |
| "docstring": ( | |
| "This function takes a list l and returns a list l' such that l' is\n" | |
| "identical to l in the indices that are not divisible by three, while\n" | |
| "its values at the indices that are divisible by three are equal to the\n" | |
| "values of the corresponding indices of l, but sorted.\n" | |
| ">>> sort_third([1, 2, 3])\n" | |
| "[1, 2, 3]\n" | |
| ">>> sort_third([5, 6, 3, 4, 8, 9, 2])\n" | |
| "[2, 6, 3, 4, 8, 9, 5]" | |
| ), | |
| "completion": ( | |
| "def sort_third(l: list) -> list:\n" | |
| " thirds = sorted(l[i] for i in range(0, len(l), 3))\n" | |
| " result = list(l)\n" | |
| " j = 0\n" | |
| " for i in range(0, len(l), 3):\n" | |
| " result[i] = thirds[j]\n" | |
| " j += 1\n" | |
| " return result" | |
| ), | |
| }, | |
| } | |
| EXAMPLE_NAMES = list(EXAMPLES.keys()) | |
| def load_example(name: str): | |
| ex = EXAMPLES[name] | |
| return ex["docstring"], ex["completion"] | |
| with gr.Blocks(title="CodeLlama-7B QLoRA — Python Code Completion Demo") as demo: | |
| gr.Markdown( | |
| """ | |
| # CodeLlama-7B QLoRA — Python Code Completion | |
| Fine-tuned on CodeSearchNet Python with LoRA (rank=8) · Evaluated on HumanEval | |
| | pass@1 | pass@5 | pass@10 | | |
| |--------|--------|---------| | |
| | 26.83% | 35.91% | 38.41% | | |
| > **Pre-computed outputs from fine-tuned CodeLlama-7B + QLoRA model (inference requires GPU)** | |
| > Model: [`sedaklc/codellama-7b-qlora-humaneval`](https://huggingface.co/sedaklc/codellama-7b-qlora-humaneval) | |
| """ | |
| ) | |
| dropdown = gr.Dropdown( | |
| choices=EXAMPLE_NAMES, | |
| value=EXAMPLE_NAMES[0], | |
| label="Select a HumanEval problem", | |
| ) | |
| with gr.Row(): | |
| docstring_box = gr.Textbox( | |
| label="Docstring (input prompt)", | |
| lines=10, | |
| interactive=False, | |
| ) | |
| completion_box = gr.Code( | |
| label="Model completion (output)", | |
| language="python", | |
| lines=10, | |
| interactive=False, | |
| ) | |
| dropdown.change(fn=load_example, inputs=dropdown, outputs=[docstring_box, completion_box]) | |
| demo.load(fn=load_example, inputs=dropdown, outputs=[docstring_box, completion_box]) | |
| if __name__ == "__main__": | |
| demo.launch() | |