Share via


Inleiding tot prompt-engineering

De modellen GPT-3, GPT-3.5 en GPT-4 van OpenAI zijn gebaseerd op prompts. Met modellen op basis van prompts communiceert de gebruiker met het model door een tekstprompt in te voeren, waarop het model reageert met een tekstvoltooiing. Deze voltooiing is hoe het model de invoertekst aanvult.

Hoewel deze modellen zeer krachtig zijn, is hun gedrag ook zeer gevoelig voor de prompt. Een belangrijke vaardigheid om te ontwikkelen is dan ook het maken van prompts.

Prompt constructie kan moeilijk zijn. In de praktijk handelt de prompt om de gewichten van het model te configureren om de gewenste taak te voltooien, maar het is meer van een kunst dan een wetenschap, die vaak ervaring en intuïtiefheid vereist om een succesvolle prompt te maken. Het doel van dit artikel is om u te helpen aan de slag te gaan met dit leerproces. Het probeert algemene concepten en patronen vast te leggen die van toepassing zijn op alle GPT-modellen. Het is echter belangrijk om te begrijpen dat elk model zich anders gedraagt, dus de lessen zijn mogelijk niet evenzeer van toepassing op alle modellen.

Basisprincipes

In deze sectie worden de basisconcepten en elementen van GPT-prompts behandeld.

Tekstprompts zijn hoe gebruikers communiceren met GPT-modellen. Net als bij alle generatieve taalmodellen proberen GPT-modellen de volgende reeks woorden te produceren die waarschijnlijk zullen volgen uit de vorige tekst. Het is alsof we zeggen Wat is het eerste wat in je gedachten komt als ik zeg<prompt>? In de onderstaande voorbeelden ziet u dit gedrag. Gezien de eerste woorden van beroemde inhoud, kan het model de tekst nauwkeurig voortzetten.

Prompt Voltooiing
Vier punten en zeven jaar geleden onze vaders op dit continent, een nieuwe natie, bedacht in Vrijheid, en gewijd aan de propositie dat alle mannen gelijk worden geschapen. [...]
"Noem me Ishmael." "Een paar jaar geleden— vind ik het niet erg hoe lang ik weinig geld in mijn tas heb, en niets bijzonders om me aan de kust te interesseren, dacht ik dat ik een beetje zou varen en het waterige deel van de wereld zou zien." [...]

Wanneer u complexere prompts ontwikkelt, is het handig om rekening te houden met dit fundamentele gedrag. Ongeacht de prompt die wordt gegeven, reageert het model gewoon met wat het waarschijnlijkst bepaalt (gezien de trainingsgegevens en trainingsdoelen). Als u een vraag in uw prompt stelt, volgt het model geen afzonderlijk Q&A-codepad, maar lijkt het erop dat deze de vraag beantwoordt omdat een antwoord het meest waarschijnlijke antwoord is voor de gegeven vraag als invoer.

Promptonderdelen

Wanneer u de voltooiings-API gebruikt terwijl er geen onderscheid is tussen verschillende onderdelen van de prompt, kan het nog steeds nuttig zijn voor leren en bespreken om onderliggende promptonderdelen te identificeren. Met de CHAT-voltooiings-API zijn er verschillende secties van de prompt die naar de API worden verzonden in de vorm van een matrix met woordenlijsten met gekoppelde rollen: systeem, gebruiker en assistent. Deze richtlijnen richten zich meer in het algemeen op het bedenken van promptconstructie in plaats van prescriptieve richtlijnen te bieden die specifiek zijn voor de ene API via een andere.

Het is ook belangrijk om te begrijpen dat hoewel er andere geldige manieren zijn om prompts te ontleden, het doel van deze uitsplitsing is om een relatief eenvoudige manier te bieden om na te denken over promptconstructie. Met de voltooiings-API zijn alle onderdelen optioneel, maar ten minste één moet aanwezig zijn en de meeste prompts bevatten meer dan één onderdeel. Er kan ook een grijs gebied tussen onderdelen zijn. De onderstaande volgorde komt ongeveer overeen met hoe vaak elk onderdeel wordt gebruikt, van de meeste tot de minste.

