ChatGPT beheersen: effectieve samenvatting met LLM's

ChatGPT beheersen: effectieve samenvatting met LLM's

Bronknooppunt: 2763303

Tekstsamenvatting ChatGPT

Samenvattingsagenten bedacht door de AI-tool voor het genereren van afbeeldingen Dall-E.

Behoort u tot de populatie die bij elk bezoek aan een nieuw restaurant beoordelingen achterlaat op Google maps?

Of misschien ben jij het type dat je mening deelt over Amazon-aankopen, vooral als je getriggerd wordt door een product van lage kwaliteit?

Maak je geen zorgen, ik neem het je niet kwalijk - we hebben allemaal onze momenten!

In de datawereld van vandaag dragen we allemaal op verschillende manieren bij aan de stortvloed aan gegevens. Een gegevenstype dat ik bijzonder interessant vind vanwege de diversiteit en moeilijkheid van interpretatie, zijn tekstuele gegevens, zoals de talloze beoordelingen die dagelijks op internet worden geplaatst. Heeft u er ooit bij stilgestaan ​​hoe belangrijk het is om tekstuele gegevens te standaardiseren en te condenseren?
Welkom in de wereld van samenvattingsagenten!

Samenvattingsagenten zijn naadloos geïntegreerd in ons dagelijks leven door informatie samen te vatten en snel toegang te bieden tot relevante inhoud in een groot aantal applicaties en platforms.

In dit artikel zullen we het gebruik van ChatGPT onderzoeken als een krachtige samenvattingsagent voor onze aangepaste applicaties. Dankzij het vermogen van Large Language Models (LLM) om teksten te verwerken en te begrijpen, ze kunnen helpen bij het lezen van teksten en het genereren van nauwkeurige samenvattingen of het standaardiseren van informatie. Het is echter belangrijk om te weten hoe ze hun potentieel kunnen benutten bij het uitvoeren van een dergelijke taak, en om hun beperkingen te erkennen.

De grootste beperking voor samenvatten?
LLM's schieten vaak tekort als het gaat om het naleven van specifieke karakter- of woordbeperkingen in hun samenvattingen.

Laten we eens kijken naar de best practices voor het genereren van samenvattingen met ChatGPT voor onze aangepaste applicatie, evenals de redenen achter de beperkingen en hoe deze te overwinnen!

Als deze diepgaande educatieve inhoud nuttig voor je is, kan dat abonneer u op onze AI-research mailinglijst om gewaarschuwd te worden wanneer we nieuw materiaal uitbrengen. 

Effectieve samenvatting met ChatGPT

Samenvattingsmiddelen worden overal op internet gebruikt. Websites gebruiken bijvoorbeeld samenvattingsagenten om beknopte samenvattingen van artikelen aan te bieden, waardoor gebruikers snel een overzicht van het nieuws kunnen krijgen zonder in de volledige inhoud te duiken. Ook sociale mediaplatforms en zoekmachines doen dit.

Van nieuwsaggregators en socialemediaplatforms tot e-commercewebsites, samenvattingsagenten zijn een integraal onderdeel geworden van ons digitale landschap. En met de opkomst van LLM's gebruiken sommige van deze agenten nu AI voor effectievere samenvattingsresultaten.

ChatGPT kan een goede bondgenoot zijn bij het bouwen van een applicatie met behulp van samenvattingsagenten voor het versnellen van leestaken en het classificeren van teksten. Stel dat we bijvoorbeeld een e-commercebedrijf hebben en geïnteresseerd zijn in het verwerken van al onze klantrecensies. ChatGPT zou ons kunnen helpen bij het samenvatten van een bepaalde review in een paar zinnen, het standaardiseren naar een generiek formaat, bepalen het sentiment van de recensie en classificatie het dienovereenkomstig.

Hoewel het waar is dat we de beoordeling eenvoudig naar ChatGPT kunnen sturen, is er een lijst met praktische tips - en dingen om te vermijden - om de kracht van ChatGPT te benutten in deze concrete taak.

Laten we de opties verkennen door dit voorbeeld tot leven te brengen!

Voorbeeld: e-commercerecensies

Zelf gemaakte gif.

Overweeg het bovenstaande voorbeeld waarin we geïnteresseerd zijn in het verwerken van alle recensies voor een bepaald product op onze e-commerce website. We zijn geïnteresseerd in het verwerken van beoordelingen zoals de volgende over ons sterproduct: de eerste computer voor kinderen!

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 dit geval willen we dat ChatGPT:

  • Classificeer de beoordeling in positief of negatief.
  • Geef een samenvatting van de recensie van 20 woorden.
  • Voer de reactie uit met een concrete structuur om alle beoordelingen in één formaat te standaardiseren.

Implementatie-opmerkingen

Hier is de basiscodestructuur die we zouden kunnen gebruiken om ChatGPT op te roepen vanuit onze aangepaste applicatie. Ik geef ook een link naar een Jupyter Notebook met alle voorbeelden die in dit artikel worden gebruikt.

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)

De functie get_completion() roept de ChatGPT API aan met een gegeven prompt. Als de prompt extra bevat gebruiker tekst, zoals de recensie zelf in ons geval, wordt deze gescheiden van de rest van de code door drievoudige aanhalingstekens.

