Padroneggiare ChatGPT: riepilogo efficace con LLM

Padroneggiare ChatGPT: riepilogo efficace con LLM

Nodo di origine: 2763303

Riepilogo testuale ChatGPT

Agenti di riepilogo immaginati dallo strumento di generazione di immagini AI Dall-E.

Fai parte della popolazione che lascia recensioni su Google Maps ogni volta che visiti un nuovo ristorante?

O forse sei il tipo da condividere la tua opinione sugli acquisti su Amazon, soprattutto quando vieni innescato da un prodotto di bassa qualità?

Non preoccuparti, non ti biasimo: tutti abbiamo i nostri momenti!

Nel mondo dei dati di oggi, tutti noi contribuiamo al diluvio di dati in diversi modi. Un tipo di dati che trovo particolarmente interessante per la sua diversità e difficoltà di interpretazione sono i dati testuali, come le innumerevoli recensioni che vengono pubblicate su Internet ogni giorno. Ti sei mai fermato a considerare l'importanza di standardizzare e condensare i dati testuali?
Benvenuti nel mondo degli agenti di riepilogo!

Gli agenti di riepilogo si sono integrati perfettamente nella nostra vita quotidiana condensando le informazioni e fornendo un rapido accesso ai contenuti pertinenti attraverso una moltitudine di applicazioni e piattaforme.

In questo articolo, esploreremo l'utilizzo di ChatGPT come potente agente di riepilogo per le nostre applicazioni personalizzate. Grazie alla capacità dei Large Language Models (LLM) di elaborare e comprendere testi, possono aiutare a leggere testi e generare riassunti accurati o standardizzare le informazioni. Tuttavia, è importante sapere come estrarre il loro potenziale nello svolgimento di tale compito, oltre a riconoscere i propri limiti.

Il più grande limite per la sintesi?
Gli LLM spesso non sono all'altezza quando si tratta di aderire a specifici limiti di caratteri o parole nei loro sommari.

Esploriamo le migliori pratiche per la generazione di riepiloghi con ChatGPT per la nostra applicazione personalizzata, nonché i motivi alla base dei suoi limiti e come superarli!

Se questo contenuto educativo approfondito è utile per te, puoi farlo iscriviti alla nostra mailing list di ricerca sull'IA per essere avvisato quando rilasciamo nuovo materiale. 

Riepilogo efficace con ChatGPT

Gli agenti di riepilogo vengono utilizzati ovunque su Internet. Ad esempio, i siti Web utilizzano agenti di riepilogo per offrire riassunti concisi di articoli, consentendo agli utenti di ottenere una rapida panoramica delle notizie senza immergersi nell'intero contenuto. Anche le piattaforme di social media e i motori di ricerca lo fanno.

Dagli aggregatori di notizie e piattaforme di social media ai siti di e-commerce, gli agenti di riepilogo sono diventati parte integrante del nostro panorama digitale. E con l'aumento degli LLM, alcuni di questi agenti ora utilizzano l'intelligenza artificiale per risultati di riepilogo più efficaci.

ChatGPT può essere un buon alleato quando si crea un'applicazione utilizzando agenti di riepilogo per velocizzare le attività di lettura e classificare i testi. Ad esempio, immagina di avere un'attività di e-commerce e di essere interessato a elaborare tutte le recensioni dei nostri clienti. ChatGPT potrebbe aiutarci a riassumere una data recensione in poche frasi, standardizzandola in un formato generico, determinante il sentimento della recensione e la classificazione di conseguenza.

Sebbene sia vero che potremmo semplicemente fornire la recensione a ChatGPT, esiste un elenco di best practice - e cose da evitare - per sfruttare la potenza di ChatGPT in questo compito concreto.

Esploriamo le opzioni dando vita a questo esempio!

Esempio: recensioni e-commerce

Gif fai da te.

Considera l'esempio sopra in cui siamo interessati a elaborare tutte le recensioni per un determinato prodotto sul nostro sito di e-commerce. Saremmo interessati a elaborare recensioni come la seguente sul nostro prodotto di punta: il primo computer per bambini!

prod_review = """
I purchased this children's computer for my son, and he absolutely adores it. He spends hours exploring its various features and engaging with the educational games. The colorful design and intuitive interface make it easy for him to navigate. The computer is durable and built to withstand rough handling, which is perfect for active kids. My only minor gripe is that the volume could be a bit louder. Overall, it's an excellent educational toy that provides hours of fun and learning for my son. It arrived a day earlier
than expected, so I got to play with it myself before I gave it to him. """

In questo caso, vorremmo che ChatGPT:

  • Classifica la recensione in positiva o negativa.
  • Fornire un riassunto della recensione di 20 parole.
  • Invia la risposta con una struttura concreta per standardizzare tutte le recensioni in un unico formato.