Instructies

Instructies zijn waarschijnlijk het meest gebruikte promptonderdeel. Instructies zijn gewoon dat: instructies voor het model over wat u moet doen. Hoewel eenvoudig in concept, kunnen ze in de praktijk complex zijn. De volgende tabel illustreert dit door zowel eenvoudige als complexere instructies weer te geven, in twee verschillende vormen.

Instructietype Prompt Voltooiing
Eenvoudige instructies Schrijf een inleiding voor een wekelijkse nieuwsbrief. Welkom bij onze wekelijkse nieuwsbrief. Deze week hebben we een speciale focus op productiviteit. We delen tips en trucs om productief te zijn op alle gebieden van uw leven. We hopen dat je geniet en deel met je vrienden!
Complexe instructies Schrijf een inleiding voor een wekelijkse nieuwsbrief naar mijn bedrijf met de naam Contoso. Het zou de geweldige vergadering van alle handen moeten vermelden die we vorige week hebben gehad en het team bedanken voor al hun harde werk in de afgelopen maanden. Welkom bij de wekelijkse nieuwsbrief van Contoso! We hadden vorige week een geweldige vergadering met alle handen en ik wil het team bedanken voor al hun harde werk in de afgelopen maanden. We kijken uit naar een heldere toekomst en ik ben ervan overtuigd dat we met de toewijding en inzet van ons team geweldige dingen zullen bereiken. Bedankt dat u deel uitmaakt van ons team en ik kijk ernaar uit om in de komende weken en maanden met u samen te werken. Met vriendelijke groet, [Uw naam].
Complexe instructies Schrijf een inleiding voor een wekelijkse nieuwsbrief, waaronder de volgende:
- Mijn bedrijf heeft de naam contoso
- Een uitbundig begroeting
- Het team bedanken voor hun harde werk gedurende een paar moeilijke maanden
- Positieve vooruitzichten voor het komende kwartaal
- Ondertekend door de SLT
Hallo Contoso-team! Ik wilde u bedanken voor al uw harde werk in de afgelopen maanden. Het is een moeilijke paar maanden geweest, maar jullie hebben allemaal een geweldige klus gedaan. Ik ben echt trots op jullie allemaal. Vooruitkijkend naar het volgende kwartaal, voel ik me echt positief. Ik denk dat we een aantal geweldige dingen gaan bereiken. Nogmaals bedankt, het senior leiderschapsteam.

Primaire inhoud

Primaire inhoud verwijst naar een soort tekst die wordt verwerkt of getransformeerd door het model. Primaire inhoud wordt meestal gebruikt in combinatie met instructies. Een eenvoudig voorbeeld is taalomzetting. In het onderstaande voorbeeld wordt de Engelse tekst beschouwd als de primaire inhoud terwijl 'Vertalen naar Frans:' een instructie is.

Prompt Voltooiing
Kun je me alsjeblieft vertellen hoe je naar het museum gaat?
Vertalen naar het Frans:
Pouvez-vous s'il vous plaît me dire comment aller au musée?

Primaire inhoud kan ook veel langer zijn. In het volgende voorbeeld is de primaire inhoud de introductiesectie van de Wikipedia-vermelding over tijdcomplexiteit, die bijna 300 woorden lang is. Deze inhoud is afgekort in onze tabel voor het gemak van de weergave.

