Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| import torch | |
| # ========================== | |
| # 1. Carica il modello italiano | |
| # ========================== | |
| MODEL_NAME = "Mattimax/DACMini-IT" | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) | |
| model = AutoModelForCausalLM.from_pretrained(MODEL_NAME).to(device) | |
| # ========================== | |
| # 2. Lista di argomenti validi | |
| # ========================== | |
| # Tutto ciò che è inerente al negozio (es. prodotti, orari, contatti, marchi) | |
| VALID_KEYWORDS = [ | |
| "intimo", "calze", "collant", "pigiami", "homewear", | |
| "merceria", "bottoni", "fili", "nastri", "orari", | |
| "telefono", "email", "marchi", "logo", "contatti" | |
| ] | |
| # ========================== | |
| # 3. Funzione di risposta con filtro | |
| # ========================== | |
| def answer_question(user_input): | |
| # verifica se la domanda contiene almeno una keyword valida | |
| if not any(keyword.lower() in user_input.lower() for keyword in VALID_KEYWORDS): | |
| return "Non posso risponderti a questa domanda." | |
| # prepara input per il modello | |
| inputs = tokenizer(user_input, return_tensors="pt").to(device) | |
| # genera la risposta | |
| with torch.no_grad(): | |
| outputs = model.generate( | |
| **inputs, | |
| max_new_tokens=100, | |
| do_sample=True, | |
| top_p=0.9, | |
| temperature=0.7 | |
| ) | |
| # decodifica la risposta | |
| response = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| return response | |
| # ========================== | |
| # 4. Interfaccia Gradio | |
| # ========================== | |
| iface = gr.Interface( | |
| fn=answer_question, | |
| inputs=gr.Textbox(lines=2, placeholder="Scrivi la tua domanda sul negozio..."), | |
| outputs=gr.Textbox(label="Risposta"), | |
| title="Assistente Merceria Galli", | |
| description="Chiedimi solo informazioni sui prodotti e servizi della Merceria Galli." | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() |