import tkinter as tk from tkinter import scrolledtext import requests import json # Variabili per contesto e cronologia chat_history = "" chat_context = None # Funzione per inviare il messaggio e ricevere la risposta def send_message(): global chat_history, chat_context user_message = user_input.get() if user_message.strip() == "": return chat_log.insert(tk.END, f"You: {user_message}\n") user_input.delete(0, tk.END) # Aggiorna la cronologia chat_history += f"You: {user_message}\n" # Invia il messaggio a Llama3 tramite Ollama response, chat_context = get_llama3_response(chat_history, chat_context) chat_log.insert(tk.END, f"Llama3: {response}\n") # Aggiorna la cronologia con la risposta del modello chat_history += f"Llama3: {response}\n" def get_llama3_response(prompt, context): try: payload = {"prompt": prompt, "model": "llama3"} if context: payload["context"] = context response = requests.post( "http://localhost:11434/api/generate", json=payload, stream=True ) full_response = "" final_context = None for line in response.iter_lines(): if line: data = json.loads(line.decode('utf-8')) full_response += data.get("response", "") if data.get("done") and "context" in data: final_context = data["context"] return full_response or "Nessuna risposta ricevuta.", final_context except Exception as e: return f"Errore di connessione: {e}", context # Impostazione della finestra principale root = tk.Tk() root.title("Llama3 Chatbot") root.configure(bg='white') chat_log = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=60, height=20, bg='white', fg='black', bd=0, relief='flat') chat_log.pack(padx=10, pady=10) user_input_frame = tk.Frame(root, bg='white') user_input_frame.pack(padx=10, pady=(0, 10)) user_input = tk.Entry(user_input_frame, width=50, bg='white', fg='black', bd=1, relief='solid', highlightthickness=1, highlightbackground='#d9d9d9', highlightcolor='#4a90e2') user_input.pack(side=tk.LEFT, padx=(0, 5), ipady=5, ipadx=5) send_button = tk.Button(user_input_frame, text="Invia", command=send_message, bg='black', fg='white', activebackground='#333333', activeforeground='white', bd=0, padx=10, pady=5, relief='flat') send_button.pack(side=tk.RIGHT) # Avvio dell'interfaccia def main(): root.mainloop() if __name__ == "__main__": main()