Att bemästra ChatGPT: Effektiv sammanfattning med LLM:er

Att bemästra ChatGPT: Effektiv sammanfattning med LLM:er

Källnod: 2763303

Textsammanfattning ChatGPT

Sammanfattningsagenter föreställda av AI-bildgenereringsverktyget Dall-E.

Är du en del av befolkningen som lämnar recensioner på Google maps varje gång du besöker en ny restaurang?

Eller kanske du är typen som delar din åsikt om Amazon-köp, speciellt när du triggas av en produkt av låg kvalitet?

Oroa dig inte, jag kommer inte att skylla på dig - vi har alla våra stunder!

I dagens datavärld bidrar vi alla till datafloden på flera sätt. En datatyp som jag tycker är särskilt intressant på grund av dess mångfald och tolkningssvårigheter är textdata, som de otaliga recensionerna som läggs upp över internet varje dag. Har du någonsin slutat tänka på vikten av att standardisera och kondensera textdata?
Välkommen till en värld av summeringsagenter!

Sammanfattningsagenter har sömlöst integrerats i våra dagliga liv genom att kondensera information och ge snabb tillgång till relevant innehåll över en mängd applikationer och plattformar.

I den här artikeln kommer vi att utforska användningen av ChatGPT som en kraftfull sammanfattningsagent för våra anpassade applikationer. Tack vare Large Language Models (LLM) förmåga att bearbeta och förstå texter, de kan hjälpa till att läsa texter och generera korrekta sammanfattningar eller standardisera information. Det är dock viktigt att veta hur man kan utvinna sin potential i att utföra en sådan uppgift, samt att erkänna deras begränsningar.

Den största begränsningen för sammanfattning?
LLM:er kommer ofta till korta när det gäller att följa specifika tecken- eller ordbegränsningar i sina sammanfattningar.

Låt oss utforska de bästa metoderna för att skapa sammanfattningar med ChatGPT för vår anpassade applikation, såväl som orsakerna bakom dess begränsningar och hur man övervinner dem!

Om detta fördjupade utbildningsinnehåll är användbart för dig kan du prenumerera på vår AI-forskningsmaillista att bli varnade när vi släpper nytt material. 

Effektiv sammanfattning med ChatGPT

Sammanfattningsagenter används över hela Internet. Till exempel använder webbplatser sammanfattningsagenter för att erbjuda kortfattade sammanfattningar av artiklar, vilket gör det möjligt för användare att få en snabb överblick över nyheterna utan att dyka ner i hela innehållet. Sociala medieplattformar och sökmotorer gör detta också.

Från nyhetssamlare och sociala medieplattformar till e-handelswebbplatser, summeringsagenter har blivit en integrerad del av vårt digitala landskap. Och med ökningen av LLM:er använder några av dessa agenter nu AI för effektivare sammanfattningsresultat.

ChatGPT kan vara en bra allierad när man bygger en applikation med hjälp av summeringsagenter för att påskynda läsuppgifter och klassificera texter. Tänk dig till exempel att vi har en e-handelsverksamhet och att vi är intresserade av att behandla alla våra kundrecensioner. ChatGPT kan hjälpa oss att sammanfatta en given recension i några få meningar, standardisera den till ett generiskt format, fastställa känslan av recensionen och klassificering det därefter.

Även om det är sant att vi helt enkelt skulle kunna mata recensionen till ChatGPT, finns det en lista med bästa praxis – och saker att undvika – att utnyttja kraften i ChatGPT i denna konkreta uppgift.

Låt oss utforska alternativen genom att väcka detta exempel till liv!

Exempel: E-handelsrecensioner

Självgjord gif.

Tänk på exemplet ovan där vi är intresserade av att behandla alla recensioner för en viss produkt på vår e-handelswebbplats. Vi skulle vara intresserade av att behandla recensioner som följande om vår stjärnprodukt: den första datorn för barn!

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

I det här fallet vill vi att ChatGPT ska:

  • Klassificera recensionen i positiv eller negativ.
  • Ge en sammanfattning av recensionen på 20 ord.
  • Skriv ut svaret med en konkret struktur för att standardisera alla recensioner i ett enda format.

Implementeringsanmärkningar

Här är den grundläggande kodstrukturen vi kan använda för att fråga ChatGPT från vår anpassade applikation. Jag ger också en länk till en Jupyter Notebook med alla exempel som används i den här artikeln.

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)

