Spaces:
Runtime error
Runtime error
Erik commited on
Update app.py
Browse files
app.py
CHANGED
|
@@ -5,15 +5,15 @@ from collections import defaultdict
|
|
| 5 |
from datetime import datetime
|
| 6 |
import pandas as pd
|
| 7 |
|
| 8 |
-
# PDF
|
| 9 |
from reportlab.pdfgen import canvas
|
| 10 |
from reportlab.lib.pagesizes import letter
|
| 11 |
import tempfile
|
| 12 |
|
| 13 |
-
# Model
|
| 14 |
MODEL_NAME = "HuggingFaceTB/SmolLM2-360M-Instruct"
|
| 15 |
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
|
| 16 |
-
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME
|
| 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")
|
| 29 |
-
|
| 30 |
**inputs,
|
| 31 |
max_new_tokens=max_tokens,
|
| 32 |
temperature=temp,
|
| 33 |
do_sample=True
|
| 34 |
)
|
| 35 |
-
return tokenizer.decode(
|
| 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 |
-
|
| 93 |
-
textobj.textLine(
|
| 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,
|
| 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,
|
| 121 |
-
new_hist = respond(message, history, user,
|
| 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()
|