Note di implementazione

Ecco la struttura del codice di base che potremmo utilizzare per richiedere ChatGPT dalla nostra applicazione personalizzata. Fornisco anche un collegamento a a Notebook Jupyter con tutti gli esempi utilizzati in questo articolo.

import openai
import os openai.api_key_path = "/path/to/key" def get_completion(prompt, model="gpt-3.5-turbo"): """
This function calls ChatGPT API with a given prompt
and returns the response back. """ messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=0 ) return response.choices[0].message["content"] user_text = f"""
<Any given text> """ prompt = f"""
<Any prompt with additional text> """{user_text}""" """ # A simple call to ChatGPT
response = get_completion(prompt)

La funzione get_completion() chiama l'API ChatGPT con un dato pronto. Se il prompt contiene file aggiuntivi testo dell'utente, come la recensione stessa nel nostro caso, è separato dal resto del codice da virgolette triple.

Usiamo il file get_completion() funzione per richiedere ChatGPT!

Ecco un prompt che soddisfa i requisiti sopra descritti:

prompt = f"""
Your task is to generate a short summary of a product review from an e-commerce site. Summarize the review below, delimited by triple backticks, in exactly 20 words. Output a json with the sentiment of the review, the summary and original review as keys. Review: ```{prod_review}``` """
response = get_completion(prompt)
print(response)

⚠️ Le linee guida per il prompt utilizzate in questo esempio, come l'utilizzo di delimitatori per separare il testo di input dal resto del prompt e la richiesta di un output strutturato, sono spiegate in dettaglio all'indirizzo Cosa ho imparato dal corso di OpenAI sull'ingegneria del prompt - Linee guida per il prompt.

Ecco la risposta di ChatGPT:

{ "sentiment": "positive", "summary": "Durable and engaging children's computer with intuitive interface and educational games. Volume could be louder.", "review": "I purchased this children's computer for my son, and he absolutely adores it. He spends hours exploring its various features and engaging with the educational games. The colorful design and intuitive interface make it easy for him to navigate. The computer is durable and built to withstand rough handling, which is perfect for active kids. My only minor gripe is that the volume could be a bit louder. Overall, it's an excellent educational toy that provides hours of fun and learning for my son. It arrived a day earlierthan expected, so I got to play with it myself before I gave it to him."
}

Come possiamo osservare dall'output, la recensione è comunque accurata e ben strutturata mancano alcune informazioni che potrebbero interessarci in quanto proprietari dell'e-commerce, come le informazioni sulla consegna del prodotto.

Riassumi con un focus su

Possiamo migliorare in modo iterativo il nostro prompt chiedendo a ChatGPT di concentrarsi su determinate cose nel riepilogo. In questo caso, siamo interessati a tutti i dettagli forniti sulla spedizione e consegna:

prompt = f"""
Your task is to generate a short summary of a product review from an ecommerce site. Summarize the review below, delimited by triple backticks, in exactly 20 words and focusing on any aspects that mention shipping and delivery of the product. Output a json with the sentiment of the review, the summary and original review as keys. Review: ```{prod_review}``` """ response = get_completion(prompt)
print(response)

Questa volta, la risposta di ChatGPT è la seguente:

{ "sentiment": "positive", "summary": "Durable and engaging children's computer with intuitive interface. Arrived a day earlier than expected.", "review": "I purchased this children's computer for my son, and he absolutely adores it. He spends hours exploring its various features and engaging with the educational games. The colorful design and intuitive interface make it easy for him to navigate. The computer is durable and built to withstand rough handling, which is perfect for active kids. My only minor gripe is that the volume could be a bit louder. Overall, it's an excellent educational toy that provides hours of fun and learning for my son. It arrived a day earlierthan expected, so I got to play with it myself before I gave it to him."
}

Ora la recensione è molto più completa. Fornire dettagli sull'importante focus della recensione originale è fondamentale per evitare che ChatGPT salti alcune informazioni che potrebbero essere preziose per il nostro caso d'uso.

Hai notato che sebbene questa seconda prova includa informazioni sulla consegna, ha saltato l'unico aspetto negativo della recensione originale?

Risolviamolo!

"Estrai" invece di "Riassumi"

Indagando sui compiti di riepilogo, l'ho scoperto il riepilogo può essere un compito complicato per gli LLM se il prompt dell'utente non è sufficientemente accurato.

Quando si chiede a ChatGPT di fornire un riepilogo di un determinato testo, può saltare informazioni che potrebbero essere rilevanti per noi - come abbiamo sperimentato di recente - oppure darà la stessa importanza a tutti gli argomenti del testo, fornendo solo una panoramica dei punti principali.