Funktionen get_completion() anropar ChatGPT API med en given snabb. Om prompten innehåller ytterligare användartext, såsom själva recensionen i vårt fall, är den skild från resten av koden med tre citattecken.

Låt oss använda get_completion() funktion för att fråga ChatGPT!

Här är en uppmaning som uppfyller kraven som beskrivs ovan:

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 uppmaningsriktlinjer som används i det här exemplet, som att använda avgränsare för att separera inmatningstexten från resten av uppmaningen och be om en strukturerad utdata, förklaras fullständigt på Vad jag lärde mig från OpenAI:s kurs i promptteknik — riktlinjer för uppmaning.

Här är ChatGPT:s svar:

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

Som vi kan observera från resultatet är recensionen korrekt och välstrukturerad det saknas en del information som vi skulle kunna vara intresserade av som ägare av e-handeln, såsom information om leverans av produkten.

Sammanfatta med fokus på

Vi kan iterativt förbättra vår uppmaning genom att be ChatGPT att fokusera på vissa saker i sammanfattningen. I det här fallet är vi intresserade av alla detaljer som ges om frakt och leverans:

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)

Den här gången är ChatGPTs svar följande:

{ "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 är recensionen mycket mer komplett. Att ge detaljer om det viktiga fokuset i den ursprungliga recensionen är avgörande för att undvika att ChatGPT hoppar över viss information som kan vara värdefull för vårt användningsfall.

Har du märkt att även om denna andra test innehåller information om leveransen, hoppade den över den enda negativa aspekten av den ursprungliga recensionen?

Låt oss fixa det!

"Extrahera" istället för "Sammanfatta"

Genom att undersöka sammanfattningsuppgifter fick jag reda på det Sammanfattning kan vara en knepig uppgift för LLM:er om användarprompten inte är tillräckligt exakt.

När du ber ChatGPT att ge en sammanfattning av en given text kan den hoppa över information som kan vara relevant för oss – som vi nyligen har upplevt – eller så kommer det att ge samma betydelse för alla ämnen i texten, bara ge en översikt över huvudpunkterna.

Experter på LLM använder termen extrahera och ytterligare information om deras fokus istället för sammanfatta när man utför sådana uppgifter med hjälp av dessa typer av modeller.

Medan sammanfattningen syftar till att ge en kortfattad översikt över textens huvudpunkter, inklusive ämnen som inte är relaterade till ämnet för fokus, fokuserar informationsutvinning på att hämta specifika detaljer och kan ge oss det vi exakt letar efter. Låt oss försöka då med extraktion!

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)

I det här fallet, genom att använda extraktion, får vi bara information om vårt fokusämne: Shipping: Arrived a day earlier than expected.

Automatisering

Detta system fungerar för en enda recension. Men när man utformar en uppmaning för en konkret ansökan, det är viktigt att testa det i en grupp med exempel så att vi kan fånga eventuella extremvärden eller felaktigt beteende i modellen.

Vid bearbetning av flera recensioner, här är ett exempel på Python-kodstruktur som kan hjälpa.

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

Här är sammanfattningarna av våra recensioner:

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.

⚠️ Observera att även om ordbegränsningen i våra sammanfattningar var tillräckligt tydlig i våra uppmaningar, kan vi lätt se att denna ordbegränsning inte uppnås i någon av iterationerna.

Denna oöverensstämmelse i ordräkningen beror på att LLM:er inte har en exakt förståelse av antalet ord eller tecken. Anledningen till detta beror på en av de viktigaste viktiga komponenterna i deras arkitektur: tokenizern.

Tokenizer

LLM som ChatGPT är designade för att generera text baserat på statistiska mönster som lärts från stora mängder språkdata. Även om de är mycket effektiva på att generera flytande och sammanhängande text, saknar de exakt kontroll över ordantalet.

I exemplen ovan, när vi har gett instruktioner om en mycket exakt ordräkning, ChatGPT kämpade för att uppfylla dessa krav. Istället har den genererat text som faktiskt är kortare än det angivna antalet ord.

I andra fall kan det generera längre texter eller helt enkelt text som är alltför utförlig eller saknar detaljer. Dessutom, ChatGPT kan prioritera andra faktorer som koherens och relevans framför strikt efterlevnad av ordantalet. Det kan resultera i en text som håller hög kvalitet vad gäller innehåll och sammanhållning, men som inte exakt matchar kravet på ordräkning.

Tokenizern är nyckelelementet i ChatGPTs arkitektur som tydligt påverkar antalet ord i den genererade utdata.

Självgjord gif.