Prompt Voltooiing
In computerwetenschap is de tijdcomplexiteit de rekenkundige complexiteit die de hoeveelheid computertijd beschrijft die nodig is om een algoritme uit te voeren. Tijdcomplexiteit wordt vaak geschat door [...]
De vorige tekst in een paar zinnen samenvatten:
Tijdcomplexiteit is een meting van hoe lang het duurt voordat een algoritme wordt uitgevoerd. Deze wordt meestal uitgedrukt als een functie van de grootte van de invoer. De meest voorkomende meting is slechtste tijdcomplexiteit, wat de maximale tijdsduur is die nodig is voor invoer van een bepaalde grootte.
In computerwetenschap is de tijdcomplexiteit de rekenkundige complexiteit die de hoeveelheid computertijd beschrijft die nodig is om een algoritme uit te voeren. Tijdcomplexiteit wordt vaak geschat door [...]
TL;DR (Te lang niet gelezen)
De tijdcomplexiteit van een algoritme is de hoeveelheid tijd die nodig is om een algoritme uit te voeren. Tijdcomplexiteit wordt meestal geschat door het aantal elementaire bewerkingen te tellen dat door het algoritme wordt uitgevoerd, waarbij wordt aangenomen dat elke elementaire bewerking een vaste hoeveelheid tijd kost om uit te voeren. De tijdcomplexiteit wordt over het algemeen uitgedrukt als een functie van de grootte van de invoer.

GPT-modellen kunnen ook primaire inhoud verwerken die is gestructureerd. In het onderstaande voorbeeld wordt een TSV over bieren in België (afgekort voor weergave in dit artikel) doorgegeven aan het model als onderdeel van de prompt. Het is in staat om de inhoud goed te interpreteren en vragen over de gegevens te beantwoorden.

Prompt Voltooiing
Belgian Beer Brands
Beer name Beer style color ABV Brewery
"Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist)
"Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00%
[...]
Naar de bovenstaande tabel verwijst, hoeveel bieren zijn er minder dan 6% ABV?
Er zijn 10 bieren in de tafel die minder dan 6% ABV zijn.

Voorbeelden

Geslaagde prompts zijn vaak afhankelijk van de praktijk van 'één shot' of 'weinig-shot' leren. Dit verwijst naar het opnemen van een of meer voorbeelden van het gewenste gedrag van het model, meestal door invoer- en uitvoerparen op te nemen. Dit leert niet in de zin dat het model permanent wordt gewijzigd, maar dat de voorbeelden beter in staat zijn om naar wens te reageren op alleen de huidige deductie. Het gebruik van prompts zonder voorbeelden wordt soms 'zero-shot' learning genoemd. Houd er rekening mee dat met de chatvoltooiings-API enkele shot learning-voorbeelden worden toegevoegd aan de berichtenmatrix in de vorm van voorbeeldinteracties van gebruikers/assistenten na het eerste systeembericht.

Leertype Prompt Voltooiing
Zero-shot Kop: Coach vertrouwend letsel zal Warriors niet ontsporen
Onderwerp:
De coach is ervan overtuigd dat de blessure het seizoen van De Warriors niet zal ontsporen. Het team is nog steeds gericht op hun doelen en dat ze blijven werken om ze te bereiken.
Paar foto's Kop: Twins Correa voor gebruik van opt-out, test gratis bureau
Onderwerp: Honkbal
Kop: Qatar World Cup heeft zones voor nuchtering
Onderwerp: Voetbal
Kop: Yates: Fantasy football intel for Week 6
Onderwerp: Voetbal
Kop: Coach vertrouwend letsel zal Warriors niet ontsporen
Onderwerp:
Basketbal

In het bovenstaande voorbeeld ziet u het nut van weinig-shot learning. Zonder de voorbeelden lijkt het model te raden naar het gewenste gedrag, terwijl de voorbeelden het model op een schone manier laten zien hoe het werkt. Dit toont ook de kracht van het model, het kan de categorie label afleiden die is gewenst, zelfs zonder een "basketbal" label in de voorbeelden.

Cue

Aanwijzingen fungeren als de 'jumpstart' voor de uitvoer van het model en helpen het model om te leiden naar de gewenste uitvoer. Het is vaak een voorvoegsel waarop het model kan bouwen. In het onderstaande voorbeeld laten we de aanwijzingen zien die het verhaal omleiden om belangrijke elementen op te nemen. Aanwijzingen worden vaak samen met instructies gebruikt, maar niet altijd. In de onderstaande voorbeelden wordt het model gebruikt om een lang aankondigingsbericht samen te vatten. Een aanwijzing wordt in één geval gebruikt om de uitvoer van het model te concentreren en om een specifieke uitvoerindeling (opsommingstekens) in het andere voor te stellen.

