Home Intelligenza Artificiale AI Cookbook AI Cookbook // Ricetta #5: Come lavorare con testi lunghi con l’AI...

AI Cookbook // Ricetta #5: Come lavorare con testi lunghi con l’AI generativa

Avete mai avuto a che fare con una trascrizione piena di errori o un testo lungo da tradurre, solo per scoprire che il modello di linguaggio che stavate usando ha riassunto o tralasciato parti cruciali?

Se sì, sapete quanto può essere frustrante perdere dettagli importanti. Ciò accade a causa dei limiti di token in output imposti dai modelli AI nelle varie app di chat che, per ottimizzare sé stesse, definiscono una soglia “utile”. Questo però tende a far riassumere troppo un contenuto e a farne perdere i concetti.

Ma cosa succederebbe se ci fosse un modo per trasformare questa frustrazione in un’esperienza fluida e produttiva?

L’idea è nata dagli output, spesso terribili, delle trascrizioni di lunghe riunioni come ho mostrato nella prima ricetta. Provando a trascrivere una registrazione monster di una lezione di otto ore (!) mi sono reso conto che quell’output era poco usabile.

Immaginate quindi di avere a disposizione uno strumento che non solo segmenta automaticamente i vostri testi, ma li elabora con precisione, garantendo che ogni informazione rilevante venga preservata. Un’applicazione semplice, progettata per chi lavora con testi lunghi ma non vuole sacrificare qualità o tempo. Oggi vi mostrerò come ho realizzato una mini app in Python che fa proprio questo. E sì, lo faremo insieme, senza complicazioni.

Vedremo perché la segmentazione del testo è essenziale, come possiamo sfruttare modelli come ChatGPT e Groq, e come tutto ciò possa essere utilizzato da programmatori in erba o knowledge workers di qualsiasi settore.

Come sempre senza volervi insegnare come si programma ma solo dimostrandovi che si può farlo facendoci assistere dall’AI. Vale sempre la regola che se voi siete esperti sarete in grado di generare codice migliore, sia da soli che assistiti da “lei”.

A cosa serve questa mini-app?

Questa applicazione risponde a esigenze reali e quotidiane. Pensate a giornalisti che trascrivono lunghe interviste, traduttori alle prese con documenti tecnici, o chiunque debba correggere testi con errori diffusi. I modelli di linguaggio naturale, pur essendo avanzati, presentano un limite significativo che li rende spesso inadatti per questi compiti: i loro vincoli di token in output.

Con questa applicazione potete trattare testi lunghi in un modo più adeguato ed ottenere risultati decisamente migliori, soprattutto se li affidate ad LLM più potenti.

Perché è utile?

Modelli di chat come ChatGPT o Claude sono progettati per generare risposte che rientrano in un numero massimo di token. Questo limite è fondamentale per garantire prestazioni efficienti e per evitare che l’elaborazione vada fuori controllo, ma comporta anche conseguenze indesiderate. Quando si chiede a questi modelli di lavorare su testi molto lunghi, si attiva un meccanismo che favorisce la sintesi e la riduzione del contenuto, perché il modello cerca di produrre una risposta significativa e coerente entro i limiti imposti.

Di conseguenza, per compiti che richiedono fedeltà e accuratezza—come la trascrizione parola per parola o la traduzione precisa di un documento tecnico—questi modelli non sono ideali. Piuttosto che mantenere ogni dettaglio o sfumatura del testo originale, tendono a “potare” le informazioni, eliminando o comprimendo passaggi che ritengono meno rilevanti. Questo comportamento, sebbene utile in conversazioni casuali o riassunti, risulta disastroso quando è necessario preservare ogni informazione, sia per questioni di contenuto che di integrità del messaggio.

In breve, i limiti di token output dei modelli utilizzati nelle app di chat li rendono poco affidabili per gestire contenuti che devono essere elaborati senza sintesi involontarie, mettendo a rischio la completezza e la precisione dei dati. Per questo motivo, è necessario un approccio diverso che segmenti il testo e garantisca un’elaborazione accurata per ogni parte, senza sacrificare dettagli.