Laten we de get_completion() functie om ChatGPT!

Hier is een prompt die voldoet aan de hierboven beschreven vereisten:

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)

⚠️ De promptrichtlijnen die in dit voorbeeld worden gebruikt, zoals het gebruik van scheidingstekens om de invoertekst te scheiden van de rest van de prompt en het vragen om een ​​gestructureerde uitvoer, worden volledig uitgelegd op Wat ik heb geleerd van OpenAI's cursus over prompt engineering: richtlijnen voor prompts.

Hier is het antwoord van 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."
}

Zoals we uit de output kunnen opmaken, is de beoordeling echter nauwkeurig en goed gestructureerd het mist wat informatie waarin we geïnteresseerd zouden kunnen zijn als eigenaren van de e-commerce, zoals informatie over de levering van het product.

Vat samen met een focus op

We kunnen onze prompt iteratief verbeteren door ChatGPT te vragen zich te concentreren op bepaalde dingen in de samenvatting. In dit geval zijn wij geïnteresseerd in eventuele details over de verzending en levering:

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)

Deze keer is het antwoord van ChatGPT het volgende:

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

Nu is de review veel completer. Het geven van details over de belangrijke focus van de oorspronkelijke beoordeling is cruciaal om te voorkomen dat ChatGPT bepaalde informatie overslaat die waardevol kan zijn voor onze use case.

Is het je opgevallen dat hoewel deze tweede proefversie informatie over de levering bevat, het enige negatieve aspect van de oorspronkelijke beoordeling is overgeslagen?

Laten we dat oplossen!

"Uitpakken" in plaats van "Samenvatten"

Door samenvattende taken te onderzoeken, kwam ik daar achter samenvatting kan een lastige taak zijn voor LLM's als de gebruikersprompt niet nauwkeurig genoeg is.

Wanneer ChatGPT wordt gevraagd om een ​​samenvatting van een bepaalde tekst te geven, kan het informatie overslaan die voor ons relevant kan zijn - zoals we onlangs hebben ervaren - of het geeft hetzelfde belang aan alle onderwerpen in de tekst en geeft alleen een overzicht van de belangrijkste punten.

Experts in LLM's gebruiken de term extract en aanvullende informatie over hun aandachtspunten in plaats van samenvatten bij het uitvoeren van dergelijke taken bijgestaan ​​door dit soort modellen.

Terwijl samenvattingen bedoeld zijn om een ​​beknopt overzicht te geven van de belangrijkste punten van de tekst, inclusief onderwerpen die geen verband houden met het onderwerp van focus, richt informatie-extractie zich op het ophalen van specifieke details en kan ons geven waar we precies naar op zoek zijn. Laten we het dan proberen met extractie!

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 dit geval krijgen we door middel van extractie alleen informatie over ons focusonderwerp: Shipping: Arrived a day earlier than expected.

Automatisering

Dit systeem werkt voor één enkele review. Niettemin, bij het ontwerpen van een prompt voor een concrete toepassing, het is belangrijk om het in een reeks voorbeelden te testen, zodat we eventuele uitschieters of wangedrag in het model kunnen opsporen.

In het geval van het verwerken van meerdere beoordelingen, is hier een voorbeeld van een Python-codestructuur die kan helpen.

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

Hier zijn de samenvattingen van onze reeks beoordelingen:

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.

⚠️ Merk op dat hoewel de woordbeperking van onze samenvattingen duidelijk genoeg was in onze prompts, we gemakkelijk kunnen zien dat deze woordbeperking in geen van de iteraties wordt bereikt.

Deze discrepantie in het tellen van woorden gebeurt omdat LLM's geen precies begrip hebben van het aantal woorden of tekens. De reden hierachter is afhankelijk van een van de belangrijkste belangrijke componenten van hun architectuur: de tokenizer.

tokenizer

LLM's zoals ChatGPT zijn ontworpen om tekst te genereren op basis van statistische patronen die zijn geleerd uit enorme hoeveelheden taalgegevens. Hoewel ze zeer effectief zijn in het genereren van vloeiende en samenhangende tekst, missen ze nauwkeurige controle over het aantal woorden.

In de bovenstaande voorbeelden, wanneer we instructies hebben gegeven over een zeer nauwkeurig aantal woorden, ChatGPT had moeite om aan die eisen te voldoen. In plaats daarvan heeft het tekst gegenereerd die eigenlijk korter is dan het opgegeven aantal woorden.

In andere gevallen kan het langere teksten genereren of gewoon tekst die te uitgebreid is of weinig details bevat. Aanvullend, ChatGPT kan andere factoren, zoals coherentie en relevantie, voorrang geven boven strikte naleving van het aantal woorden. Dit kan resulteren in tekst die qua inhoud en samenhang van hoge kwaliteit is, maar die niet exact aansluit bij de woordentellingseis.

De tokenizer is het belangrijkste element in de architectuur van ChatGPT dat duidelijk het aantal woorden in de gegenereerde uitvoer beïnvloedt.

Zelf gemaakte gif.

