From 35b4067ecd0699ea630fe2cd402d0c763f095279 Mon Sep 17 00:00:00 2001 From: Berack96 Date: Thu, 4 Sep 2025 12:01:35 +0200 Subject: [PATCH] Add project proposals for intelligent course planning, crypto analysis, and travel planning agents; update requirements with new libraries and recommendations --- proposte/Progetto 1 - Corsi.md | 60 ++++++++++++++ proposte/Progetto 2 - Crypto.md | 46 +++++++++++ .../Progetto 3 - Viaggi.md | 22 +++-- proposte/Riassunto.md | 82 +++++++++++++++++++ requirements.txt | 34 +++++--- 5 files changed, 227 insertions(+), 17 deletions(-) create mode 100644 proposte/Progetto 1 - Corsi.md create mode 100644 proposte/Progetto 2 - Crypto.md rename Programmazione App Intelligenti.md => proposte/Progetto 3 - Viaggi.md (92%) create mode 100644 proposte/Riassunto.md diff --git a/proposte/Progetto 1 - Corsi.md b/proposte/Progetto 1 - Corsi.md new file mode 100644 index 0000000..946db96 --- /dev/null +++ b/proposte/Progetto 1 - Corsi.md @@ -0,0 +1,60 @@ +### **Progetto di Esame: Agente di Pianificazione Corsi Intelligente** + +#### **Obiettivo del Progetto** + +Creare un sistema basato su **LLM Agents** capace di generare un piano didattico completo e personalizzato per un corso, a partire da input dell'utente. Il sistema dovrà dimostrare capacità di **ragionamento** , **pianificazione adattiva** e **collaborazione tra agenti** per produrre output strutturati e coerenti. + +--- + +### **1. Architettura del Sistema** + +Il sistema è basato su un'architettura a **due livelli** : una **UI** per l'input e un **sistema multi-agente** lato server per l'elaborazione. + +* **Interfaccia Utente (UI)** : Frontend semplice e intuitivo che raccoglie i parametri del corso. +* **Input obbligatori** : Argomento del corso, ore totali, numero di lezioni. +* **Input opzionali** : Descrizione aggiuntiva, livello degli studenti (basso, medio, alto), generazione esercizi (toggle), parte pratica (toggle), upload di file (per libri, dispense, ecc.). +* **Motore di Ragionamento (Server)** : Core del sistema, dove agenti autonomi collaborano per produrre i materiali didattici. + +--- + +### **2. Flusso di Lavoro e Ruolo degli Agenti** + +Il processo si svolge in una sequenza di passaggi orchestrati dall' **Agente Principale** . + +* **Agente `PianificatoreCorso` (Orchestratore)** + + * **Funzione** : Riceve tutti gli input dalla UI. È responsabile della coerenza e della coesione del progetto. + + 1. **Validazione** : Valuta la coerenza degli input (es. se le ore totali corrispondono a `lezioni * ore_per_lezione`). + 2. **Ragionamento e Pianificazione** : Genera una bozza di piano del corso, suddividendo l'argomento principale in lezioni e argomenti secondari, bilanciando teoria e pratica in base alle richieste. + 3. **Orchestrazione Agenti** : Delega la creazione dei contenuti specifici (presentazioni, dispense, esercizi) agli agenti specializzati, fornendo loro gli input necessari. +* **Agente `GeneratoreContenuti` (Collaboratore)** + + * **Funzione** : Crea i documenti testuali per le dispense e le note del relatore per ogni lezione. + * **Input** : Argomenti specifici per la lezione, livello degli studenti. + * **Tool** : Utilizza un LLM (es. `Ollama` o API `OpenAI`) per la generazione di testo dettagliato. + * **Output** : Un file `.md` o `.txt` per ogni lezione. +* **Agente `GeneratorePresentazioni` (Collaboratore)** + + * **Funzione** : Realizza le presentazioni `.pptx` per ogni lezione, basandosi sul contenuto generato e su un tema predefinito. + * **Input** : Punti chiave e testo delle slide per ogni argomento, tema grafico. + * **Tool** : Combina un LLM per la generazione del testo delle slide con la libreria **`python-pptx`** per la creazione del file. + * **Output** : Un file `.pptx` per ogni lezione. +* **Agente `GeneratoreEsercizi` (Collaboratore, Opzionale)** + + * **Funzione** : Crea esercizi pratici a partire dagli argomenti teorici, in base al livello degli studenti. + * **Input** : Argomenti specifici, tipo di corso (pratico/teorico), livello. + * **Tool** : Utilizza un LLM per descrivere gli esercizi in formato testuale. + * **Output** : Un file di testo con la descrizione degli esercizi per ogni lezione. +* **Agente `RicercatoreWeb` (Collaboratore, Opzionale)** + + * **Funzione** : Convalida e arricchisce il piano del corso con informazioni aggiornate o conferme sugli argomenti. + * **Input** : Argomenti del corso. + * **Tool** : Utilizza uno strumento di ricerca web (ad esempio, un'API di ricerca) per trovare riferimenti o dati aggiuntivi. + * **Output** : Dati di supporto da passare agli altri agenti. + +--- + +### **3. Output Finale** + +Una volta che tutti gli agenti hanno completato i loro compiti, il programma finale raccoglie i documenti prodotti (`.md`, `.txt`, `.pptx`). L'output sarà una **cartella compressa (`.zip`)** che conterrà tutti i materiali, organizzati per lezione (es. `Lezione_1_Intro_Python/`, `Lezione_2_Variabili/`). Questa struttura permette all'utente di avere subito un pacchetto pronto all'uso. diff --git a/proposte/Progetto 2 - Crypto.md b/proposte/Progetto 2 - Crypto.md new file mode 100644 index 0000000..dbc176b --- /dev/null +++ b/proposte/Progetto 2 - Crypto.md @@ -0,0 +1,46 @@ +### **Progetto di Esame: Agente di Analisi e Consulenza Crypto/Scommesse** + +#### **Obiettivo** + +Creare un sistema di consulenza basato su **LLM Agents** che analizza dati di mercato in tempo reale per fornire raccomandazioni strategiche e motivate su criptovalute o scommesse sportive. L'obiettivo è dimostrare la capacità dell'agente di interpretare dati complessi, ragionare su di essi e presentare un'analisi comprensibile e razionale. + +--- + +#### **1. Input Utente e Analisi Preliminare** + +L'utente fornisce una richiesta di analisi che include: + +* **Tipo di analisi:** Criptovalute o scommesse sportive. +* **Dettagli specifici:** Nome della criptovaluta (es. "Ethereum") o nome dell'evento sportivo (es. "Partita di calcio Juventus vs. Inter"). +* **Fattori da considerare:** Intervallo di tempo (es. "prossime 24 ore"), infortuni, condizioni meteo. +* **Stile di approccio:** Stile di investimento (aggressivo, conservativo) o tipo di scommessa. + +L'**Agente Orchestratore** riceve queste informazioni e le prepara per gli agenti successivi. + +--- + +#### **2. Processo di Analisi e Acquisizione Dati** + +Questo processo si basa sulla collaborazione di più agenti specializzati, in linea con l'approccio dei modelli di ragionamento. + +* **Agente RicercatoreDati:** Recupera dati di trading da API di exchange (es. Binance) per le criptovalute, o da database di statistiche sportive per le scommesse. +* **Agente AnalistaSentiment:** Esegue l'analisi di news e post su forum e social media per valutare il sentiment del mercato o del pubblico, individuando trend ed emozioni che possono influenzare l'andamento. +* **Agente MotorePredittivo:** Combina i dati numerici e le analisi di sentiment per generare previsioni e strategie plausibili, come un **modello di ragionamento trasparente** . + +--- + +#### **3. Valutazione e Selezione Strategica** + +L'**Agente Orchestratore** valuta le previsioni generate e, in base al suo ragionamento, seleziona le strategie più appropriate per l'utente. + +* **Valutazione Logica:** Analizza i dati raccolti, come volumi di scambio o statistiche di gioco. +* **Analisi Integrata:** Scarta o modifica le strategie se i dati del sentiment o altri fattori esterni lo rendono necessario. Ad esempio, potrebbe consigliare di non puntare su una squadra anche se le statistiche sono a suo favore, a causa di un report di infortunio. + +--- + +#### **4. Presentazione dei Risultati** + +Infine, il sistema presenta all'utente le raccomandazioni strategiche. + +* **Consulenza Dettagliata:** Ogni proposta include un riassunto della strategia, le ragioni che la supportano e i dati presi in considerazione. +* **Ragionamenti (Note):** Vengono aggiunte note esplicative che descrivono il processo decisionale degli agenti, dimostrando il "perché" di una certa scelta. Ad esempio: "Questa strategia è consigliata perché l'analisi del sentiment indica un forte interesse nella criptovaluta X, nonostante un recente calo di prezzo." diff --git a/Programmazione App Intelligenti.md b/proposte/Progetto 3 - Viaggi.md similarity index 92% rename from Programmazione App Intelligenti.md rename to proposte/Progetto 3 - Viaggi.md index 3df1ef7..7c2285e 100644 --- a/Programmazione App Intelligenti.md +++ b/proposte/Progetto 3 - Viaggi.md @@ -1,14 +1,15 @@ -Assolutamente. Ecco il piano di lavoro completo per il tuo progetto di esame, formattato come documento interno per una consultazione più semplice. - ---- ### **Progetto di Esame: Agente di Pianificazione Viaggi Intelligente** #### **Obiettivo** + Creare un sistema di pianificazione viaggi basato su **LLM Agents** che genera itinerari personalizzati e adattivi in base a vincoli e informazioni in tempo reale. L'obiettivo è dimostrare la capacità del sistema di ragionare, adattarsi a eventi esterni e comunicare in modo intelligente. --- + #### **1. Input Utente e Analisi Preliminare** + L'utente interagisce con una semplice interfaccia, fornendo una richiesta di viaggio che include: + * **Vincoli finanziari:** Budget massimo. * **Preferenze di viaggio:** Tipologia di vacanza (es. mare, montagna, città) e mezzo di trasporto preferito (es. treno, aereo). * **Tempistiche:** Date di viaggio e durata. @@ -16,22 +17,31 @@ L'utente interagisce con una semplice interfaccia, fornendo una richiesta di via L'**Agente di Comunicazione** riceve queste informazioni e, usando un **LLM**, le interpreta e le formatta per gli agenti successivi. --- + #### **2. Processo di Pianificazione e Acquisizione Dati** + Questo processo si basa sulla collaborazione di più agenti specializzati, in linea con l'approccio dei modelli di ragionamento. + * **Agente Pianificatore:** Sulla base della richiesta iniziale, questo agente genera internamente una serie di **idee di viaggio** iniziali. -* **Agente Meteo:** Per ogni destinazione, richiede le previsioni del tempo tramite un'API REST, come quella di `open-meteo.com`. +* **Agente Meteo:** Per ogni destinazione, richiede le previsioni del tempo tramite un'API REST, come quella di `open-meteo.com` e `openstreetmap.org`. * **Agente Notizie:** Interroga un'API di notizie (`newsapi.com`) per rilevare eventuali eventi imprevisti o avvisi importanti per le località considerate. * **Agente Ricerca:** Per ogni idea di viaggio, raccoglie informazioni essenziali sui **punti di interesse**, sfruttando un database statico o un'API semplificata, come suggerito nelle linee guida del progetto. -* **Agente Logistico:** Ottiene dati simulati su opzioni di viaggio (voli, treni) e costi per ciascuna destinazione. +* **Agente Logistico:** Ottiene dati simulati su opzioni di viaggio (voli, treni) e costi per ciascuna destinazione o da una API esterna (`serpapi.com/google-flights-api`) --- + #### **3. Valutazione e Selezione Adattiva** + L'**Agente Pianificatore** valuta le idee di viaggio in base alle informazioni raccolte dagli altri agenti. + * **Valutazione Logica:** Analizza il budget e la compatibilità dei mezzi di trasporto. * **Adattabilità:** Scarta o modifica le proposte se le condizioni esterne lo rendono necessario. Ad esempio, non proporrà un viaggio al mare se sono previste forti piogge, o cambierà l'ordine delle tappe in base a notizie rilevanti. --- + #### **4. Presentazione dei Risultati** + Infine, il sistema presenta all'utente un massimo di tre proposte di viaggio. + * **Itinerari Dettagliati:** Ogni proposta include un riepilogo del viaggio, le tappe suggerite e i costi stimati. -* **Ragionamenti (Note):** Vengono aggiunte note esplicative che descrivono il processo decisionale degli agenti, dimostrando il "perché" della scelta fatta. Ad esempio, "Abbiamo evitato la città A perché le notizie riportano un evento di traffico locale". \ No newline at end of file +* **Ragionamenti (Note):** Vengono aggiunte note esplicative che descrivono il processo decisionale degli agenti, dimostrando il "perché" della scelta fatta. Ad esempio, "Abbiamo evitato la città A perché le notizie riportano un evento di traffico locale". diff --git a/proposte/Riassunto.md b/proposte/Riassunto.md new file mode 100644 index 0000000..631977a --- /dev/null +++ b/proposte/Riassunto.md @@ -0,0 +1,82 @@ +### **1. Proposta: Agente di Pianificazione Corsi Intelligente** + +#### **Descrizione Dettagliata** + +L'agente si concentra sulla generazione dinamica di programmi didattici completi e personalizzati. A differenza dei sistemi statici, questo progetto utilizza un'architettura multi-agente per ragionare sul contenuto, adattarsi a diversi livelli di competenza e produrre materiali didattici pronti all'uso. Il focus è sulla capacità del sistema di pianificare, generare e validare informazioni complesse, trasformando input semplici in una serie di documenti coerenti. + +**Features Principali** + +* **Pianificazione Adattiva** : Il sistema bilancia automaticamente gli argomenti teorici e pratici in base alle ore disponibili e al livello degli studenti. +* **Generazione di Contenuti Multipli** : Produce non solo il programma, ma anche dispense, presentazioni e note per il relatore, dimostrando la capacità di creare diversi tipi di output da un'unica fonte di dati. +* **Gestione di Dati Eterogenei** : Accetta input strutturati (ore, lezioni) e non strutturati (descrizioni, file di riferimento), dimostrando flessibilità. +* **Output Coerente** : Organizza tutti i materiali generati in una cartella compressa per una consegna facile e organizzata. + +#### **Input Utente** + +* **Argomento del corso** : Tema principale (es. "Introduzione a Python"). +* **Ore totali** : Durata complessiva del corso. +* **Numero di lezioni** : Suddivisione del tempo. +* **Livello studenti** : Basso, medio o alto. +* **Opzioni Aggiuntive** : Toggle per esercizi e parte pratica, upload di file di riferimento. + +#### **Agenti Lato Server** + +* **Agente `PianificatoreCorso`** : L'orchestratore che riceve l'input, ragiona sulla struttura del corso e delega i compiti agli altri agenti. +* **Agente `GeneratoreDispense`** : Crea documenti testuali formattati per ogni lezione. +* **Agente `GeneratorePresentazioni`** : Genera file PowerPoint (.pptx) usando il contenuto fornito dall'LLM e la libreria `python-pptx`. +* **Agente `GeneratoreEsercizi`** : Produce esercizi pratici descritti testualmente, adattati al livello degli studenti. + +--- + +### **2. Proposta: Agente di Analisi e Consulenza Crypto** + +#### **Descrizione Dettagliata** + +Il progetto crea un consulente virtuale che utilizza gli **LLM** per analizzare il mercato delle criptovalute. A differenza dei semplici tracker di prezzo, questo agente combina dati di mercato in tempo reale con l'analisi del sentiment online per fornire raccomandazioni strategiche e il ragionamento che le supporta. L'intelligenza del sistema risiede nella sua capacità di elaborare grandi quantità di dati non strutturati (news, social media) e di presentarli in una forma comprensibile e contestualizzata per l'utente. + +**Features Principali** + +* **Analisi in Tempo Reale** : Si connette a un'API per monitorare prezzi e volumi di scambio. +* **Sentiment Analysis** : Scansiona fonti online per rilevare il sentiment del mercato e i trend. +* **Consigli Strategici** : Non si limita a mostrare i dati, ma propone una strategia (es. "compra", "vendi", "hold") e ne spiega le motivazioni. +* **Ragionamento Trasparente** : Fornisce un resoconto dettagliato del processo decisionale, elencando i fattori che hanno portato a una specifica raccomandazione. + +#### **Input Utente** + +* **Nome della criptovaluta** : La moneta da analizzare (es. "Bitcoin", "Ethereum"). +* **Intervallo di tempo** : Ore, giorni o settimane. +* **Stile di trading** : Aggressivo, conservativo. + +#### **Agenti Lato Server** + +* **Agente `RicercatoreMercato`** : Recupera dati di trading da API pubbliche. +* **Agente `AnalistaSentiment`** : Esegue lo scraping di notizie e post sui social per l'analisi del sentiment. +* **Agente `ConsulenteStrategico`** : Combina i dati raccolti, il sentiment e le preferenze dell'utente per formulare una strategia e le sue motivazioni. + +--- + +### **3. Proposta: Agente di Pianificazione Viaggi Intelligente** + +#### **Descrizione Dettagliata** + +Questo progetto è un sistema che pianifica viaggi personalizzati e adattivi. L'agente intelligente non si limita a proporre un itinerario fisso, ma ragiona e modifica il piano in base a informazioni in tempo reale, dimostrando la sua capacità di adattamento a eventi imprevisti. La forza del progetto sta nel mostrare come un LLM può integrare dati da fonti eterogenee (meteo, notizie, punti di interesse) per prendere decisioni complesse e generare un output coerente e personalizzato. + +**Features Principali** + +* **Adattabilità in Tempo Reale** : Il piano di viaggio si adatta a variabili come le condizioni meteorologiche o gli eventi locali. +* **Pianificazione Basata su Dati** : Il sistema utilizza informazioni reali e simulazioni per ottimizzare il viaggio in base ai vincoli dell'utente e alle condizioni esterne. +* **Ragionamento Esplicito** : Spiega all'utente il "perché" di ogni decisione presa (es. "Abbiamo evitato la città A a causa di un evento locale imprevisto"). +* **Output Organizzato** : Il risultato è un itinerario chiaro e dettagliato con tutte le informazioni necessarie per l'utente. + +#### **Input Utente** + +* **Vincoli finanziari** : Budget massimo. +* **Preferenze di viaggio** : Mare, montagna, città, ecc. +* **Tempistiche** : Date di viaggio e durata. + +#### **Agenti Lato Server** + +* **Agente `Pianificatore`** : L'orchestratore che crea l'itinerario e lo adatta in base alle informazioni degli altri agenti. +* **Agente `Meteo`** : Interroga un'API per le previsioni meteorologiche. +* **Agente `Notizie`** : Cerca eventi locali e notizie che potrebbero influenzare il viaggio. +* **Agente `Ricerca`** : Recupera informazioni sui punti di interesse, voli e treni da database o API. diff --git a/requirements.txt b/requirements.txt index 2ccb2e2..9dfecfb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,16 +2,28 @@ # Se si nota che alcune non sono necessarie, si potrebbero rimuovere # in modo da evitare conflitti o problemi futuri. # Per ogni roba ho fatto un commento per evitare di dimenticarmi cosa fa chi. +# Inoltre ho messo una emoji per indicare se è raccomandato o meno. -# per fare richieste HTTP -requests -# per l'elaborazione del linguaggio naturale in locale (https://huggingface.co/learn/llm-course/chapter1/3?fw=pt) -transformers -# per fare una UI web semplice con input e output -gradio -# per interagire con l'API di OpenAI e di altri (basta cambiare il baseurl) -openai -# per fare in modo di ottenere dati validati e strutturati -pydantic -# per gestire variabili d'ambiente (generalmente API keys o opzioni) +# ✅ per gestire variabili d'ambiente (generalmente API keys o opzioni) dotenv + +# 🟡 per fare richieste HTTP +requests +# 🟡 per fare scraping di pagine web +bs4 + +# ✅ per fare una UI web semplice con input e output +gradio + +# 🟡 per fare in modo di ottenere dati validati e strutturati +pydantic + +# ❌ per l'elaborazione del linguaggio naturale in locale (https://huggingface.co/learn/llm-course/chapter1/3?fw=pt) +transformers +# ❌ per interagire con l'API di OpenAI e di altri (basta cambiare il baseurl) +openai +# ❌ per fare chiamate a modelli indipendentemente dal modello specifico (astrae meglio rispetto a openai) +langchain +# ✅ per costruire agenti (ovvero modelli che possono fare più cose tramite tool) https://github.com/agno-agi/agno +# altamente consigliata dato che ha anche tools integrati per fare scraping, calcoli e molto altro +agno