test-cokoder / app.py
ewhk9887's picture
Update app.py
03c4043 verified
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# ๋ชจ๋ธ ๋กœ๋“œ
MODEL_NAME = "ewhk9887/deepseek-cokoder"
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype=torch.float16 if device == "cuda" else torch.float32)
model.to(device)
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
# ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ƒ์„ฑ ํ•จ์ˆ˜
def generate_code_review(user_input, system_message, max_tokens, temperature, top_p):
"""
์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ AI ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ƒ์„ฑ.
"""
# ๋ฉ”์‹œ์ง€ ํฌ๋งท ์ƒ์„ฑ
prompt = f"{system_message}\n\nCode:\n{user_input}\n\nReview:"
inputs = tokenizer(prompt, return_tensors="pt").to(device)
# ๋ชจ๋ธ ์ถœ๋ ฅ ์ƒ์„ฑ
outputs = model.generate(
inputs.input_ids,
max_new_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
repetition_penalty=1.1,
pad_token_id=tokenizer.eos_token_id
)
review = tokenizer.decode(outputs[0], skip_special_tokens=True)
return review
# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ
with gr.Blocks() as demo:
gr.Markdown("# DeepSeek Code Review Assistant")
gr.Markdown("AI๊ฐ€ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋ฆฌ๋ทฐ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!")
with gr.Row():
with gr.Column():
code_input = gr.Textbox(label="์ฝ”๋“œ ์ž…๋ ฅ", placeholder="๋ฆฌ๋ทฐ๋ฅผ ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”...", lines=10)
system_message = gr.Textbox(
label="์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€",
value="์œ ์ €์˜ ์ฝ”๋“œ์—์„œ ์˜ค๋ฅ˜์™€ ๊ฐœ์„ ์ ์„ ํ•œ๊ตญ์–ด๋กœ ๋ฆฌ๋ทฐํ•˜์„ธ์š”.",
lines=3,
)
with gr.Column():
review_output = gr.Textbox(label="์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ", lines=10)
# ์ถ”๊ฐ€ ์˜ต์…˜
max_tokens = gr.Slider(label="Max Tokens", minimum=10, maximum=512, value=256, step=10)
temperature = gr.Slider(label="Temperature", minimum=0.1, maximum=1.0, value=0.7, step=0.1)
top_p = gr.Slider(label="Top-p", minimum=0.1, maximum=1.0, value=0.9, step=0.05)
# ๋ฒ„ํŠผ
generate_button = gr.Button("๋ฆฌ๋ทฐ ์ƒ์„ฑ")
# ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ
generate_button.click(
fn=generate_code_review,
inputs=[code_input, system_message, max_tokens, temperature, top_p],
outputs=review_output,
)
# ์‹คํ–‰
if __name__ == "__main__":
demo.launch()