Erik commited on
Commit
6452b14
Β·
verified Β·
1 Parent(s): ab0ce5f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -15
app.py CHANGED
@@ -5,15 +5,15 @@ from collections import defaultdict
5
  from datetime import datetime
6
  import pandas as pd
7
 
8
- # PDF creation
9
  from reportlab.pdfgen import canvas
10
  from reportlab.lib.pagesizes import letter
11
  import tempfile
12
 
13
- # Model + sentiment
14
  MODEL_NAME = "HuggingFaceTB/SmolLM2-360M-Instruct"
15
  tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
16
- model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, device_map="auto")
17
  sentiment_analyzer = pipeline("sentiment-analysis")
18
 
19
  SYSTEM_PROMPT = "You are a friendly assistant with fire vibes."
@@ -25,14 +25,14 @@ def now_str():
25
  return datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC")
26
 
27
  def generate_reply(prompt_str, temp, max_tokens):
28
- inputs = tokenizer(prompt_str, return_tensors="pt").to(model.device)
29
- gen = model.generate(
30
  **inputs,
31
  max_new_tokens=max_tokens,
32
  temperature=temp,
33
  do_sample=True
34
  )
35
- return tokenizer.decode(gen[0], skip_special_tokens=True)
36
 
37
  def respond(message, history, user, temp, max_tokens):
38
  username = user.name if user else "anonymous"
@@ -82,18 +82,16 @@ def leaderboard_text():
82
  return "\n".join(lines)
83
 
84
  def export_pdf(history):
85
- # Create a temp PDF with chat content
86
  temp_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
87
  c = canvas.Canvas(temp_pdf, pagesize=letter)
88
  textobj = c.beginText(40, 750)
89
  textobj.setFont("Helvetica", 10)
90
 
91
  for msg in history:
92
- line = f"[{msg['timestamp']}] {msg['user']}: {msg['user_msg']}"
93
- textobj.textLine(line)
94
- line2 = f" Assistant {msg['icon']}: {msg['bot_msg']}"
95
- textobj.textLine(line2)
96
  textobj.textLine("")
 
97
  c.drawText(textobj)
98
  c.save()
99
  return temp_pdf
@@ -106,7 +104,7 @@ with gr.Blocks() as demo:
106
 
107
  with gr.Row():
108
  temp_slider = gr.Slider(0.1, 1.2, value=0.7, label="Temperature")
109
- max_tokens_slider = gr.Slider(20, 300, value=150, step=10, label="Max Tokens")
110
 
111
  msg = gr.Textbox(label="Your message")
112
  send = gr.Button("Send")
@@ -117,8 +115,8 @@ with gr.Blocks() as demo:
117
  leaderboard_btn = gr.Button("πŸ† Leaderboard")
118
  leaderboard_out = gr.Textbox(label="Leaderboard")
119
 
120
- def on_send(message, history, user, temp, max_toks):
121
- new_hist = respond(message, history, user, temp, max_toks)
122
  return "", new_hist
123
 
124
  send.click(
@@ -132,7 +130,6 @@ with gr.Blocks() as demo:
132
 
133
  download_csv_btn.click(download_csv, None, gr.File())
134
  download_pdf_btn.click(export_pdf, history_state, gr.File())
135
-
136
  leaderboard_btn.click(lambda: leaderboard_text(), None, leaderboard_out)
137
 
138
  demo.launch()
 
5
  from datetime import datetime
6
  import pandas as pd
7
 
8
+ # PDF export
9
  from reportlab.pdfgen import canvas
10
  from reportlab.lib.pagesizes import letter
11
  import tempfile
12
 
13
+ # Model & sentiment
14
  MODEL_NAME = "HuggingFaceTB/SmolLM2-360M-Instruct"
15
  tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
16
+ model = AutoModelForCausalLM.from_pretrained(MODEL_NAME) # NO device_map here
17
  sentiment_analyzer = pipeline("sentiment-analysis")
18
 
19
  SYSTEM_PROMPT = "You are a friendly assistant with fire vibes."
 
25
  return datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC")
26
 
27
  def generate_reply(prompt_str, temp, max_tokens):
28
+ inputs = tokenizer(prompt_str, return_tensors="pt")
29
+ outputs = model.generate(
30
  **inputs,
31
  max_new_tokens=max_tokens,
32
  temperature=temp,
33
  do_sample=True
34
  )
35
+ return tokenizer.decode(outputs[0], skip_special_tokens=True)
36
 
37
  def respond(message, history, user, temp, max_tokens):
38
  username = user.name if user else "anonymous"
 
82
  return "\n".join(lines)
83
 
84
  def export_pdf(history):
 
85
  temp_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
86
  c = canvas.Canvas(temp_pdf, pagesize=letter)
87
  textobj = c.beginText(40, 750)
88
  textobj.setFont("Helvetica", 10)
89
 
90
  for msg in history:
91
+ textobj.textLine(f"[{msg['timestamp']}] {msg['user']}: {msg['user_msg']}")
92
+ textobj.textLine(f" 🧠 {msg['icon']}: {msg['bot_msg']}")
 
 
93
  textobj.textLine("")
94
+
95
  c.drawText(textobj)
96
  c.save()
97
  return temp_pdf
 
104
 
105
  with gr.Row():
106
  temp_slider = gr.Slider(0.1, 1.2, value=0.7, label="Temperature")
107
+ max_tokens_slider = gr.Slider(20, 300, value=150, label="Max Tokens")
108
 
109
  msg = gr.Textbox(label="Your message")
110
  send = gr.Button("Send")
 
115
  leaderboard_btn = gr.Button("πŸ† Leaderboard")
116
  leaderboard_out = gr.Textbox(label="Leaderboard")
117
 
118
+ def on_send(message, history, user, temp_val, max_toks):
119
+ new_hist = respond(message, history, user, temp_val, max_toks)
120
  return "", new_hist
121
 
122
  send.click(
 
130
 
131
  download_csv_btn.click(download_csv, None, gr.File())
132
  download_pdf_btn.click(export_pdf, history_state, gr.File())
 
133
  leaderboard_btn.click(lambda: leaderboard_text(), None, leaderboard_out)
134
 
135
  demo.launch()