File size: 2,873 Bytes
5ae00d2
 
772665f
5ae00d2
 
772665f
5ae00d2
772665f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---

license: other
library_name: transformers
license_name: deepseek
license_link: https://github.com/deepseek-ai/DeepSeek-Coder/blob/main/LICENSE-MODEL
pipeline_tag: text-generation
---

# 🤔 SemCoder: Training Code Language Models with Comprehensive Semantics Reasoning

> Refer to our GitHub repo [ARiSE-Lab/SemCoder](https://github.com/ARiSE-Lab/SemCoder/) for detailed introduction to SemCoder!

## Model Details


Use the code below to get started with the model. Make sure you installed the [transformers](https://huggingface.co/docs/transformers/index) library.

```python

from transformers import pipeline

import torch



generator = pipeline(

  model="semcoder/semcoder_s_1030",

  task="text-generation",

  torch_dtype=torch.float16,

  device_map="auto",

)



# Generate Code



CODEGEN_REQUEST = """You are an exceptionally intelligent coding assistant that consistently delivers accurate and reliable <Code> according to <NL_Description>



<NL_Description>

{desc}



<Code>

"""

desc = """You are tasked with implementing a Python class that simulates a simple version of a "To-Do List" application. The class should have the following functionalities:

1. Add a new task to the to-do list.

2. Mark a task as completed.

3. Display all tasks in the to-do list.

4. Display only the incomplete tasks in the to-do list.

"""



prompt = CODEGEN_REQUEST.format(desc=desc)

result = generator(prompt, max_length=2048, num_return_sequences=1, temperature=0.0)

code = result[0]["generated_text"].split("```python")[1].split("```")[0]

print(code)



# Understand Code with Monologues



FWD_MNL_REQUEST = """Simulate the Execution: You are given a Python function and an assertion containing a function input. Complete the assertion containing the execution output corresponding to the given input in [ANSWER] and [/ANSWER] tags.

{code}

"""



tests = """

todo_list = ToDoList()

todo_list.add_task("Buy groceries")

todo_list.add_task("Complete assignment")

todo_list.mark_completed("Buy groceries")

assert todo_list.tasks == ???

"""

code += tests

prompt = FWD_MNL_REQUEST.format(code=code)

result = generator(prompt, max_length=2048, num_return_sequences=1, temperature=0.0)

print(result[0]["generated_text"])

```

## Citation

```bibtex

@article{ding2024semcoder,

  title={SemCoder: Training Code Language Models with Comprehensive Semantics},

  author={Yangruibo Ding and Jinjun Peng and Marcus J. Min and Gail Kaiser and Junfeng Yang and Baishakhi Ray},

  journal={arXiv preprint arXiv:2406.01006},

  year={2024}

}

```

## Important Note

SemCoder models are trained on the synthetic data generated by OpenAI models. Please pay attention to OpenAI's [terms of use](https://openai.com/policies/terms-of-use) when using the models and the datasets. SemCoder will not compete with OpenAI's commercial products.