Gli esperti in LLM usano il termine estratto e ulteriori informazioni sui loro obiettivi invece di riassumere quando si eseguono tali compiti assistiti da questi tipi di modelli.

Mentre il riepilogo mira a fornire una panoramica concisa dei punti principali del testo, inclusi argomenti non correlati all'argomento di interesse, l'estrazione delle informazioni si concentra sul recupero di dettagli specifici e può darci quello che stiamo esattamente cercando. Proviamo allora con l'estrazione!

prompt = f"""
Your task is to extract relevant information from a product review from an ecommerce site to give feedback to the Shipping department. From the review below, delimited by triple quotes extract the information relevant to shipping and delivery. Use 100 characters. Review: ```{prod_review}``` """ response = get_completion(prompt)
print(response)

In questo caso, utilizzando l'estrazione, otteniamo solo informazioni sul nostro argomento di interesse: Shipping: Arrived a day earlier than expected.

Automatizzazione

Questo sistema funziona per una singola revisione. Tuttavia, quando si progetta un prompt per un'applicazione concreta, è importante testarlo in una serie di esempi in modo da poter rilevare eventuali valori anomali o comportamenti scorretti nel modello.

In caso di elaborazione di più revisioni, ecco una struttura di codice Python di esempio che può essere d'aiuto.

reviews = [ "The children's computer I bought for my daughter is absolutely fantastic! She loves it and can't get enough of the educational games. The delivery was fast and arrived right on time. Highly recommend!", "I was really disappointed with the children's computer I received. It didn't live up to my expectations, and the educational games were not engaging at all. The delivery was delayed, which added to my frustration.", "The children's computer is a great educational toy. My son enjoys playing with it and learning new things. However, the delivery took longer than expected, which was a bit disappointing.", "I am extremely happy with the children's computer I purchased. It's highly interactive and keeps my kids entertained for hours. The delivery was swift and hassle-free.", "The children's computer I ordered arrived damaged, and some of the features didn't work properly. It was a huge letdown, and the delivery was also delayed. Not a good experience overall."
] prompt = f""" Your task is to generate a short summary of each product review from an e-commerce site. Extract positive and negative information from each of the given reviews below, delimited by triple backticks in at most 20 words each. Extract information about the delivery, if included. Review: ```{reviews}``` """

Ecco i riassunti del nostro gruppo di recensioni:

1. Positive: Fantastic children's computer, fast delivery. Highly recommend.
2. Negative: Disappointing children's computer, unengaging games, delayed delivery.
3. Positive: Great educational toy, son enjoys it. Delivery took longer than expected.
4. Positive: Highly interactive children's computer, swift and hassle-free delivery.
5. Negative: Damaged children's computer, some features didn't work, delayed delivery.

⚠️ Si noti che sebbene la restrizione delle parole dei nostri riepiloghi fosse abbastanza chiara nei nostri prompt, possiamo facilmente vedere che questa restrizione delle parole non è stata raggiunta in nessuna delle iterazioni.

Questa discrepanza nel conteggio delle parole si verifica perché gli LLM non hanno una comprensione precisa del conteggio delle parole o dei caratteri. La ragione di ciò si basa su uno dei principali componenti importanti della loro architettura: il tokenizzatore.

Gettoniera

Gli LLM come ChatGPT sono progettati per generare testo basato su modelli statistici appresi da grandi quantità di dati linguistici. Sebbene siano molto efficaci nel generare un testo fluido e coerente, mancano di un controllo preciso sul conteggio delle parole.

Negli esempi sopra, quando abbiamo dato istruzioni su un conteggio delle parole molto preciso, ChatGPT stava lottando per soddisfare tali requisiti. Invece, ha generato un testo che è effettivamente più breve del conteggio delle parole specificato.

In altri casi, può generare testi più lunghi o semplicemente testi eccessivamente prolissi o privi di dettagli. Inoltre, ChatGPT può dare la priorità ad altri fattori come la coerenza e la pertinenza, rispetto alla stretta aderenza al conteggio delle parole. Ciò può comportare un testo di alta qualità in termini di contenuto e coerenza, ma che non corrisponde esattamente al requisito del numero di parole.

Il tokenizer è l'elemento chiave nell'architettura di ChatGPT che influenza chiaramente il numero di parole nell'output generato.

Gif fai da te.

Architettura del tokenizzatore

Il tokenizer è il primo passo nel processo di generazione del testo. È responsabile della scomposizione della parte di testo che inseriamo in ChatGPT in singoli elementi — gettoni — , che vengono quindi elaborati dal modello linguistico per generare nuovo testo.