Suddividendo il testo in “chunk”, questa app consente di lavorare su ogni segmento separatamente, garantendo che nulla venga tralasciato. È un assistente ideale per chi lavora in modo intensivo con documenti complessi.

Ingredienti

  • Linguaggi e strumenti:
    • Python,
    • tkinter per l’interfaccia grafica,
    • requests per le chiamate API,
    • groq per l’elaborazione con modelli specifici (che finché gratis ci piace sempre).
  • Modelli AI: OpenAI (GPT-4) per correzioni dettagliate e Groq per compiti più rapidi e specifici.
  • Chiavi API: Per OpenAI e/o Groq. Configurate con attenzione e sicurezza, evitando di esporle in codice pubblico.
  • Del testo sufficientemente lungo su cui lavorare: ho generato una simulazione di una trascrizione in ACME sui problemi dei pattini a razzo di Willy E. Coyote che potete utilizzare come esempio.

Livello di Difficoltà: 4/5 Espresso

Questo progetto richiede un buon livello di concentrazione e impegno. Se avete già una conoscenza base di Python, siete pronti per affrontarlo. Un ottimo modo per esercitarvi con l’integrazione di AI nelle vostre applicazioni.

Tempo di Preparazione

Circa 45-60 minuti, compreso il tempo per installare le librerie necessarie e testare il codice.

Procedura

1. Iniziare con un Prompt

Prima di tutto, se volete esplorare un approccio simile e ottenere suggerimenti dall’AI, potete iniziare con un prompt come il seguente, che ho usato io stesso per ottenere supporto nella creazione del progetto con o1-Preview:

Ho un problema. Testi molto lunghi in Word o TXT. Devo sistemarli o tradurli con API ed LLM. Ma la tendenza degli LLM è quella di riassumere e ridurre i token in output anche se hanno una lunga context window. Con il risultato che perdo informazioni. Avrei bisogno di uno strumento molto semplice, in Python, con interfaccia, che segmenti questi testi dopo averli caricati (ricorda i diversi formati) o copincollati ed esegua il compito richiesto (ad esempio sistemare grammatica, o una trascrizione, o tradurre) un pezzo alla volta. Come potremmo fare? Fammi altre domande se non ti è chiaro.

Speravo ci pensasse un po’ di più di 24 secondi… poi ci ha messo circa un minuto a darmi tutto il codice.

Potete usare questo prompt per ottenere idee e soluzioni dall’AI, oppure seguire la procedura guidata che porta direttamente al codice finale (che renderò disponibile su GitHub per facilitarvi la vita).

2. Configurare l’Ambiente

Assicuratevi di avere Python installato e configurate le chiavi API in modo sicuro. È importante che non condividiate mai queste chiavi pubblicamente. (Ma ve lo ripeterà spesso anche “lei”)

3. Scrivere il Codice Base

Ecco uno sguardo al cuore della nostra mini app. Iniziamo importando le librerie e configurando le chiavi API per l’accesso ai servizi di OpenAI e Groq.

import tkinter as tk
from tkinter import filedialog, scrolledtext, messagebox, ttk
import threading
import openai
import tiktoken
import logging
import requests
import groq
from ttkthemes import ThemedTk

# Configura il logging
logging.basicConfig(level=logging.INFO, filename='app.log', filemode='w')

# Chiavi API
openai_api_key = 'la_tua_chiave_openai'
GROQ_API_KEY = 'la_tua_chiave_groq'

4. Progettare l’Interfaccia Grafica

L’interfaccia grafica è stata costruita con tkinter per essere intuitiva. Abbiamo pannelli per l’input del testo e per il risultato, con opzioni per scegliere il tipo di elaborazione.

