File size: 2,550 Bytes
853ba71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import gradio as gr
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
import torch

# Configurazione dell'assistente
class ItalianAssistant:
    def __init__(self):
        self.setup_model()
    
    def setup_model(self):
        """Carica il modello per le risposte in italiano"""
        try:
            # Prova a caricare un modello che funziona bene in italiano
            self.chatbot = pipeline(
                "text-generation",
                model="microsoft/DialoGPT-medium",
                torch_dtype=torch.float16,
                device_map="auto"
            )
        except Exception as e:
            print(f"Errore nel caricamento del modello: {e}")
            # Fallback a un modello più semplice
            self.chatbot = pipeline("text-generation", model="distilgpt2")
    
    def generate_response(self, message, history):
        """Genera una risposta in italiano"""
        try:
            # Prompt per migliorare le risposte in italiano
            prompt = f"Sei un assistente AI utile che parla italiano. Rispondi in modo chiaro e preciso.\n\nUtente: {message}\nAssistente:"
            
            response = self.chatbot(
                prompt,
                max_new_tokens=300,
                temperature=0.7,
                do_sample=True,
                pad_token_id=50256,
                repetition_penalty=1.1
            )
            
            # Estrae solo la parte della risposta
            full_text = response[0]['generated_text']
            assistant_response = full_text.split("Assistente:")[-1].strip()
            
            return assistant_response
            
        except Exception as e:
            return f"Mi dispiace, ho riscontrato un errore: {str(e)}"

# Inizializza l'assistente
assistant = ItalianAssistant()

# Crea l'interfaccia Gradio
with gr.Blocks(theme=gr.themes.Soft()) as demo:
    gr.Markdown(
        """
        # 🤖 Italian Assistant
        **Il tuo assistente AI personale in italiano!**
        
        Chiedimi qualsiasi cosa: spiegazioni, aiuto con compiti, curiosità, ecc.
        """
    )
    
    chatbot = gr.ChatInterface(
        fn=assistant.generate_response,
        type="messages",
        examples=[
            "Ciao! Chi sei?",
            "Spiegami la teoria della relatività",
            "Aiutami a scrivere una email formale",
            "Quali sono i pianeti del sistema solare?"
        ],
        title="Italian Assistant"
    )

if __name__ == "__main__":
    demo.launch(debug=True, share=True)