Stăpânirea ChatGPT: Rezumat eficient cu LLM

Stăpânirea ChatGPT: Rezumat eficient cu LLM

Nodul sursă: 2763303

Rezumat text ChatGPT

Agenți de rezumare imaginați de instrumentul de generare de imagini AI Dall-E.

Faceți parte din populația care lasă recenzii pe Google Maps de fiecare dată când vizitați un restaurant nou?

Sau poate că ești genul care îți împărtășește părerea despre achizițiile Amazon, mai ales când ești declanșat de un produs de calitate scăzută?

Nu-ți face griji, nu te voi învinovăți - toți avem momentele noastre!

În lumea actuală a datelor, cu toții contribuim la potop de date în mai multe moduri. Un tip de date care mi se pare deosebit de interesant datorită diversității și dificultății de interpretare sunt datele textuale, cum ar fi nenumăratele recenzii care sunt postate pe internet în fiecare zi. V-ați oprit vreodată să vă gândiți la importanța standardizării și a condensării datelor textuale?
Bun venit în lumea agenților de rezumat!

Agenții de rezumat s-au integrat perfect în viața noastră de zi cu zi, condensând informațiile și oferind acces rapid la conținut relevant pe o multitudine de aplicații și platforme.

În acest articol, vom explora utilizarea ChatGPT ca agent de rezumat puternic pentru aplicațiile noastre personalizate. Datorită capacității modelelor lingvistice mari (LLM) de a procesa și înțelege texte, pot ajuta la citirea textelor și la generarea de rezumate precise sau la standardizarea informațiilor. Cu toate acestea, este important să știm cum să-și extragă potențialul în realizarea unei astfel de sarcini, precum și să le recunoaștem limitările.

Cea mai mare limitare pentru rezumat?
LLM-urile sunt adesea insuficiente atunci când vine vorba de aderarea la anumite limitări de caractere sau cuvinte în rezumatele lor.

Să explorăm cele mai bune practici pentru generarea de rezumate cu ChatGPT pentru aplicația noastră personalizată, precum și motivele din spatele limitărilor sale și cum să le depășim!

Dacă acest conținut educațional aprofundat vă este util, puteți abonați-vă la lista noastră de corespondență pentru cercetare AI pentru a fi avertizați atunci când lansăm material nou. 

Rezumat eficient cu ChatGPT

Agenții de rezumare sunt utilizați pe tot internetul. De exemplu, site-urile web folosesc agenți de rezumare pentru a oferi rezumate concise ale articolelor, permițând utilizatorilor să obțină o privire de ansamblu rapidă asupra știrilor fără a se scufunda în întregul conținut. Platformele de social media și motoarele de căutare fac și ele acest lucru.

De la agregatori de știri și platforme de social media până la site-uri web de comerț electronic, agenții de rezumat au devenit o parte integrantă a peisajului nostru digital. Și odată cu creșterea LLM-urilor, unii dintre acești agenți folosesc acum AI pentru rezultate de rezumat mai eficiente.

ChatGPT poate fi un bun aliat atunci când construiești o aplicație folosind agenți de rezumat pentru a accelera sarcinile de citire și clasificarea textelor. De exemplu, imaginați-vă că avem o afacere de comerț electronic și că suntem interesați să procesăm toate recenziile clienților noștri. ChatGPT ne-ar putea ajuta să rezumam orice recenzie dată în câteva propoziții, să o standardizăm într-un format generic, să determinăm sentimentul revizuirii și clasificarea aceasta in consecinta.

Deși este adevărat că am putea pur și simplu să transmitem recenzia către ChatGPT, există o listă cu cele mai bune practici - și lucruri de evitat - pentru a valorifica puterea ChatGPT în această sarcină concretă.

Să explorăm opțiunile dând viață acestui exemplu!

Exemplu: recenzii de comerț electronic

Gif făcut de sine.