self.task_var = tk.StringVar(value='correzione')
task_menu = ttk.OptionMenu(task_frame, self.task_var, 'correzione',
                           'correzione', 'traduzione', 'riassunto', 'personalizzato')
task_menu.pack(fill='x')

Questa configurazione rende facile per l’utente scegliere se vuole correggere, tradurre o riassumere il testo.

5. Segmentazione del Testo

Il metodo split_text() divide il testo in chunk per rispettare i limiti di token dei modelli AI. È una funzione chiave per garantire che l’elaborazione sia precisa.

Attenzione che è ottimizzata per OpenAI e conteggia i token con la dinamica di quel modello. Se, come nell’esempio, poi si usa Groq con Llama il conteggio non sarà preciso.

def split_text(self, text, max_tokens=1500):
    encoding = tiktoken.encoding_for_model('gpt-3.5-turbo')
    base_prompt_tokens = len(encoding.encode(self.prompt_text.get(1.0, tk.END).replace('{chunk}', '')))
    sentences = text.split('. ')
    chunks = []
    current_chunk = ''
    for sentence in sentences:
        total_tokens = base_prompt_tokens + len(encoding.encode(current_chunk + sentence))
        if total_tokens > max_tokens:
            chunks.append(current_chunk)
            current_chunk = sentence + '. '
        else:
            current_chunk += sentence + '. '
    if current_chunk:
        chunks.append(current_chunk)
    return chunks

6. Inviare Richieste alle API

A seconda dell’API selezionata, i chunk vengono inviati per l’elaborazione. Questo permette di gestire testi lunghi senza perdere dettagli.

def call_openai_api(self, prompt, api_key):
    url = '<https://api.openai.com/v1/chat/completions>'
    headers = {'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json'}
    data = {'model': self.model_name, 'messages': [{'role': 'user', 'content': prompt}]}
    response = requests.post(url, headers=headers, json=data)
    return response.json()['choices'][0]['message']['content'].strip() if response.status_code == 200 else None

7. Migliorare l’Interfaccia con Claude

Dopo aver costruito una versione base della UI, non ero del tutto soddisfatto. Ho quindi creato un disegno per mostrarlo a Claude, che ha saputo interpretarlo e trasformarlo in codice. Anche se ho dovuto fare qualche rifinitura manuale, è stato incredibile vedere il potere della collaborazione AI in azione.

Non mi sono impegnato troppo, è vero… ma lui mi ha capito bene ????

Risultato

Il risultato è un’app che segmenta e gestisce testi lunghi in modo efficace, garantendo trascrizioni precise, traduzioni accurate e riassunti dettagliati. È ideale per chi lavora con testi estesi e non vuole sacrificare qualità o dettagli.

Qui trovate tutto il codice python 
E qui trovate un esempio di documento da dare in pasto al tool (Non eccessivamente lungo per non appesantirvi di costi.)

 

Consigli e Variazioni

  • Prompt Personalizzati: Potete personalizzare i prompt per esigenze specifiche. Ad esempio, per una traduzione formale, specificate il tono richiesto. I prompt all’interno dell’applicazione sono anch’essi estremamente migliorabili. Qui l’obiettivo, come sempre, era fornirvi un punto di partenza.
  • Modelli Alternativi: Sperimentate con Groq per compiti che richiedono elaborazioni più rapide. Ma se volete, e se la riservatezza dei vostri testi la richiede, potete usare anche modelli locali (magari sfruttando Ollama o LM Studio, di cui magari parlerò più avanti).
  • Estensioni Future: L’app può essere migliorata con nuove funzionalità, come l’ottimizzazione stilistica o la generazione di contenuti. Potete anche chiedere a GPT o Claude di migliorarla per lavorare direttamente su un file Word o un PDF e producendo un output formattato come nell’originale (anche se vi porterà via un po’ più di tempo). In quel caso potreste separare il testo per capitoli anziché in chunk e creare un file distinto per ciascun file. Ma non voglio mettere limiti alla vostra creatività.
  • Limiti: Processare il testo in segmenti per compiti di riassunto non è il massimo. Lui farà il riassunto di ogni chunk a prescindere dal filo logico della conversazione. E come vedete nell’immagine, Llama cambia ogni volta tono e formato nonostante le poche indicazioni chiare.

