Spaces:
Runtime error
Runtime error
File size: 3,703 Bytes
0a35d3e a081ff4 6842806 a081ff4 6b904c9 0a35d3e 6b904c9 0a35d3e 6b904c9 f0a45da 0a35d3e a9a0b5c f0a45da 0a35d3e f0a45da a081ff4 23a6073 0a35d3e f0a45da 0a35d3e f0a45da 6b904c9 f0a45da 6842806 f0a45da 321a2ed 0a35d3e f0a45da 321a2ed 0a35d3e f0a45da 0a35d3e 6b904c9 a081ff4 0a35d3e f0a45da 0a35d3e 6b904c9 7e44eab 0a35d3e 23a6073 0a35d3e |
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer
# model_name = "flax-community/gpt-code-clippy-1.3B-apps-alldata"
model_name = "flax-community/gpt-code-clippy-125M-apps-alldata"
@st.cache(allow_output_mutation=True, max_entries=1)
def get_model():
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
return (model, tokenizer)
def format_input(question, starter_code=""):
answer_type = "\nUse Call-Based format\n" if starter_code else \
"\nUse Standard Input format\n"
return f"\nQUESTION:\n{question}\n{starter_code}\n{answer_type}\nANSWER:\n"
def generate_solution(model, tokenizer, question, starter_code="", temperature=1.0, num_beams=1):
prompt = format_input(question, starter_code)
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
start = len(input_ids[0])
output = model.generate(
input_ids,
max_length=start + 150,
do_sample=True,
top_p=0.95,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
early_stopping=True,
temperature=temperature,
num_beams=int(num_beams),
no_repeat_ngram_size=None,
repetition_penalty=None,
num_return_sequences=None,
)
return tokenizer.decode(output[0][start:], skip_special_tokens=True).strip()
_EXAMPLES = [
[
"""
Given a 2D list of size `m * n`. Your task is to find the sum of minimum value in each row.
For Example:
```python
[
[1, 2, 3, 4, 5], # minimum value of row is 1
[5, 6, 7, 8, 9], # minimum value of row is 5
[20, 21, 34, 56, 100] # minimum value of row is 20
]
```
So, the function should return `26` because sum of minimums is as `1 + 5 + 20 = 26`
""",
"",
0.8,
],
[
"""
# Personalized greeting
Create a function that gives a personalized greeting. This function takes two parameters: `name` and `owner`.
""",
"""
Use conditionals to return the proper message:
case| return
--- | ---
name equals owner | 'Hello boss'
otherwise | 'Hello guest'
def greet(name, owner):
""",
0.8,
],
]
def run():
st.set_page_config(
page_title="Code Clippy Problem Solver"
)
# sidebar
st.sidebar.title("Code Clippy")
st.sidebar.image(
"https://raw.githubusercontent.com/ncoop57/gpt-code-clippy/camera-ready/code_clippy_logo.jpg",
caption="(c) awesome Aimee Trevett",
)
st.sidebar.markdown("[Github](https://github.com/ncoop57/gpt-code-clippy)")
st.sidebar.markdown("### Controls:")
temperature = st.sidebar.slider(
"Temperature",
min_value=0.5,
max_value=1.5,
value=0.8,
step=0.1,
)
num_beams = st.sidebar.slider(
"Num beams",
min_value=1,
max_value=4,
step=1,
)
# main body
model, tokenizer = get_model()
question = st.text_input(
"Problem: ",
value="A function that can greet user by name. Given a name it should say hello to user.",
help="Text description of the coding problem to be solved",
)
starter_code = st.text_input(
"Started code: ",
value="def greet(name):",
help="Optional starter code"
)
submit_button = st.button("Solve")
if submit_button:
st.text("Solution:")
output = generate_solution(model, tokenizer, question, starter_code, temperature, num_beams)
st.code(output, language="python")
if __name__=="__main__":
run() |