Luați în considerare exemplul de mai sus în care suntem interesați să procesăm toate recenziile pentru un anumit produs pe site-ul nostru de comerț electronic. Am fi interesați să procesăm recenzii precum următoarea despre produsul nostru vedetă: primul computer pentru copii!

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. """

În acest caz, am dori ca ChatGPT să:

  • Clasificați recenzia în pozitive sau negative.
  • Furnizați un rezumat al revizuirii de 20 de cuvinte.
  • Produceți răspunsul cu o structură concretă pentru a standardiza toate recenziile într-un singur format.

Note de implementare

Iată structura codului de bază pe care am putea-o folosi pentru a solicita ChatGPT din aplicația noastră personalizată. Ofer și un link către a Jupiter Notebook cu toate exemplele folosite în acest articol.

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)

Funcția get_completion() apelează API-ul ChatGPT cu un anumit prompt. Dacă promptul conține suplimentar textul utilizatorului, cum ar fi recenzia în sine în cazul nostru, este separată de restul codului prin ghilimele triple.

Să folosim get_completion() funcția pentru a solicita ChatGPT!

Iată un prompt care îndeplinește cerințele descrise mai sus:

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)

⚠️ Orientările de solicitare utilizate în acest exemplu, cum ar fi utilizarea delimitatorilor pentru a separa textul introdus de restul solicitării și solicitarea unei ieșiri structurate, sunt explicate pe deplin la Ce am învățat de la Cursul OpenAI despre inginerie promptă — Orientări pentru promptare.

Iată răspunsul 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."
}

După cum putem observa din rezultat, recenzia este precisă și bine structurată, totuși îi lipsesc unele informații de care am putea fi interesați în calitate de proprietari ai comerțului electronic, cum ar fi informații despre livrarea produsului.

Rezumați cu un focus pe

Putem îmbunătăți în mod iterativ solicitarea solicitării lui ChatGPT să se concentreze asupra anumitor lucruri din rezumat. În acest caz, ne interesează orice detalii date despre livrare și livrare:

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)

De data aceasta, răspunsul ChatGPT este următorul:

{ "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."
}

Acum recenzia este mult mai completă. Oferirea de detalii cu privire la accentul important al revizuirii inițiale este crucială pentru a evita ca ChatGPT să ignore unele informații care ar putea fi valoroase pentru cazul nostru de utilizare.

Ați observat că, deși această a doua încercare include informații despre livrare, a omis singurul aspect negativ al revizuirii inițiale?

Să reparăm asta!

„Extract” în loc de „Rezumat”

Investigand sarcinile de rezumat, am aflat că rezumarea poate fi o sarcină dificilă pentru LLM-uri dacă solicitarea utilizatorului nu este suficient de precisă.

Când cereți ChatGPT să furnizeze un rezumat al unui anumit text, acesta poate sări peste informații care ar putea fi relevante pentru noi - așa cum am experimentat recent - sau va acorda aceeași importanță tuturor subiectelor din text, oferind doar o imagine de ansamblu asupra punctelor principale.

Experții în LLM folosesc termenul extrage și informații suplimentare despre concentrările lor în loc de rezuma atunci când efectuează astfel de sarcini asistate de aceste tipuri de modele.

În timp ce rezumatul urmărește să ofere o imagine de ansamblu concisă a punctelor principale ale textului, inclusiv subiecte care nu au legătură cu subiectul de interes, extragerea informațiilor se concentrează pe recuperarea detaliilor specifice și ne poate oferi exact ceea ce căutăm. Să încercăm atunci cu extracția!

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)

În acest caz, prin utilizarea extracției, obținem doar informații despre subiectul nostru de interes: Shipping: Arrived a day earlier than expected.

Automatizare

Acest sistem funcționează pentru o singură revizuire. Cu toate acestea, atunci când proiectați un prompt pentru o aplicație concretă, este important să-l testăm într-un lot de exemple, astfel încât să putem prinde orice anomalii sau comportament neadecvat în model.

În cazul procesării mai multor recenzii, iată un exemplu de structură de cod Python care poate ajuta.

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}``` """

Iată rezumatele lotului nostru de recenzii:

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.

⚠️ Rețineți că, deși restricția de cuvinte din rezumatele noastre a fost suficient de clară în solicitările noastre, putem vedea cu ușurință că această limitare de cuvinte nu este realizată în niciuna dintre iterații.

Această nepotrivire în numărarea cuvintelor se întâmplă deoarece LLM-urile nu au o înțelegere precisă a numărului de cuvinte sau caractere. Motivul din spatele acestui lucru se bazează pe una dintre principalele componente importante ale arhitecturii lor: tokenizatorul.

Tokenizer

LLM-urile precum ChatGPT sunt concepute pentru a genera text pe baza modelelor statistice învățate din cantități mari de date lingvistice. Deși sunt foarte eficiente în generarea de text fluent și coerent, le lipsește un control precis asupra numărului de cuvinte.

În exemplele de mai sus, când am dat instrucțiuni despre un număr foarte precis de cuvinte, ChatGPT se străduia să îndeplinească aceste cerințe. În schimb, a generat text care este de fapt mai scurt decât numărul de cuvinte specificat.

În alte cazuri, poate genera texte mai lungi sau pur și simplu text excesiv de pronunțat sau lipsit de detalii. În plus, ChatGPT poate acorda prioritate altor factori, cum ar fi coerența și relevanța, față de respectarea strictă a numărului de cuvinte. Acest lucru poate duce la un text de înaltă calitate în ceea ce privește conținutul și coerența, dar care nu se potrivește exact cu cerințele privind numărul de cuvinte.

Tokenizatorul este elementul cheie în arhitectura ChatGPT care influențează în mod clar numărul de cuvinte din rezultatul generat.

Gif făcut de sine.

Arhitectura Tokenizer