Quando il tokenizer suddivide una parte di testo in token, lo fa sulla base di un insieme di regole progettate per identificare le unità significative della lingua di destinazione. Tuttavia, queste regole non sono sempre perfette e ci possono essere casi in cui il tokenizer divide o unisce i token in un modo che influisce sul conteggio complessivo delle parole del testo.

Ad esempio, considera la seguente frase: "Voglio mangiare un panino al burro di arachidi". Se il tokenizer è configurato per dividere i token in base a spazi e punteggiatura, può suddividere questa frase nei seguenti token con un conteggio totale delle parole pari a 8, pari al conteggio dei token.

Immagine fatta da sé.

Tuttavia, se il tokenizer è configurato per trattare "burro di arachidi" come parola composta, può scomporre la frase nei seguenti segni, con un conteggio totale delle parole di 8, ma un conteggio dei token di 7.

Pertanto, il modo in cui è configurato il tokenizer può influire sul conteggio complessivo delle parole del testoe questo può influire sulla capacità dell'LLM di seguire le istruzioni sul conteggio preciso delle parole. Sebbene alcuni tokenizer offrano opzioni per personalizzare il modo in cui il testo viene tokenizzato, ciò non è sempre sufficiente per garantire una precisa aderenza ai requisiti di conteggio delle parole. Per ChatGPT in questo caso, non possiamo controllare questa parte della sua architettura.

Ciò rende ChatGPT non così bravo a soddisfare i limiti di caratteri o parole, ma si può provare invece con le frasi poiché il tokenizer non influisce il numero di frasi, ma la loro lunghezza.

Essere consapevoli di questa restrizione può aiutarti a creare il prompt più adatto per la tua applicazione in mente. Avendo questa conoscenza su come funziona il conteggio delle parole su ChatGPT, facciamo un'iterazione finale con il nostro prompt per l'applicazione di e-commerce!

Conclusione: recensioni sull'e-commerce

Uniamo ciò che abbiamo appreso da questo articolo in un suggerimento finale! In questo caso, chiederemo i risultati in HTML formato per un risultato migliore:

from IPython.display import display, HTML prompt = f"""
Your task is to extract relevant information from a product review from an ecommerce site to give feedback to the Shipping department and generic feedback from the product. From the review below, delimited by triple quotes construct an HTML table with the sentiment of the review, general feedback from
the product in two sentences and information relevant to shipping and delivery. Review: ```{prod_review}``` """ response = get_completion(prompt)
display(HTML(response))

Ed ecco l'output finale di ChatGPT:

Screenshot fatto da sé dal Notebook Jupyter con gli esempi utilizzati in questo articolo.

Sommario

In questo articolo, abbiamo discusso le migliori pratiche per l'utilizzo di ChatGPT come agente di riepilogo per la nostra applicazione personalizzata.

Abbiamo visto che quando si crea un'applicazione, è estremamente difficile trovare il prompt perfetto che corrisponda ai requisiti dell'applicazione nella prima prova. Penso che un bel messaggio da portare a casa sia quello di pensa al suggerimento come a un processo iterativo dove raffini e modelli il tuo prompt finché non ottieni esattamente l'output desiderato.

Perfezionando in modo iterativo il tuo prompt e applicandolo a una serie di esempi prima di distribuirlo in produzione, puoi assicurarti l'output è coerente su più esempi e copre le risposte anomale. Nel nostro esempio, potrebbe accadere che qualcuno fornisca un testo a caso invece di una recensione. Possiamo istruire ChatGPT in modo che abbia anche un output standardizzato per escludere queste risposte anomale.

Inoltre, quando si utilizza ChatGPT per un'attività specifica, è anche una buona pratica conoscere i pro e i contro dell'utilizzo di LLM per la nostra attività di destinazione. È così che ci siamo imbattuti nel fatto che le attività di estrazione sono più efficaci del riepilogo quando desideriamo un riepilogo comune simile a quello umano di un testo di input. Abbiamo anche imparato che fornire il fulcro del sommario può essere a game-changer per quanto riguarda il contenuto generato.

Infine, mentre gli LLM possono essere molto efficaci nella generazione di testo, non sono ideali per seguire istruzioni precise sul conteggio delle parole o altri requisiti di formattazione specifici. Per raggiungere questi obiettivi, potrebbe essere necessario attenersi al conteggio delle frasi o utilizzare altri strumenti o metodi, come l'editing manuale o un software più specializzato.

Questo articolo è stato pubblicato in origine Verso la scienza dei dati e ripubblicato su TOPBOTS con il permesso dell'autore.

Ti piace questo articolo? Iscriviti per ulteriori aggiornamenti sulla ricerca AI.

Ti faremo sapere quando pubblicheremo altri articoli di riepilogo come questo.

Timestamp:

Di più da TOPBOT