ADRIANO OLIVETTI CHATBOT

import tkinter as tk
from tkinter import scrolledtext
import random
from google import genai
from google.genai import types
import threading
import uuid
from playsound import playsound
import asyncio
import edge_tts
import re
# =========================
# API GEMINI
# =========================
API_KEY = "XXXX" #inserire la tua api_key
client = genai.Client(api_key=API_KEY)

# =========================
# DATABASE CONOSCENZE
# =========================
knowledge =

# =========================
# DOMANDE QUIZ
# =========================
quiz_questions = [
"Quando nacque Adriano Olivetti?",
"Chi era il padre di Adriano Olivetti?",
"Quali servizi offriva agli operai?",
"Che cos'era la Programma 101?",
"Qual era la visione sociale di Olivetti?",
"Cos'era l'Elea 9003?"
]

# =========================
# FUNZIONE GEMINI
# =========================
def chiedi_gemini(domanda):
prompt = f"""
Sei un assistente esperto di Adriano Olivetti.
Rispondi in modo semplice per uno studente.
Domanda:

"""
try:
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_budget=0)
),
)
return response.text
except Exception:
return "Errore nel collegamento con Gemini."

# =========================
# TROVA RISPOSTA
# =========================
def trova_risposta(domanda):
domanda_lower = domanda.lower()
for categoria in knowledge.values():
for keyword in categoria["keywords"]:
if keyword in domanda_lower:
return categoria["response"] return chiedi_gemini(domanda)

def pulisci_testo(text):
# Rimuove gli asterischi
text = text.replace("*", "")

# (opzionale) rimuove altri caratteri strani
text = re.sub(r"[#_~`]", "", text)

return text

# =========================
# FUNZIONE PER PARLARE
# =========================
def speak(text):
# Crea un file mp3 unico
filename = f"output_.mp3″

async def generate():
communicate = edge_tts.Communicate(text, "it-IT-DiegoNeural")
await communicate.save(filename)

# Blocca qui finché l'audio non viene generato
asyncio.run(generate())

# Blocca qui finché l'audio non viene riprodotto tutto
playsound(filename)

# =========================
# INVIA MESSAGGIO
# =========================
def invia():
user_input = entry.get()
if user_input.strip() == "":
return

chat_area.insert(tk.END, "Tu: " + user_input + "\n", "user")

risposta = trova_risposta(user_input) # TESTO ORIGINALE
risposta_voce = pulisci_testo(risposta) # SOLO PER VOCE

chat_area.insert(tk.END, "Bot: " + risposta + "\n\n", "bot")

chat_area.yview(tk.END)
entry.delete(0, tk.END)

window.update()
speak(risposta_voce) #
# =========================
# MODALITÀ INTERROGAZIONE
# =========================
def domanda_casuale():
domanda = random.choice(quiz_questions)
chat_area.insert(tk.END, "Bot (Interrogazione): " + domanda + "\n\n", "quiz")
chat_area.yview(tk.END)
speak(domanda) # legge anche la domanda

# =========================
# INTERFACCIA GRAFICA
# =========================
window = tk.Tk()
window.title("Chatbot Adriano Olivetti")
window.geometry("700×600")

chat_area = scrolledtext.ScrolledText(window, wrap=tk.WORD, font=("Arial", 12))
chat_area.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)

chat_area.tag_config("user", foreground="blue")
chat_area.tag_config("bot", foreground="green")
chat_area.tag_config("quiz", foreground="red")

entry = tk.Entry(window, font=("Arial", 12))
entry.pack(padx=10, pady=5, fill=tk.X)
entry.focus_set()
entry.bind("", lambda event: invia())

send_button = tk.Button(window, text="Invia", command=invia)
send_button.pack(pady=5)

quiz_button = tk.Button(window, text="Fammi una domanda (modalità interrogazione)", command=domanda_casuale)
quiz_button.pack(pady=5)

window.mainloop()

2026-05-21T07:08:23+00:00

Amici del Vernato

È con immenso piacere che vi presentiamo il nostro sito “Amici del Vernato”. Il Vernato è il più antico quartiere della città di Biella e la nostra associazione, che non ha scopo di lucro, si propone di far conoscere e valorizzare la storia, la cultura, gli usi e costumi del nostro Rione. Proprio la parola “amici” sta a significare che l´associazione è aperta a chiunque voglia collaborare e portare il proprio contributo per facilitare i rapporti sociali e di buona vicinanza solidale. Inoltre, l´emblema dell´associazione è la foglia dell´ontano, albero presente nel nostro territorio che simboleggia l´eroe civilizzatore dell´antichità, quello che riunì gli uomini che in precedenza vivevano dispersi, fondando in tal modo una comunità abitativa.

Contatti

Via Ivrea, 14 – 13900 BIELLA BI

Web: https://www.amicidelvernato.it/

Articoli recenti

Torna in cima