| | import gradio as gr |
| | import torch |
| | import transformers |
| | import os |
| |
|
| | |
| | |
| | MODEL_ID = "Qwen/Qwen2.5-Coder-7B-Instruct" |
| |
|
| | |
| | print("๋ชจ๋ธ์ ๋ก๋ํ๋ ์ค์
๋๋ค... ์ด๊ธฐ ์คํ ์ ์๊ฐ์ด ๋ค์ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.") |
| | try: |
| | |
| | model = transformers.AutoModelForCausalLM.from_pretrained( |
| | MODEL_ID, |
| | torch_dtype=torch.bfloat16, |
| | device_map="auto", |
| | load_in_4bit=True, |
| | ) |
| | tokenizer = transformers.AutoTokenizer.from_pretrained(MODEL_ID) |
| | |
| | |
| | text_generator = transformers.pipeline( |
| | "text-generation", |
| | model=model, |
| | tokenizer=tokenizer, |
| | ) |
| | print("โ
๋ชจ๋ธ ๋ก๋ฉ ์๋ฃ!") |
| | except Exception as e: |
| | print(f"โ ๋ชจ๋ธ ๋ก๋ฉ ์คํจ: {e}") |
| | |
| | def text_generator(*args, **kwargs): |
| | yield "๋ชจ๋ธ์ ๋ก๋ํ๋ ๋ฐ ์คํจํ์ต๋๋ค. Space์ ํ๋์จ์ด ์ค์ ์ ํ์ธํ๊ฑฐ๋ ๋ชจ๋ธ ์ด๋ฆ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํด์ฃผ์ธ์." |
| |
|
| |
|
| | def respond( |
| | message, |
| | history: list[tuple[str, str]], |
| | system_message, |
| | max_tokens, |
| | temperature, |
| | top_p, |
| | ): |
| | """ |
| | ์ฌ์ฉ์์ ๋ฉ์์ง์ ๋ํ ๋ต๋ณ์ ์์ฑํ๋ ํจ์ |
| | """ |
| | |
| | messages = [{"role": "system", "content": system_message}] |
| | |
| | |
| | for user_msg, bot_msg in history: |
| | messages.append({"role": "user", "content": user_msg}) |
| | messages.append({"role": "assistant", "content": bot_msg}) |
| | |
| | messages.append({"role": "user", "content": message}) |
| |
|
| | |
| | prompt = tokenizer.apply_chat_template( |
| | messages, |
| | tokenize=False, |
| | add_generation_prompt=True |
| | ) |
| |
|
| | |
| | response = "" |
| | generation_args = { |
| | "max_new_tokens": max_tokens, |
| | "temperature": temperature, |
| | "top_p": top_p, |
| | "do_sample": True, |
| | "stream": True, |
| | } |
| |
|
| | for chunk in text_generator(prompt, **generation_args): |
| | |
| | token = chunk[0]['generated_text'][len(prompt):] |
| | response = token |
| | yield response |
| |
|
| |
|
| | """ |
| | Gradio ChatInterface๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ด UI๋ฅผ ๋ง๋ญ๋๋ค. |
| | """ |
| | chatbot = gr.ChatInterface( |
| | respond, |
| | type="messages", |
| | additional_inputs_accordion="โ๏ธ ๋งค๊ฐ๋ณ์ ์ค์ ", |
| | additional_inputs=[ |
| | gr.Textbox( |
| | value="You are Qwen2.5-Coder, created by Alibaba Cloud. You are a helpful assistant specialized in coding and programming.", |
| | label="System message" |
| | ), |
| | gr.Slider( |
| | minimum=1, |
| | maximum=4096, |
| | value=1024, |
| | step=1, |
| | label="Max new tokens" |
| | ), |
| | gr.Slider( |
| | minimum=0.1, |
| | maximum=4.0, |
| | value=0.7, |
| | step=0.1, |
| | label="Temperature" |
| | ), |
| | gr.Slider( |
| | minimum=0.1, |
| | maximum=1.0, |
| | value=0.95, |
| | step=0.05, |
| | label="Top-p (nucleus sampling)", |
| | ), |
| | ], |
| | examples=[ |
| | ["PyTorch๋ก ๊ฐ๋จํ CNN ๋ชจ๋ธ์ ๋ง๋ค์ด์ค."], |
| | ["์ด ํ์ด์ฌ ์ฝ๋๋ฅผ ์ต์ ํํด์ค:\n\n```python\nfor i in range(len(my_list)):\n print(my_list[i])\n```"], |
| | ["FastAPI๋ก 'hello world'๋ฅผ ์ถ๋ ฅํ๋ API ์๋ํฌ์ธํธ๋ฅผ ๋ง๋ค์ด์ค."], |
| | ], |
| | cache_examples=False, |
| | ) |
| |
|
| | |
| | with gr.Blocks(theme=gr.themes.Soft(), title="๋๋ง์ AI ์ฝ๋ ๋ฆฌ๋") as demo: |
| | gr.Markdown("# ๐ค ๋๋ง์ AI ์ฝ๋ ๋ฆฌ๋ (Qwen2.5-Coder)") |
| | gr.Markdown("์ด ์ฑ๋ด์ **Qwen2.5-Coder-7B-Instruct** ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ถ์ํฉ๋๋ค.") |
| | chatbot.render() |
| |
|
| | if __name__ == "__main__": |
| | demo.launch() |
| |
|