Tokenizer-ul este primul pas în procesul de generare a textului. Este responsabil pentru descompunerea fragmentului de text pe care îl introducem în ChatGPT în elemente individuale — jetoane — , care sunt apoi procesate de modelul de limbă pentru a genera text nou.

Când tokenizatorul descompune o bucată de text în token-uri, o face pe baza unui set de reguli care sunt concepute pentru a identifica unitățile semnificative ale limbii țintă. Cu toate acestea, aceste reguli nu sunt întotdeauna perfecte și pot exista cazuri în care tokenizatorul împarte sau îmbină jetoanele într-un mod care afectează numărul total de cuvinte din text.

De exemplu, luați în considerare următoarea propoziție: „Vreau să mănânc un sandviș cu unt de arahide”. Dacă tokenizer-ul este configurat să împartă jetoane pe baza spațiilor și semnelor de punctuație, acesta poate împărți această propoziție în următoarele jetoane cu un număr total de cuvinte de 8, egal cu numărul de jetoane.

Imagine făcută de sine.

Cu toate acestea, dacă tokenizer-ul este configurat să trateze "unt de arahide" ca cuvânt compus, poate descompune propoziția în următoarele simboluri, cu un număr total de cuvinte de 8, dar un număr de simboluri de 7.

Astfel, modul în care este configurat tokenizerul poate afecta numărul total de cuvinte din text, iar acest lucru poate afecta capacitatea LLM de a urma instrucțiunile despre numărul precis de cuvinte. În timp ce unele dispozitive de tokenizare oferă opțiuni de personalizare a modului în care textul este tokenizat, acest lucru nu este întotdeauna suficient pentru a asigura respectarea precisă a cerințelor privind numărul de cuvinte. Pentru ChatGPT, în acest caz, nu putem controla această parte a arhitecturii sale.

Acest lucru face ca ChatGPT să nu fie atât de bun la îndeplinirea limitărilor de caractere sau cuvinte, dar se poate încerca cu propoziții, deoarece tokenizerul nu afectează numărul de propoziții, dar lungimea acestora.

Conștientizarea acestei restricții vă poate ajuta să creați cel mai potrivit prompt pentru aplicația dvs. Având aceste cunoștințe despre cum funcționează numărul de cuvinte pe ChatGPT, haideți să facem o ultimă iterație cu solicitarea noastră pentru aplicația de comerț electronic!

Încheiere: Recenzii de comerț electronic

Haideți să combinăm învățările noastre din acest articol într-un prompt final! În acest caz, vom cere rezultatele în HTML format pentru o ieșire mai frumoasă:

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))

Și iată rezultatul final de la ChatGPT:

Captură de ecran făcută de sine de la Jupiter Notebook cu exemplele folosite în acest articol.

Rezumat

În acest articol, am discutat despre cele mai bune practici pentru utilizarea ChatGPT ca agent de rezumat pentru aplicația noastră personalizată.

Am văzut că atunci când construiți o aplicație, este extrem de dificil să veniți cu promptul perfect care se potrivește cerințelor aplicației dvs. în prima încercare. Cred că un mesaj frumos de luat acasă este să Gândiți-vă la solicitarea ca un proces iterativ unde rafinați și modelați promptul până când obțineți exact rezultatul dorit.

Prin rafinarea iterativă a promptului și aplicând-o la un lot de exemple înainte de a-l implementa în producție, vă puteți asigura că rezultatul este consecvent în mai multe exemple și acoperă răspunsurile aberante. În exemplul nostru, s-ar putea întâmpla ca cineva să furnizeze un text aleatoriu în loc de o recenzie. Putem instrui ChatGPT să aibă și o ieșire standardizată pentru a exclude aceste răspunsuri aberante.

În plus, atunci când utilizați ChatGPT pentru o anumită sarcină, este, de asemenea, o practică bună să aflați despre avantajele și dezavantajele utilizării LLM-urilor pentru sarcina noastră țintă. Așa am dat seama că sarcinile de extracție sunt mai eficiente decât rezumarea atunci când dorim un rezumat uman comun al unui text de intrare. Am învățat, de asemenea, că furnizarea punctului central al rezumatului poate fi: a joc schimbător în ceea ce priveşte conţinutul generat.

În cele din urmă, în timp ce LLM-urile pot fi foarte eficiente în generarea de text, nu sunt ideale pentru a urma instrucțiuni precise despre numărul de cuvinte sau alte cerințe specifice de formatare. Pentru a atinge aceste obiective, poate fi necesar să rămâneți la numărarea propozițiilor sau să utilizați alte instrumente sau metode, cum ar fi editarea manuală sau un software mai specializat.

Acest articol a fost publicat inițial Spre știința datelor și re-publicat în TOPBOTS cu permisiunea autorului.

Bucurați-vă de acest articol? Înscrieți-vă pentru mai multe actualizări ale cercetării AI.

Vă vom anunța când vom lansa mai multe articole sumare ca acesta.

Timestamp-ul:

Mai mult de la TOPBOTS