import gradio as gr from huggingface_hub import InferenceClient import os def respond( message, history: list[dict[str, str]], system_message, max_tokens, temperature, top_p, ): try: client = InferenceClient( token=os.getenv("HF_TOKEN"), # Leggi il token dall'ambiente model="andreabac3/Fauno-Italian-LLM-7B" ) except Exception as e: yield f"Errore nella connessione all'Inference API: {str(e)}. Verifica il token o la disponibilità del modello." return # Prepara i messaggi messages = [{"role": "system", "content": system_message}] messages.extend(history[-2:]) # Limita a 2 messaggi per ridurre contesto messages.append({"role": "user", "content": message}) response = "" try: for message in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = message.choices[0].delta.content or "" response += token yield response except Exception as e: yield f"Errore durante l'inferenza: {str(e)}. Potrebbe essere un problema di limiti API o modello non deployato." # Interfaccia Gradio chatbot = gr.ChatInterface( respond, type="messages", additional_inputs=[ gr.Textbox( value="Sei un assistente AI italiano. Rispondi in modo chiaro, conciso e diretto in italiano, senza ripetere la domanda o aggiungere informazioni non richieste.", label="Messaggio di sistema" ), gr.Slider(minimum=1, maximum=512, value=128, step=1, label="Max nuovi token"), gr.Slider(minimum=0.1, maximum=1.0, value=0.5, step=0.1, label="Temperatura"), gr.Slider( minimum=0.1, maximum=1.0, value=0.85, step=0.05, label="Top-p (nucleus sampling)"), ], ) with gr.Blocks() as demo: chatbot.render() if __name__ == "__main__": demo.launch()