In de context van de api-instructies voor chatvoltooiing krijgen de vorm van het systeembericht en enkele voorbeelden worden aangegeven door een reeks voorbeeldinteracties van gebruikers/assistenten te bieden om het model te helpen primen.

Aantal aanwijzingen Prompt Voltooiing
0 Prestatiebeoordelingen zijn een belangrijk onderdeel van onze Performance & Development-benadering bij Contoso. [...]
Het bovenstaande e-mailbericht samenvatten:
Het doel van deze e-mail is om werknemers te informeren over recente wijzigingen in de prestatiebeoordelingservaring, die deel uitmaakt van de benadering Performance & Development van Contoso. De wijzigingen omvatten een verbeterde structuur, bijgewerkte gebruikerservaring in het hulpprogramma en gerichte prompts. Daarnaast is er nu een optionele sectie Gespreksstarters voor werknemers om onderwerpen te markeren die ze willen bespreken met hun managers.
1 Prestatiebeoordelingen zijn een belangrijk onderdeel van onze Performance & Development-benadering bij Contoso. [...]
Het bovenstaande e-mailbericht samenvatten:
Het belangrijkste leerpunt van het bericht is
dat Contoso de ervaring voor prestatiebeoordeling verbetert door deze meer gericht te maken op de kernprioriteiten, verwachtingen en impact. Daarnaast upgraden ze de gebruikerservaring in het hulpprogramma met tips, resources en richtlijnen. Ten slotte voegen ze richtlijnen toe voor het activeren van bedrijfsbrede kernprioriteiten.
2 Prestatiebeoordelingen zijn een belangrijk onderdeel van onze Performance & Development-benadering bij Contoso. [...]
Het bovenstaande e-mailbericht samenvatten:
Belangrijkste punten:
Contoso introduceert wijzigingen in de ervaring voor het beoordelen van prestaties, op basis van feedback van werknemers.
• De wijzigingen omvatten een nieuwe focus op kernprioriteiten, verwachtingen en impact; een bijgewerkte gebruikerservaring; en nieuwe richtlijnen voor bedrijfsbrede kernprioriteiten.
• Prestatiebeoordelingen zijn een tijd om na te denken over eerdere prestaties en leren en om toekomstige prioriteiten en groeikansen te plannen.
• Werknemers en managers moeten opmerkingen schrijven voorafgaand aan de vergadering van de prestatiebeoordeling.
• Er moeten ten minste twee prestatiebeoordelingen per jaar zijn.
• De tijdsinvestering voor elke beoordeling moet ongeveer hetzelfde blijven.

Ondersteunende inhoud

Ondersteunende inhoud is informatie die het model kan gebruiken om de uitvoer op een of andere manier te beïnvloeden. Het verschilt van primaire inhoud omdat het niet het belangrijkste doel van de taak is, maar het wordt meestal samen met primaire inhoud gebruikt. Veelvoorkomende voorbeelden zijn contextuele informatie, zoals de huidige datum, de naam van de gebruiker, gebruikersvoorkeuren, enzovoort. In het onderstaande voorbeeld wordt ondersteunende inhoud gebruikt om een reeks geplande workshops voor de gebruiker te organiseren. Zonder de ondersteunende (belangrijke onderwerpen) vermeldt het model gewoon de workshops (afgekapt voor weergave), wanneer het model op de hoogte is van mijn belangrijke onderwerpen, kan het model de vergaderingen nauwkeurig groeperen.

