Giovanni Ciatto, Dipartimento di Informatica — Scienza e Ingegneria (DISI), Sede di Cesena,
Alma Mater Studiorum—Università di Bologna
(versione presentazione: 2025-06-25)
https://gciatto.github.io/talk-genai-unibo/
Algoritmi di IA in grado di generare automaticamente contenuti, e.g.:
Modelli di costo:
Consumo è misurato in base allo sforzo computazionale necessario per servire la richiesta:
La generazione da considerarsi un processo stocastico, per costruzione
- La qualità del servizio è soggetta a casualità e a fluttuazioni dovute a:
- carico del servizio
- scelta del modello, e relativo aggiornamento
- limiti di servizio eventualumente raggiunti nel quanto di tempo corrente
- caso
Bias di campionamento: GenAI conosce solo ciò su cui è stato allenato + pia speranza che impari a generalizzare
L’apprendimento usa dati presi dal Web + eventuali dati aziendali del fornitore del servizio
- Informazioni di nicchia possono non essere apprese correttamente (o affatto)
- Fondamentale evitare di convididere informazioni sensibili, confidenziali, o protette da diritti d’autore
Cicli di apprendimento estramente costosi in termini di denaro e risorse computazionali…
… eseguiti periodicamente (settimane? mesi?) per migliorare la qualità del servizio
- Informazioni recenti potrebbero non essere state (ancora) apprese
- Rischio di ricevere risposte datate o manchevoli da GenAI
- GenAI dà l’impressione di star imparando durante la conversazione, ma in realtà lo fa offline
Lista non esaustiva!
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key="sk-1234567890abcdef1234567890abcdef")
async def main():
stream = await client.chat.completions.create(
model="gpt-4",
messages=[
dict(role="user",
content="European countries, one by line")
],
stream=True,
)
async for chunk in stream:
print(chunk.choices[0].delta.content or "", end=", ")
asyncio.run(main())
Output:
Albania, Andorra, Austria, Belarus, Belgium, Bosnia and Herzegovina, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Iceland, Ireland, Italy, Kosovo, Latvia, Liechtenstein, Lithuania, Luxembourg, Malta, Moldova, Monaco, Montenegro, Netherlands, North Macedonia, Norway, Poland, Portugal, Romania, Russia, San Marino, Serbia, Slovakia, Slovenia, Spain, Sweden, Switzerland, Turkey, Ukraine, United Kingdom, Vatican City (Holy See),
Linguaggio di programmazione che interagisce con IA
L’interazione rimane di tipo richiesta-risposta
Prompt parametrici, risposte processate automaticamente
list of LOCALITIES in AREA, one by line
LOCALITIES
$\in$ {cities
, regions
, states
}AREA
$\in$ {Europe
, Asia
, Africa
, America
, Oceania
}Scrittura software che usa l’IA come servizio
GenAI integrata in applicazioni desktop o web
supporto per interfaccia conversazionale interna
IA automatizza operazioni complesse (interne all’app)
Interazione one-shot per generare il contenuto
L’interfaccia permette poi
Lista non esaustiva!
GenAI non è un motore di ricerca come Google, Bing, DuckDuckGo, etc.
FM, di base, non accedono al Web (né interrogano qualche sorgente) prima di rispondere
FM, di base, rispondono in base a dati e conoscenze acquisite durante l’allenamento
FM possono essere immaginati come grandi memorie
Le risposte di GenAI non vanno mai accettate acriticamente, in quanto suscettibili di allucinazioni:
Possiamo considerare FM come esperti su tematiche che:
verificare le fonti menzionate da GenAI
verificare l’aderenza alle fonti
prediligere, se possibile, la lingua inglese
(un argomento complesso qualsiasi, scelgo un mio tema di ricerca così ho un metro di giudizio)
Un sistema multi-agente (MAS) è un tipo di sistema composto da molteplici agenti indipendenti (ma interattivi), ciascuno capace di percepire il proprio ambiente e di intraprendere azioni. Gli agenti possono essere modelli di IA, programmi software, robot e altre entità computazionali. Molteplici agenti possono cooperare o verso un obiettivo comune che va oltre le capacità dei singoli agenti, con una maggiore adattabilità e robustezza.
(cf. https://www.gartner.com/en/information-technology/glossary/multiagent-systems)
Uno strumento forse migliore (ma più costoso) in ambito accademico,
potrebbe essere Scite
è un database bibliografico che indicizza le citazioni nel contesto (cf. “Smart Citation Index”)
Fornisce un LLM, Scite Assistant ha accesso al database bibliografico
- Approccio più furbo: chiedere a GenAI di rielaborare un testo grezzo o parziale
- es. una lista di cose da dire, argomenti da trattare, etc.
- controllo e responsabilità del filo del discorso rimangono sull’utente
(un argomento complesso qualsiasi, scelgo un mio interesse di ricerca ho un metro di giudizio)
IA Neuro-Simbolica: la combinazione di metodi simbolici [“IA classica”, NdA] con metodi basati su reti neurali artificiali.
(cf. Neuro-symbolic artificial intelligence)
Una revisione sistematica della letteratura (SLR) è un metodo accademico indipendente che mira a identificare e valutare tutta la letteratura rilevante su un argomento al fine di trarre conclusioni sulla questione in esame. […] Viene seguito un approccio metodologico formale per ridurre le distorsioni causate da una selezione eccessivamente restrittiva della letteratura disponibile e per aumentare l’affidabilità della letteratura selezionata.
Uso sostanziale di GenIA
Uso non sostanziale di GenIA
Meglio strumenti consolidati (e.g. Google Translate) o modelli fondazionali (e.g. GPT)?
(posto che la traduzione fatta da esperti umani sarà sempre migliore)
Chiediamo a Scite Assistant:
TL;DR: Google Translate è preferibile laddove sia richiesta precisione
TL;DR: GPT usabile laddove il contesto possa aiutare la traduzione
(codice suggerito inefficiente, ma funzionante)
(spiegazione corretta ed articolata)
GenAI può essere usato per acquisire informazioni da documenti testuali [senza leggerli integralmente]
La stessa idea si può applicare a contenuti multimediali
Il testo [o contenuto] da cui estrarre informazioni deve essere fornito dall’utente
Al crescere della lunghezza del testo, aumenta la probabilità di allucinazioni
Verificiare che il testo [o contenuto] fornito non contenga informazioni sensibili o riservate
Verificare di avere il diritto di fornire a terzi [copie de] il contenuto
Tenere presente la possibilità di inevitabili distorsioni
Si veda file P000_ORD24.pdf — 7 pagine, ben dense
GenAI riesce a selezionare le informazioni richieste dal documento fornito
L’idea è di usare GenAI come un motore di ricerca specifico per il/i documento/i in questione
- Al crescere della dimensione del documento, aumenta la probabilità di allucinazioni, distorsioni, lacune
Si veda file Policy-Generative-AI.pdf
GenAI riesce a sintetizzare in poche righe intere pagine di policy
Rischia di omettere dalla sintesi: sfumature, eccezioni, casi particolari
- Evitare di basarsi esclusivamente sulla sintesi di GenAI per interpretare un testo
- Utile fare domande specifiche o maliziose sul documento per catturare ulteriori dettagli
Confrontiamo due articoli scientifici (su tema simile):
- Per questo caso d’uso, GenAI non è lo strumento migliore
- Esistono strumenti più adeguati, non basati su GenAI
Comparatiamo due diverse versioni di https://arxiv.org/abs/2404.04108
Aprile 2024: https://arxiv.org/abs/2404.04108v1
Dicembre 2024: https://arxiv.org/abs/2404.04108v2
- Per questo caso d’uso, GenAI non è lo strumento migliore
- GenAI può essere usato per identificare similitudini concettuali tra testi
- Esistono strumenti più adeguati, non basati su GenAI
Upload del paper potrebbe comportare violazione della riservatezza
Si sta delegando a GenAI un processo critico, che ha un impatto su altre persone e sulla comunità
ChatGPT tende ad essere accondiscendente e positivo, riportando punti di forza / limitazioni riportati nel documento stesso
Si può richiedere una revisione aggressiva o critica … spostando il bias verso la negatività
Meglio limitarsi ad ispezionare il documento con GenAI e farsi un’idea prima di esprimere un giudizio
GenAI può essere usato per elaborare dati, anche strutturati, semi-strutturati, o non strutturati
Vari tipi di elaborazione possibili, es:
Si istruisce GenAI ad operare come un analista dati o un data scientist
LLM, di per loro, sono imprecisi e non affidabili per il calcolo e l’analisi di dati
Tuttavia, FM posssono generare codice di programmazione (dietro le quinte) per elaborare i dati
Prima di caricare dati, verificare che non contengano informazioni sensibili o riservate, e di avere il diritto di fornirli a terzi
Fare richieste precise, chiare, e possibili (rispetto ai dati forniti)
Non fidarsi ciecamente dei risultati, verificare che siano corretti
Chiedere il codice sorgente delle operazioni svolte, per verificarle, e renderle riproducibili
Non delegare a GenAI operazioni che implichino punti di scelta e/o responsabilità
Sfruttando gli open-data di Ateneo, e ChatGPT, possiamo velocemente analizzare l’attrattività dei corsi UniBO nel tempo
Rimane da verificare che il codice generato produca davvero i risultati mostrati da GenAI
Il codice generato da GenAI è ciò che rende l’esercizio ispezionabile e ripetibile
Non è saggio delegare un aspetto decisionale del processo a GenAI
In contesti di ricerca più essere interessante generare dati sintetici, simili a dati reali esistenti
(Comunemente, ci vuole controllabilità del processo di generazione)
Senza GenAI, si procede così:
Con GenAI, si evita la difficoltà del punto 1.1:
Nuova classe sintetica: “Iris Immagina”, in giallo
import pandas as pd
import numpy as np
# Caricare il dataset originale
file_path = "/mnt/data/iris.csv"
iris_df = pd.read_csv(file_path)
# Aggiungere i nomi delle colonne corretti
iris_df.columns = ["sepal_length", "sepal_width", "petal_length", "petal_width", "class"]
# Definire i parametri per la nuova classe
num_samples = 150
sepal_length = np.random.normal(loc=7.0, scale=0.4, size=num_samples) # Sepalo lungo
sepal_width = np.random.normal(loc=3.2, scale=0.3, size=num_samples)
petal_length = np.random.normal(loc=2.0, scale=0.2, size=num_samples) # Petalo corto
petal_width = np.random.normal(loc=1.8, scale=0.2, size=num_samples) # Petalo largo
# Creare il nuovo dataframe
iris_immagina_df = pd.DataFrame({
"sepal_length": sepal_length,
"sepal_width": sepal_width,
"petal_length": petal_length,
"petal_width": petal_width,
"class": ["Iris-immagina"] * num_samples
})
# Unire i dati originali con quelli sintetici
extended_iris_df = pd.concat([iris_df, iris_immagina_df], ignore_index=True)
Notare che GenAI ha scelto arbitrariamente (ma ragionevolmente):
Come?
Feature | Original Mean (All Classes) | Original Std (All Classes) | Synthetic Mean (Iris-immagina) | Synthetic Std (Iris-immagina) | Rationale |
---|---|---|---|---|---|
sepal_length |
5.85 | 0.83 | 7.0 | 0.4 | Scelto per essere più lungo delle altre specie |
sepal_width |
3.05 | 0.43 | 3.2 | 0.3 | Simile a Versicolor per non essere un outlier estremo |
petal_length |
3.77 | 1.76 | 2.0 | 0.2 | Corto per distinguersi dalle altre specie |
petal_width |
1.21 | 0.76 | 1.8 | 0.2 | Largo per renderlo unico rispetto alle altre specie |
Rimane da verificare che il codice generato produca davvero i risultati mostrati da GenAI
Il codice generato da GenAI è ciò che rende l’esercizio ispezionabile e ripetibile
La scelta dei parametri per la generazione dei dati è stata arbitraria, ma ragionevole
Meglio sarebbe non avere questo margine di interpretazione
GenAI può essere usata per generare contenuti di vario genere (sia da zero che modificando contenuti esistenti)
Per la generazione di diagrammi, grafici, etc. è meglio indurre GenAI a generare codice, da renderizzare poi con strumenti dedicati
Può essere utile chiedere a GenAI di generare loghi, concept, copertine, etc. per ispirazione
Verificare che i contenuti generati siano originali e non violino copyright
Non delegare a GenAI la scelta di contenuti critici o sensibili
Non fidarsi ciecamente dei risultati, verificare che siano corretti, e non contengano bias o allucinazioni
(troppo irrealistica)
Non è così facile ottenere elevata verosimiglianza nelle immagini generate
Come ho ottenuto la copertina di questa presentazione?
Noto un probabile bias: studenti/docenti stereotipati come uomini bianchi
Posso richiedere una modifica puntuale (notare la selezione dell’area da modificare)
Il risultato
Non è così facile controllare con precisione la generazione di immagini
Quando il contributo di GenAI è sostanziale al lavoro svolto
Produzione di contenuti originali
Analisi di dati con GenAI
Generazione o rielaborazione di testi
Creazione di immagini, grafici, o contenuti audio/visivi
Se richiesto da regolamenti, docenti o editori
Quando il contributo di GenAI non è sostanziale, ma meramente di supporto
Ricerche preliminari e brainstorming
Correzioni grammaticali e stilistiche
Traduzione di frammenti di testo
Uso di GenAI come assistente personale
Queste slide sono state realizzate con l'aiuto di GitHub Copilot e ChatGPT.
Il primo è stato usato per velocizzare la stesura della prima bozza.
Entrambi sono stati usati per creare alcuni degli esempi e delle immagini qui presentate.
Ogni slide è stata rivista e verificata manualmente.
L'autore si prende la piena responsabilità per il contenuto di queste slide.