Tokenizer-arkitektur

Tokenizern är det första steget i processen för textgenerering. Det är ansvarigt för att bryta ner texten som vi matar in till ChatGPT i enskilda element — tokens — , som sedan bearbetas av språkmodellen för att generera ny text.

När tokenizern bryter ner en textbit till tokens gör den det baserat på en uppsättning regler som är utformade för att identifiera de meningsfulla enheterna i målspråket. Men dessa regler är inte alltid perfekta, och det kan finnas fall där tokenizern delar eller slår samman tokens på ett sätt som påverkar det övergripande ordantalet i texten.

Tänk till exempel på följande mening: "Jag vill äta en jordnötssmörsmacka". Om tokenizern är konfigurerad att dela upp tokens baserat på blanksteg och interpunktion, kan den dela upp denna mening i följande tokens med ett totalt ordantal på 8, lika med token-antalet.

Självgjord bild.

Men om tokenizern är konfigurerad att behandla "jordnötssmör" som ett sammansatt ord kan det dela upp meningen i följande tokens, med ett totalt antal ord på 8, men ett symboliskt antal på 7.

Det sätt som tokenizern är konfigurerad på kan alltså påverka det övergripande antalet ord i texten, och detta kan påverka LLM:s förmåga att följa instruktioner om exakta ordräkningar. Även om vissa tokenizers erbjuder alternativ för att anpassa hur text tokeniseras, är detta inte alltid tillräckligt för att säkerställa att kraven på ordräkningen följs exakt. För ChatGPT i det här fallet kan vi inte kontrollera den här delen av dess arkitektur.

Detta gör att ChatGPT inte är så bra på att åstadkomma tecken- eller ordbegränsningar, men man kan försöka med meningar istället eftersom tokenizern inte påverkar antalet meningar, men deras längd.

Att vara medveten om denna begränsning kan hjälpa dig att skapa den bäst lämpade prompten för din ansökan i åtanke. Med denna kunskap om hur ordräkning fungerar på ChatGPT, låt oss göra en sista iteration med vår uppmaning till e-handelsapplikationen!

Avslutning: E-handelsrecensioner

Låt oss kombinera våra lärdomar från den här artikeln till en sista uppmaning! I det här fallet kommer vi att be om resultaten i HTML format för en snyggare utdata:

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

Och här är slutresultatet från ChatGPT:

Självgjord skärmdump från Jupyter Notebook med de exempel som används i den här artikeln.

Sammanfattning

I den här artikeln, vi har diskuterat de bästa metoderna för att använda ChatGPT som en sammanfattningsagent för vår anpassade applikation.

Vi har sett att när man bygger en applikation är det extremt svårt att komma på den perfekta uppmaningen som matchar dina applikationskrav i den första testperioden. Jag tycker att ett trevligt hemmeddelande är att tänk på uppmaning som en iterativ process där du förfinar och modellerar din prompt tills du får exakt önskad utgång.

Genom att iterativt förfina din prompt och tillämpa den på en grupp exempel innan du distribuerar den i produktionen kan du se till att utgången är konsekvent över flera exempel och täcker avvikande svar. I vårt exempel kan det hända att någon ger en slumpmässig text istället för en recension. Vi kan instruera ChatGPT att även ha en standardiserad utdata för att utesluta dessa extrema svar.

Dessutom, när du använder ChatGPT för en specifik uppgift, är det också en bra praxis att lära dig om för- och nackdelarna med att använda LLM för vår måluppgift. Det var så vi kom över det faktum att extraktionsuppgifter är effektivare än summering när vi vill ha en gemensam människoliknande sammanfattning av en ingångstext. Vi har också lärt oss att fokus på sammanfattningen kan vara en spel-växlare angående det genererade innehållet.

Slutligen, även om LLM:er kan vara mycket effektiva när det gäller att generera text, de är inte idealiska för att följa exakta instruktioner om antal ord eller andra specifika formateringskrav. För att uppnå dessa mål kan det vara nödvändigt att hålla sig till meningsräkning eller använda andra verktyg eller metoder, såsom manuell redigering eller mer specialiserad programvara.

Den här artikeln publicerades ursprungligen den Mot datavetenskap och publiceras på nytt till TOPBOTS med tillstånd från författaren.

Tycker du om den här artikeln? Registrera dig för fler AI-forskningsuppdateringar.

Vi meddelar dig när vi släpper fler sammanfattande artiklar som den här.

Tidsstämpel:

Mer från TOPPBOTS