Tokenizer-architectuur

De tokenizer is de eerste stap in het proces van het genereren van tekst. Het is verantwoordelijk voor het opsplitsen van het stuk tekst dat we invoeren in ChatGPT in afzonderlijke elementen - Munten - , die vervolgens door het taalmodel worden verwerkt om nieuwe tekst te genereren.

Wanneer de tokenizer een stuk tekst opsplitst in tokens, doet hij dit op basis van een reeks regels die zijn ontworpen om de betekenisvolle eenheden van de doeltaal te identificeren. Deze regels zijn echter niet altijd perfect, en er kunnen gevallen zijn waarin de tokenizer tokens splitst of samenvoegt op een manier die het totale aantal woorden van de tekst beïnvloedt.

Beschouw bijvoorbeeld de volgende zin: “Ik wil een boterham met pindakaas eten”. Als de tokenizer is geconfigureerd om tokens te splitsen op basis van spaties en interpunctie, kan deze zin worden opgesplitst in de volgende tokens met een totaal aantal woorden van 8, gelijk aan het aantal tokens.

Zelf gemaakt beeld.

Als de tokenizer echter is geconfigureerd om te behandelen "pindakaas" als een samengesteld woord kan het de zin opsplitsen in de volgende tokens, met een totaal aantal woorden van 8, maar een tokentelling van 7.

De manier waarop de tokenizer is geconfigureerd, kan dus van invloed zijn op het totale aantal woorden van de tekst, en dit kan van invloed zijn op het vermogen van de LLM om instructies over het precieze aantal woorden op te volgen. Hoewel sommige tokenizers opties bieden om aan te passen hoe tekst wordt getokeniseerd, is dit niet altijd voldoende om ervoor te zorgen dat precies wordt voldaan aan de vereisten voor het tellen van woorden. Voor ChatGPT hebben we in dit geval geen controle over dit deel van de architectuur.

Dit maakt ChatGPT niet zo goed in het bereiken van karakter- of woordbeperkingen, maar men kan in plaats daarvan met zinnen proberen, aangezien de tokenizer geen invloed heeft op het aantal zinnen, maar hun lengte.

Als u zich bewust bent van deze beperking, kunt u de meest geschikte prompt voor uw toepassing in gedachten bouwen. Met deze kennis over hoe het tellen van woorden werkt op ChatGPT, laten we een laatste iteratie doen met onze prompt voor de e-commerce applicatie!

Afronding: e-commercerecensies

Laten we onze lessen uit dit artikel combineren in een laatste prompt! In dit geval vragen we de resultaten in HTML formaat voor een mooiere uitvoer:

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

En hier is de uiteindelijke uitvoer van ChatGPT:

Zelf gemaakte screenshot van de Jupyter Notebook met de voorbeelden die in dit artikel worden gebruikt.

Samengevat

In dit artikel, we hebben de best practices besproken voor het gebruik van ChatGPT als samenvattingsagent voor onze aangepaste applicatie.

We hebben gezien dat het bij het bouwen van een applicatie buitengewoon moeilijk is om in de eerste proef met de perfecte prompt te komen die overeenkomt met uw applicatie-eisen. Ik denk dat het een mooie boodschap is om mee naar huis te nemen beschouw prompting als een iteratief proces waar u uw prompt verfijnt en modelleert totdat u precies de gewenste uitvoer krijgt.

Door uw prompt iteratief te verfijnen en toe te passen op een reeks voorbeelden voordat u deze in productie neemt, kunt u ervoor zorgen de uitvoer is consistent in meerdere voorbeelden en dekt uitbijterreacties. In ons voorbeeld kan het voorkomen dat iemand een willekeurige tekst aanlevert in plaats van een review. We kunnen ChatGPT instrueren om ook een gestandaardiseerde uitvoer te hebben om deze uitschieters uit te sluiten.

Bovendien is het bij het gebruik van ChatGPT voor een specifieke taak ook een goede gewoonte om meer te weten te komen over de voor- en nadelen van het gebruik van LLM's voor onze doeltaak. Zo kwamen we erachter dat extractietaken effectiever zijn dan samenvattingen wanneer we een gewone, menselijke samenvatting van een invoertekst willen. We hebben ook geleerd dat het bieden van de focus van de samenvatting een game-changer met betrekking tot de gegenereerde inhoud.

Tot slot, terwijl LLM's zeer effectief kunnen zijn in het genereren van tekst, ze zijn niet ideaal voor het volgen van nauwkeurige instructies over het aantal woorden of andere specifieke opmaakvereisten. Om deze doelen te bereiken, kan het nodig zijn om vast te houden aan het tellen van zinnen of andere tools of methoden te gebruiken, zoals handmatige bewerking of meer gespecialiseerde software.

Dit artikel is oorspronkelijk gepubliceerd op Op weg naar data science en opnieuw gepubliceerd naar TOPBOTS met toestemming van de auteur.

Geniet van dit artikel? Meld u aan voor meer AI-onderzoeksupdates.

We laten het u weten wanneer we meer samenvattende artikelen zoals deze vrijgeven.

Tijdstempel:

Meer van TOPBOTS