Quindi…

Provate questa mini app, esplorate come può migliorare la gestione dei vostri testi e, magari, iniziate ad evolverla e metterla alla prova su compiti più impegnativi.

Vorrei sapere come l’avete personalizzata e se avete idee per nuovi progetti da esplorare insieme nella rubrica AI, Cookbook.


Dietro le quinte

Anche questo articolo è stato interamente scritto con l’aiuto di un modello AI. Ho lavorato a stretto contatto con GPT, fornendo istruzioni precise e un format ben definito per garantire che il contenuto fosse non solo informativo, ma anche accessibile e coinvolgente per i lettori di 01net.it.

Sono partito così, all’interno del mio GPT di supporto (Di cui parlerò a brevissimo su questa rubrica, anche per raccontarvi perché bastano due righe di istruzione)

Vorrei scrivessi un contenuto super di almeno 1500 parole per la mia rubrica ai cookbook su 01.net, usando tutte le istruzioni sul tono di voce che hai.
Fammi domande di chiarimento prima di proseguire.

L’idea non era semplicemente di risparmiare tempo, ma di dimostrare concretamente quanto l’AI possa semplificare la creazione di contenuti di qualità, rendendo la scrittura strutturata ed efficace, senza sacrificare la voce e il tono desiderati.

Il processo è iniziato con un prompt dettagliato, in cui ho delineato esattamente cosa volevo ottenere: un articolo che spiegasse in modo chiaro l’importanza di gestire testi lunghi con modelli AI e che fosse facile da seguire per i lettori, anche quelli con competenze di programmazione di base. Attraverso iterazioni e suggerimenti mirati, l’AI ha saputo sviluppare una guida coerente, con esempi, spiegazioni tecniche e un tono che cattura l’attenzione senza risultare troppo complesso o tecnico.

Non è stata solo una questione di fornire istruzioni; il lavoro con l’AI ha richiesto una supervisione costante e aggiustamenti per affinare le sezioni più tecniche e garantire la massima chiarezza. Questo esempio dimostra come l’AI possa supportare la creazione di contenuti complessi, lasciando spazio alla creatività e permettendo di concentrarsi su rifiniture e aggiunte (Fatte poi a manina, come questo commento) che arricchiscono il pezzo finale.


Spero che questo articolo vi abbia ispirato e mostrato il potenziale dell’intelligenza artificiale nel migliorare i processi di scrittura e automazione. Fatemi sapere come avete utilizzato la mini app e se avete idee per nuovi progetti o argomenti che vorreste esplorare nei prossimi articoli di AI, Cookbook. Il vostro feedback è prezioso per continuare a innovare e proporre soluzioni sempre più utili e pratiche!

 

Massimiliano Turazzinihttps://maxturazzini.com
Sono Massimiliano Turazzini, un imprenditore attivo nel campo dell’innovazione digitale e dell'intelligenza artificiale con ruoli attivi o di investitore in diverse startup tecnologiche. L’arrivo dell’Intelligenza Artificiale ha risvegliato il mio istinto iniziale di divulgatore dapprima con Glimpse, un romanzo che racconta una storia su un possibile futuro fianco a fianco con un’AI, e poi con il mio blog dedicato a far comprendere l’AI in contesti organizzativi aziendali o educativi. Da poco ho pubblicato anche "Assumere un'intelligenza artificiale in Azienda", per raccontare a professionisti, manager, imprenditori cosa è possibile fare grazie all'AI. Con un gruppo di manager e imprenditori internazionale, che trova la sua base in VJAL Institute, mi occupo di in-formazione sull’AI in workshop tematici dedicati alle aziende.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato sulle novità tecnologiche
css.php