Arthur Samuel Galego Panucci FIgueiredo commited on
Commit
1bd3a70
·
verified ·
1 Parent(s): da49834

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -13
app.py CHANGED
@@ -4,13 +4,18 @@ import gradio as gr
4
  from transformers import AutoTokenizer, AutoModelForCausalLM
5
  from peft import PeftModel
6
 
 
 
 
7
  BASE_MODEL = "google/gemma-3-270m-it"
8
  LORA_MODEL = "loboGOAT/DogeAI-v1.0-instruct"
9
 
10
  HF_TOKEN = os.environ.get("HF_TOKEN")
11
-
12
  device = "cuda" if torch.cuda.is_available() else "cpu"
13
 
 
 
 
14
  print("🔄 Loading tokenizer...")
15
  tokenizer = AutoTokenizer.from_pretrained(
16
  BASE_MODEL,
@@ -29,10 +34,14 @@ print("🔄 Applying LoRA...")
29
  model = PeftModel.from_pretrained(model, LORA_MODEL)
30
  model.eval()
31
 
32
-
33
- def chat(user_input):
 
 
34
  prompt = (
35
  "<bos>\n"
 
 
36
  "<start_of_turn>user\n"
37
  f"{user_input}\n"
38
  "<start_of_turn>model\n"
@@ -43,10 +52,10 @@ def chat(user_input):
43
  with torch.no_grad():
44
  output = model.generate(
45
  **inputs,
46
- max_new_tokens=200,
47
  do_sample=True,
48
- temperature=0.7,
49
- top_p=0.9,
50
  repetition_penalty=1.1,
51
  eos_token_id=tokenizer.eos_token_id,
52
  pad_token_id=tokenizer.pad_token_id
@@ -59,13 +68,73 @@ def chat(user_input):
59
 
60
  return text.strip()
61
 
62
- demo = gr.Interface(
63
- fn=chat,
64
- inputs=gr.Textbox(lines=4, placeholder="Talk to DogeAI 🐕"),
65
- outputs="text",
66
- title="DogeAI v1.0",
67
- description="LoRA fine-tuned Gemma-3-270M-it • Created by Arthur"
68
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
70
  demo.launch()
71
 
 
4
  from transformers import AutoTokenizer, AutoModelForCausalLM
5
  from peft import PeftModel
6
 
7
+ # =========================
8
+ # CONFIG
9
+ # =========================
10
  BASE_MODEL = "google/gemma-3-270m-it"
11
  LORA_MODEL = "loboGOAT/DogeAI-v1.0-instruct"
12
 
13
  HF_TOKEN = os.environ.get("HF_TOKEN")
 
14
  device = "cuda" if torch.cuda.is_available() else "cpu"
15
 
16
+ # =========================
17
+ # LOAD MODEL
18
+ # =========================
19
  print("🔄 Loading tokenizer...")
20
  tokenizer = AutoTokenizer.from_pretrained(
21
  BASE_MODEL,
 
34
  model = PeftModel.from_pretrained(model, LORA_MODEL)
35
  model.eval()
36
 
37
+ # =========================
38
+ # CHAT FUNCTION
39
+ # =========================
40
+ def chat(user_input, system_prompt, temperature, top_p, max_tokens):
41
  prompt = (
42
  "<bos>\n"
43
+ "<start_of_turn>system\n"
44
+ f"{system_prompt}\n"
45
  "<start_of_turn>user\n"
46
  f"{user_input}\n"
47
  "<start_of_turn>model\n"
 
52
  with torch.no_grad():
53
  output = model.generate(
54
  **inputs,
55
+ max_new_tokens=int(max_tokens),
56
  do_sample=True,
57
+ temperature=float(temperature),
58
+ top_p=float(top_p),
59
  repetition_penalty=1.1,
60
  eos_token_id=tokenizer.eos_token_id,
61
  pad_token_id=tokenizer.pad_token_id
 
68
 
69
  return text.strip()
70
 
71
+ # =========================
72
+ # GRADIO UI
73
+ # =========================
74
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
75
+ gr.Markdown(
76
+ """
77
+ # 🐕 DogeAI v1.0
78
+
79
+ ⚠️ **AVISO IMPORTANTE**
80
+ Este modelo é **experimental**, pequeno e pode **ALUCINAR** respostas,
81
+ **inventar fatos**, errar datas, nomes ou explicações técnicas.
82
+
83
+ ❌ **NÃO use como fonte confiável**
84
+ ✅ Use para estudo, testes e experimentação
85
+ """
86
+ )
87
+
88
+ with gr.Row():
89
+ with gr.Column(scale=3):
90
+ user_input = gr.Textbox(
91
+ lines=5,
92
+ label="Mensagem",
93
+ placeholder="Fale com o DogeAI 🐶"
94
+ )
95
+
96
+ submit = gr.Button("Enviar 🚀")
97
+
98
+ output = gr.Textbox(
99
+ lines=10,
100
+ label="Resposta do modelo"
101
+ )
102
+
103
+ with gr.Column(scale=2):
104
+ gr.Markdown("### 🧠 System Prompt")
105
+ system_prompt = gr.Textbox(
106
+ lines=6,
107
+ value=(
108
+ "Você é o DogeAI, um modelo experimental. "
109
+ "Seja honesto quando não souber algo. "
110
+ "Não invente fatos."
111
+ ),
112
+ label="Instruções internas"
113
+ )
114
+
115
+ gr.Markdown("### ⚠️ Hiperparâmetros")
116
+ gr.Markdown(
117
+ "**SÓ MEXA SE SOUBER O QUE ESTÁ FAZENDO**/**ONLY ADJUST VALUES IF YOU KNOW WHAT YOU'RE DOING**\n\n"
118
+ "Valores errados podem causar respostas ruins ou nonsense./Bad values can cause trash or nonsense responses"
119
+ )
120
+
121
+ temperature = gr.Slider(
122
+ 0.1, 1.5, value=0.7, step=0.05, label="Temperature"
123
+ )
124
+
125
+ top_p = gr.Slider(
126
+ 0.1, 1.0, value=0.9, step=0.05, label="Top-p"
127
+ )
128
+
129
+ max_tokens = gr.Slider(
130
+ 50, 512, value=200, step=10, label="Max tokens"
131
+ )
132
+
133
+ submit.click(
134
+ chat,
135
+ inputs=[user_input, system_prompt, temperature, top_p, max_tokens],
136
+ outputs=output
137
+ )
138
 
139
  demo.launch()
140