Ondersteunende inhoud Prompt Voltooiing
Zonder Workshoplijst:
Titelbeschrijving
Planning Workshop Kickoff Neem deel aan ons om onze workshop te starten! Hoor van onze leiders over prioriteiten voor groepen en leertrajecten voor het komende jaar. De uitnodiging voor deze gebeurtenis is al verzonden naar iedereen in [...]
Samenvatten van de bovenstaande workshops, gegroepeerd op onderwerp:
Workshoplijst:
Introductie van planningsworkshop
-Planning Workshop Wrap-up
- Core MeetUp
- Klantgestuurde perspectieven
-Impact en belangrijkste aandachtsgebieden
-Aanbevolen procedures
-App-acceptatie versnellen [...]
With Workshoplijst:
Titelbeschrijving
Planning Workshop Kickoff Neem deel aan ons om onze workshop te starten! Hoor van onze leiders over prioriteiten voor groepen en leertrajecten voor het komende jaar. De uitnodiging voor deze gebeurtenis is al verzonden naar iedereen in [...]
Mijn belangrijke onderwerpen: prompt engineering, zoeken, GPT-modellen
Samenvatten van de bovenstaande workshops, gegroepeerd op mijn belangrijke onderwerpen:
1. Prompt Engineering:
- Nieuwe prompt technische tips
- De kunst van prompt engineering
2. Zoeken:
-Inleiding tot vectorzoekopdrachten met insluiting
3. GPT-modellen:
- Inleiding tot GPT-4
- GPT-35-Turbo uitgebreid.

Aanbevolen procedures

  • Wees specifiek. Laat zo min mogelijk over aan interpretatie. Beperk de operationele ruimte.
  • Wees beschrijvend. Gebruik analogieën.
  • Dubbel omlaag. Soms moet u zich misschien herhalen bij het model. Geef instructies voor en na de primaire inhoud, gebruik een instructie en een aanwijzing, enzovoort.
  • Order Matters. De volgorde waarin u informatie aan het model presenteert, kan van invloed zijn op de uitvoer. Of u nu instructies plaatst voor uw inhoud ('het volgende samenvatten...') of na ('summarize the above...') kan een verschil maken in de uitvoer. Zelfs de volgorde van voorbeelden kan van belang zijn. Dit wordt recency bias genoemd.
  • Geef het model een 'out'. Het kan soms handig zijn om het model een alternatief pad te geven als de toegewezen taak niet kan worden voltooid. Als u bijvoorbeeld een vraag stelt over een stuk tekst, kunt u bijvoorbeeld 'reageren met 'niet gevonden' opnemen als het antwoord niet aanwezig is. Dit kan helpen het model te voorkomen dat er valse antwoorden worden gegenereerd.

Ruimte-efficiëntie

Hoewel de invoergrootte toeneemt met elke nieuwe generatie GPT-modellen, blijven er scenario's bestaan die meer gegevens bieden dan het model aankan. GPT-modellen splitsen woorden in 'tokens'. Hoewel veelgebruikte woorden met meerdere lettergrepen vaak één token zijn, worden minder algemene woorden in lettergrepen verbroken. Tokens kunnen soms contra-intuïtief zijn, zoals wordt weergegeven in het onderstaande voorbeeld waarin tokengrenzen voor verschillende datumnotaties worden gedemonstreerd. In dit geval is de spelling van de hele maand efficiënter dan een volledig numerieke datum. Het huidige bereik van tokenondersteuning gaat van 2000 tokens met eerdere GPT-3-modellen tot maximaal 32.768 tokens met de 32k-versie van het nieuwste GPT-4-model.

Schermopname van een tekenreeks met gemarkeerde kleuren die tokengrenzen aangeven.

Gezien deze beperkte ruimte is het belangrijk om deze zo efficiënt mogelijk te gebruiken.

  • Tabellen: zoals wordt weergegeven in de voorbeelden in de vorige sectie, kunnen GPT-modellen eenvoudig gegevens in tabelvorm begrijpen. Dit kan een efficiënte manier zijn om gegevens op te nemen in plaats van elk veld met een naam (zoals met JSON) te voorafgaan.
  • Witruimte : opeenvolgende witruimten worden behandeld als afzonderlijke tokens die een eenvoudige manier kunnen zijn om ruimte te verspillen. Spaties voorafgaand aan een woord worden meestal behandeld als onderdeel van hetzelfde token als het woord. Let zorgvuldig op uw gebruik van witruimte en gebruik geen interpunctie wanneer een spatie alleen wordt uitgevoerd.

Volgende stappen

Meer informatie over Azure OpenAI.