Prompt engineering-technieken
GPT-3-, GPT-3.5-, GPT-4- en GPT-4o-modellen 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.
Keu
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. |
Scenariospecifieke richtlijnen
Hoewel de principes van prompt-engineering kunnen worden gegeneraliseerd voor veel verschillende modeltypen, verwachten bepaalde modellen een gespecialiseerde promptstructuur. Voor AZURE OpenAI GPT-modellen zijn er momenteel twee verschillende API's waar prompt-engineering aan de orde komt:
- Api voor voltooiing van chat.
- Voltooiings-API.
Voor elke API moeten invoergegevens anders worden opgemaakt, wat op zijn beurt van invloed is op het algehele promptontwerp. De CHAT-voltooiings-API ondersteunt de GPT-35-Turbo- en GPT-4-modellen. Deze modellen zijn ontworpen voor invoer die is opgemaakt in een specifieke chatachtige transcriptie die is opgeslagen in een matrix met woordenlijsten.
De Voltooiings-API ondersteunt de oudere GPT-3-modellen en heeft veel flexibelere invoervereisten omdat er een tekenreeks met tekst zonder specifieke notatieregels nodig is.
Met de technieken in deze sectie leert u strategieën voor het verhogen van de nauwkeurigheid en aarding van reacties die u genereert met een Large Language Model (LLM). Het is echter belangrijk om te onthouden dat zelfs wanneer u prompt engineering effectief gebruikt, u nog steeds de antwoorden moet valideren die de modellen genereren. Omdat een zorgvuldig ontworpen prompt goed werkte voor een bepaald scenario, betekent dit niet noodzakelijkerwijs dat het algemener wordt voor bepaalde gebruiksscenario's. Het begrijpen van de beperkingen van LLM's is net zo belangrijk als het begrijpen van hun sterke punten.
Deze handleiding gaat niet dieper in op de mechanica achter de berichtstructuur voor chatvoltooiingen. Als u niet bekend bent met interactie met modellen voor chatvoltooiingen via een programma, raden we u aan eerst onze instructiegids te lezen over de CHAT-voltooiings-API.
Notitie
Alle voorbeelden in deze sectie van de handleiding zijn getest op basis van een GPT-4-basismodel in het Engels. Als u een gelokaliseerde versie van dit artikel leest in een andere taal, vertegenwoordigen deze antwoorden een gelokaliseerde vertaling van de Engelse resultaten. Voor meer informatie over mogelijke beperkingen, afhankelijk van de taal die u gebruikt om een model te vragen, raadpleegt u onze verantwoordelijke AI-transparantienotitie.
Weinig-shot learning
Een veelgebruikte manier om taalmodellen aan te passen aan nieuwe taken is het gebruik van weinig-shot learning. Bij weinig-shot learning wordt een reeks trainingsvoorbeelden gegeven als onderdeel van de prompt om extra context aan het model te geven.
Wanneer u de API voor chatvoltooiingen gebruikt, kan een reeks berichten tussen de gebruiker en assistent (geschreven in de nieuwe promptindeling) fungeren als voorbeelden voor weinig-shot learning. Deze voorbeelden kunnen worden gebruikt om het model op een bepaalde manier te laten reageren, bepaalde gedragingen te emuleren en antwoorden op veelgestelde vragen te zaaien.
Systeembericht | Paar-shot-voorbeelden |
---|---|
Assistent is een intelligente chatbot die is ontworpen om gebruikers te helpen hun belastinggerelateerde vragen te beantwoorden. Aanwijzingen - Beantwoord alleen vragen met betrekking tot belastingen. - Als u niet zeker bent van een antwoord, kunt u zeggen 'Ik weet het niet' of 'Ik weet het niet zeker' en raad gebruikers aan om naar de IRS-website te gaan voor meer informatie. |
Gebruiker : 'Wanneer moet ik mijn belastingen indienen?' Assistent : "In 2023 moet u uw belastingen indienen op 18 april. De datum valt na de gebruikelijke deadline van 15 april omdat 15 april valt op een zaterdag in 2023. Zie voor meer informatie https://www.irs.gov/filing/individuals/when-to-file " Gebruiker : "Hoe kan ik de status van mijn belastingrestitutie controleren?" Assistent - "U kunt de status van uw belastingrestitutie controleren door naar https://www.irs.gov/refunds " |
In de bovenstaande tabel wordt de structuur van de basisprompt beschreven, maar voor een gedetailleerde uitleg van de exacte promptindeling moet u verwijzen naar de handleiding chatvoltooiing.
Niet-chatscenario's
Hoewel de API voor chatvoltooiing is geoptimaliseerd voor gebruik met gesprekken met meerdere paden, kan deze ook worden gebruikt voor niet-chatscenario's. Voor een sentimentanalysescenario kunt u bijvoorbeeld de volgende prompt gebruiken:
Systeembericht | User | Assistent |
---|---|---|
U bent een assistent die is ontworpen om het gevoel van spraakgegevens te analyseren. Gebruikers plakken een tekenreeks met tekst en u reageert met een evaluatie van het antwoord van de spreker. Rente op een schaal van 1-10 (10 hoogste). Leg uit waarom deze classificatie is gegeven. | Hallo bedankt voor het bellen van contoso apotheek die ik spreek vandaag ik begrijp je frustratie mary um kan je me vertellen wat je precies probeert te bereiken OK uh zeker blij om te controleren dat voor je een moment alsjeblieft ik zie hier dat je op een algemene vorm van lipitor was dat goed ok uh, dus ik zie dat uw arts stopte met het schrijven van deze medicijnen in twintigentwintig eigenlijk OK uh Ja, ik zou blij zijn om te controleren of er voor jou een hiaat is omdat er soms een hiaat in het systeem is en het wordt gewoon niet gemeld, dus laat me even even kijken, dus ik zie hier dat uw arts deze geneesmiddelen voor u had voorgeschreven van twintig tot 22 1 OKum ja volgens de laatste records van dokterskantoor u nu op een ander medicijn metformine zou hebben Je vindt ons leuk om dat recept voor je op te halen voor het ophalen van een beetje vorm in vijfhonderd mg u bent zeer welkom mary laat ons weten als er iets anders is wat we vandaag voor u kunnen doen. | Gevoelsclassificatie: 8 De spreker in deze tekst lijkt beleefd, behulpzaam en geduldig te zijn tijdens het aanpakken van de zorgen van de klant. Ze nemen de tijd om de informatie te controleren, duidelijke uitleg te geven en hulp te bieden. De waardering is echter geen 10, omdat er nog steeds een hint is van onzekerheid in sommige delen van het gesprek, waardoor de klant mogelijk niet volledig vertrouwen heeft. |
Begin met duidelijke instructies
De volgordegegevens worden weergegeven in de prompt. Dit komt doordat GPT-stijlmodellen op een bepaalde manier zijn gebouwd die bepalen hoe ze de invoer verwerken. Ons onderzoek stelt voor dat het model aan het begin van de prompt aangeeft dat het model aan het begin van de prompt moet worden uitgevoerd, voordat u aanvullende contextuele informatie of voorbeelden deelt, kan helpen bij het produceren van uitvoer van hogere kwaliteit.
Notitie
Hoewel het volgen van deze techniek nog steeds algemeen wordt aanbevolen, in tegenstelling tot eerdere modelversies (GPT-3 en eerdere), bleek uit onze tests dat het modelantwoord met ChatGPT- en GPT-4-modellen hetzelfde was, ongeacht of de techniek wordt gebruikt. In het onderstaande voorbeeld zien we dat het toevoegen van de instructie 'Verschillende bronnen ... uitbarsting" aan het begin of einde van de prompt heeft geen verandering veroorzaakt in de uiteindelijke modelreactie.
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden. | Uw taak is om te controleren of de instructie 'Meerdere bronnen een kans op een andere grote uitbarsting vermelden' wordt ondersteund door een specifiek citaat uit de volgende set fragmenten. --- FRAGMENTEN [1] 14 procent kans op megaquake hitting Seattle, experts zeggen SEATTLE - Er is een kans van 14 procent op een aardbeving van 9 Cascadia die Seattle de komende 50 jaar bereikt, de schattingen van de Amerikaanse geologisch onderzoek. "Helaas kunnen we niet... [2] Aardbevingsexperts leggen de nieuwste outlook uit voor 'Really Big One' van Seattle "We zeggen dat er ongeveer 14% kans is op een andere ongeveer grootte-9 aardbeving die de komende 50 jaar optreedt", zei een geofysicus aan de Universiteit van Washington... --- Is de verklaring "Verschillende bronnen noemen een kans op een andere grote uitbarsting" rechtstreeks impliciet of vermeld door de fragmenten? |
Nee, de instructie wordt niet rechtstreeks geïmpliceerd of vermeld door de fragmenten. De fragmenten noemen een kans op een "megaquake" en een "magnitude 9 Cascadia aardbeving" die Seattle in de komende 50 jaar bereikt, maar noem geen kans op een andere grote uitbarsting. |
Herhaal de instructies aan het einde
Modellen kunnen vatbaar zijn voor recency bias, wat in deze context betekent dat informatie aan het einde van de prompt mogelijk meer invloed heeft op de uitvoer dan informatie aan het begin van de prompt. Daarom is het de moeite waard om te experimenteren met het herhalen van de instructies aan het einde van de prompt en het evalueren van de impact op het gegenereerde antwoord.
De uitvoer primen
Dit verwijst naar het opnemen van enkele woorden of woordgroepen aan het einde van de prompt om een modelantwoord te verkrijgen dat volgt op het gewenste formulier. Als u bijvoorbeeld een aanwijzing gebruikt, bijvoorbeeld “Here’s a bulleted list of key points:\n- ”
om ervoor te zorgen dat de uitvoer is opgemaakt als een lijst met opsommingstekens.
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden. Beantwoord zo weinig mogelijk woorden. | John Smith is getrouwd met Lucy Smith. Ze hebben vijf kinderen en hij werkt als software-engineer bij Microsoft. Welke zoekquery's moet ik doen om dit te controleren? ## Een mogelijke zoekquery is: | "John Smith trouwde met Lucy Smith vijf kinderen software engineer Microsoft" |
In de bovenstaande prompt is de tekst Een mogelijke zoekquery: het model maakt een eerste uitvoer. Zonder deze aanwijzing produceert het model verschillende zoekquery's als uitvoer.
Duidelijke syntaxis toevoegen
Door duidelijke syntaxis te gebruiken voor uw prompt, inclusief leestekens, koppen en sectiemarkeringen, kunt u de intentie communiceren en worden uitvoer vaak gemakkelijker te parseren.
In het onderstaande voorbeeld zijn scheidingstekens (---
in dit geval) toegevoegd tussen verschillende informatiebronnen of stappen. Hierdoor kan het gebruik van ---
als stopvoorwaarde voor het genereren worden gebruikt. Daarnaast worden sectiekoppen of speciale variabelen in hoofdletters weergegeven om deze te onderscheiden.
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden. | U leest een alinea en geeft vervolgens query's uit aan een zoekmachine om deze te controleren. Leg ook de query's uit. --- ALINEA John Smith is getrouwd met Lucy Smith. Ze hebben vijf kinderen en hij werkt als software-engineer bij Microsoft. Welke zoekquery's moet ik doen om dit te controleren? --- QUERY'S |
1. "John Smith Microsoft": om te controleren of John Smith inderdaad bij Microsoft werkt. 2. "John Smith Lucy Smith" - Om te controleren of John Smith getrouwd is met Lucy Smith. 3. "John Smith kinderen" - Om te controleren of John Smith vijf kinderen heeft. |
Als u niet zeker weet welke syntaxis u moet gebruiken, kunt u Markdown of XML gebruiken. De modellen zijn getraind op een grote hoeveelheid webinhoud in XML en Markdown, wat betere resultaten kan opleveren.
De taak opsplitsen
Grote taalmodellen (LLM's) presteren vaak beter als de taak wordt opgesplitst in kleinere stappen. In de queryprompt waarnaar eerder wordt verwezen, kan de prompt bijvoorbeeld worden geherstructureerd, zodat het model eerst wordt geïnstrueerd om relevante feiten te extraheren en vervolgens wordt geïnstrueerd om zoekquery's te genereren die kunnen worden gebruikt om deze feiten te verifiëren.
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden. | U leest een alinea en geeft vervolgens query's uit aan een zoekmachine om deze te controleren. --- ALINEA John Smith is getrouwd met Lucy Smith. Ze hebben vijf kinderen en hij werkt als software-engineer bij Microsoft. Welke zoekquery's moet ik doen om dit te controleren? --- Nu extraheert u feitelijke claims en geeft u query's uit om ze te controleren. Wanneer u een query uitgeeft, gebruikt u de functie SEARCH("query") FEITELIJKE CLAIMS |
1. John Smith is getrouwd met Lucy Smith 2. Ze hebben vijf kinderen 3. Hij werkt als software-engineer bij Microsoft QUERY'S SEARCH("John Smith trouwde met Lucy Smith") SEARCH("John Smith family size") SEARCH("John Smith Microsoft-software engineer") |
Let op het gebruik van duidelijke syntaxis om de secties te onderscheiden en de uitvoer te primen. In dit eenvoudige voorbeeld is het opsplitsen van de taak van één tot twee stappen niet erg dramatisch, maar wanneer u dit probeert te doen voor een groter stuk tekst met veel feitelijke claims, kan het opsplitsen van de taak een aanzienlijk verschil maken.
Gebruik van betaalbaarheid
Soms kunnen we het model krijgen om een betaalbaarheid te gebruiken in plaats van te vertrouwen op zijn eigen parameters voor informatie en antwoorden. Zoeken kan bijvoorbeeld een betaalbaarheid zijn om te helpen beperken tegen ge fabriceerde antwoorden en om up-to-date informatie te krijgen.
Een eenvoudige manier om een betaalbaarheid te gebruiken, is door de generatie te stoppen zodra de betaalbaarheidsaanroepen door het model worden gegenereerd en de resultaten vervolgens weer in de prompt te plakken. Hieronder ziet u een voorbeeld van wat de opvolgingsoproep kan zijn na het uitvoeren van de bovenstaande ZOEK-aanroepen . U ziet hoe we de zoekresultaten in de prompt hebben geplakt en de vorige SEARCH-aanroepen hebben vervangen.
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden. | U leest een alinea, extraheert feitelijke claims en gebruikt vervolgens zoekresultaten om ze te controleren --- ALINEA John Smith is getrouwd met Lucy Smith. Ze hebben vijf kinderen en hij werkt als software-engineer bij Microsoft. Welke zoekquery's moet ik doen om dit te controleren? --- FEITELIJKE CLAIMS - John Smith is getrouwd met Lucy Smith - John en Lucy hebben vijf kinderen - John werkt als software-engineer bij Microsoft --- Hier volgen verschillende zoekquery's die zijn uitgegeven om de bovenstaande claims te onderzoeken: ZOEKQUERY'S - John Smith gehuwd met Lucy Smith - John Smith aantal kinderen - John Smith-software-engineer Microsoft --- Dit zijn fragmenten van de zoekresultaten: FRAGMENTEN: [1] De bruiloft van John Smith was op 25 september 2012 ... [2] John Smith werd vergezeld door zijn vrouw Lucy aan een feestje [3] John werd vergezeld van het voetbalspel door zijn twee dochters en drie zonen [4] Na 10 jaar bij Microsoft, richtte Smith zijn eigen startup op, Tailspin Toys John M is de stad smith en hij trouwde met Fiona. Ze hebben een dochter genaamd Lucy --- Op basis van de codefragmenten controleert u elk van de bovenstaande feitelijke claims: |
- John Smith is getrouwd met Lucy Smith: Bevestigd. Fragment [1] en [2] vermelden allebei John Smiths vrouw als Lucy. - John en Lucy hebben vijf kinderen: Bevestigd. Fragment [3] vermeldt dat John vergezeld was van zijn twee dochters en drie zonen. - John werkt als software-engineer bij Microsoft: Gedeeltelijk bevestigd. Fragment [4] vermeldt dat John 10 jaar bij Microsoft heeft doorgebracht, maar niet expliciet vermeldt dat hij daar momenteel werkt. Verder onderzoek kan nodig zijn om zijn huidige arbeidsstatus te bevestigen. |
Keten van gedachteprompt
Dit is een variatie op de techniek voor het opsplitsen van de taak. In plaats van een taak op te splitsen in kleinere stappen, wordt in deze benadering het modelantwoord stapsgewijs uitgelegd en worden alle betrokken stappen weergegeven. Dit vermindert de kans op onnauwkeurigheid van resultaten en maakt het beoordelen van de modelrespons eenvoudiger.
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden. | Wie was de meest versierde (maximum medailles) individuele atleet in de Olympische spelen die werden gehouden in Sydney? Neem een stapsgewijze benadering in uw antwoord, citeer bronnen en geef redenering voordat u het laatste antwoord deelt in de onderstaande indeling: ANSWER is: <name> |
Stap 1: Bepaal het jaar van de Olympische Spelen van Sydney. De Olympische Spelen van Sydney werden gehouden in het jaar 2000. Stap 2: Zoek een lijst met individuele atleten die meerdere medailles hebben gewonnen op de Olympische Spelen van Sydney 2000. Volgens de officiële website van de Olympische Spelen waren er verschillende individuele atleten die meerdere medailles wonn op de Olympische Spelen van Sydney in 2000. Enkele van de belangrijke namen zijn: • Ian Thorpe (Australië) - 3 goud, 2 zilver, 0 brons • Pieter van den Hoogenband (Nederland) - 2 goud, 0 zilver, 2 brons • Encryption Krayzelburg (VS) - 3 goud, 0 zilver, 0 brons • Inge de Bruijn (Nederland) - 3 goud, 1 zilver, 0 brons Stap 3: Bepaal de atleet met de meeste medailles. Na het bekijken van de lijst met individuele atleten die meerdere medailles won op de Olympische Spelen van 2000 in Sydney, kunnen we zien dat de atleet met de meeste medailles Ian Thorpe uit Australië is, die in totaal 5 medailles won (3 goud en 2 zilver). Daarom is het ANTWOORD: Ian Thorpe. |
De uitvoerstructuur opgeven
Door uw prompt te gebruiken om de structuur van de uitvoer op te geven, kan dit een aanzienlijk effect hebben op de aard en kwaliteit van de resultaten. Soms zijn systeemberichtinvoeren als 'alleen echte feiten schrijven' of 'geen informatie fabriceren' mogelijk niet voldoende oplossingen. In plaats daarvan kan het vragen om het modelantwoord ook bronvermeldingen op te nemen, leiden tot een vermindering van de prevalentie van onjuiste antwoorden.
Als u het model instrueert om het bronmateriaal te citeren wanneer het instructies maakt, zijn deze instructies veel waarschijnlijker geaard. Als u om bronvermeldingen vraagt, moet het model twee fouten maken telkens wanneer er een antwoord wordt gegenereerd: de eerste fout is het ge fabriceerde antwoord en de tweede is de slechte bronvermelding. Houd er rekening mee dat hoe dichter de bronvermelding is bij de tekst die wordt ondersteund, hoe korter de afstand voor het model is om te anticiperen op de bronvermelding, wat aangeeft dat inline-bronvermeldingen betere oplossingen zijn voor het genereren van valse inhoud dan bronvermeldingen aan het einde van de inhoud.
Als u het model vraagt om feitelijke instructies uit een alinea te extraheren, kan het ook samengestelde instructies extraheren, zoals 'X doet Y EN Z' (wat moeilijker kan zijn om te verifiëren). Dit kan worden vermeden door een uitvoerstructuur op te geven, zoals (entiteit1, relatie, entiteit2).
In de onderstaande voorbeelden ziet u het gebruik van bronvermeldingen en het omsturen van het modelantwoord op een gedefinieerde structuur.
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden | Vermeld in het volgende gesprek het verschillende gedrag van de klantondersteuningsmedewerker. --- Hallo bedankt voor het bellen van contoso apotheek die ik spreek vandaag ik begrijp je frustratie mary um kan je me vertellen wat je precies probeert te bereiken OK uh zeker blij om te controleren dat voor je een moment alsjeblieft ik zie hier dat je op een algemene vorm van lipitor was dat goed ok uh, dus ik zie dat uw arts stopte met het schrijven van deze medicijnen in twintigentwintig eigenlijk OK uh Ja, ik zou blij zijn om te controleren of er voor jou een hiaat is omdat er soms een hiaat in het systeem is en het wordt gewoon niet gemeld, dus laat me even even kijken, dus ik zie hier dat uw arts deze geneesmiddelen voor u had voorgeschreven van twintig tot 22 1 OKum ja volgens de laatste records van dokterskantoor u nu op een ander medicijn metformine zou hebben Je vindt ons leuk om dat recept voor je op te halen voor het ophalen van een beetje vorm in vijfhonderd mg u bent zeer welkom mary laat ons weten als er iets anders is wat we vandaag voor u kunnen doen. --- Hoe is het antwoord van de klantondersteuningsmedewerker? Classificeer en vermeld hun verschillende gedragingen en citeer de reden achter de classificatie, met behulp van de notatie BEHAVIOR("reason") |
1. Beleefd begroetingSGEDRAG("Agent start het gesprek met een beleefde begroeting en vraagt om de naam van de beller") 2. Empathetisch GEDRAG("Agent erkent Mary's frustratie en probeert haar bezorgdheid te begrijpen") 3. Attent GEDRAG("Agent luistert naar het probleem van de klant en vraagt om meer informatie") 4. Proactief GEDRAG("Agent biedt aan om het probleem voor de klant te controleren") 5. Informatief GEDRAG("Agent verstrekt de relevante informatie over de voorschriftgeschiedenis van de klant") 6. Grondig GEDRAG("Agent controleert op mogelijke hiaten in het systeem en levert een volledig antwoord") 7. Confirmatory BEHAVIOR("Agent bevestigt de huidige medicatie bij de klant") 8. Oplossingsgericht GEDRAG("Agent biedt aan om het nieuwe recept voor de klant te vullen") 9. Courteous BEHAVIOR("Agent thanks the customer and offers further assistance if needed") |
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden. | Cluster de volgende nieuwskoppen in onderwerpcategorieën op basis van patronen die in de tekst worden gezien. Vermeld ook redenering achter de wijze waarop deze categorieën zijn gedefinieerd. Uitvoerindeling: { "TOPIC_NAME": "", "KOPPEN": [], "REDENEREN": "" } Nieuwskoppen invoeren: 1. "Van boeken tot presentaties in 10s met AR + ML" 2. "Demo uit 1993 van 32-jarige Yann LeCun toont het eerste Convolutional Network for Text Recognition ter wereld" 3. "First Order Motion Model applied to animate paintings" 4. "Robinhood en andere brokers blokkeren letterlijk de aankoop van $GME, $NOK, $BB, $AMC; verkopen toestaan" 5. "United Airlines stock down over 5% premarket trading" Uitvoer: |
{ "ARTIFICIAL_INTELLIGENCE": { "KOPPEN": [ "Van boeken tot presentaties in 10s met AR + ML", "Demo uit 1993 van 32-jarige Yann LeCun toont het eerste Convolutional Network for Text Recognition ter wereld", "First Order Motion Model applied to animate paintings" ], "REDENEREN": "Deze koppen zijn gerelateerd aan kunstmatige intelligentie, machine learning en hun toepassingen in verschillende velden." }, "FINANCIAL_MARKETS": { "KOPPEN": [ "Robinhood en andere brokers blokkeren letterlijk de aankoop van $GME, $NOK, $BB, $AMC; verkopen toestaan", "United Airlines stock down meer dan 5% premarket trading", "Bitcoin was bijna $ 20.000 per jaar geleden vandaag" ], "REDENEREN": "Deze koppen zijn gerelateerd aan financiële markten, aandelen, cryptovaluta's en handelsplatforms." } } |
Temperatuur- en Top_p parameters
Als u de temperatuurparameter wijzigt, wordt de uitvoer van het model gewijzigd. De temperatuurparameter kan tussen 0 en 2 worden ingesteld. Een hogere waarde, bijvoorbeeld 0,7, maakt de uitvoer willekeuriger en produceert meer uiteenlopende antwoorden, terwijl een lagere waarde, zoals. 0.2, maakt de uitvoer meer gericht en concreet. Een fictief verhaal kan worden gegenereerd met een hogere temperatuur. Voor het genereren van een juridisch document is het raadzaam om een veel lagere temperatuur te gebruiken. Top_probability is een andere parameter en is vergelijkbaar met Temperatuur omdat hiermee ook de willekeurigheid van het modelantwoord wordt gecontroleerd, maar dit op een andere manier doet. De algemene aanbeveling is om een van deze twee parameters tegelijk te wijzigen, niet beide.
Basiscontext opgeven
Een van de meest effectieve manieren om betrouwbare antwoorden te geven, is door de modelgegevens te geven om de reacties te trekken van (grondgegevens). Als uw use-case afhankelijk is van actuele, betrouwbare informatie en niet uitsluitend een creatief scenario is, raden we u ten zeerste aan grondgegevens op te geven. Over het algemeen, hoe dichter u uw bronmateriaal kunt krijgen bij de uiteindelijke vorm van het gewenste antwoord, hoe minder werk het model moet doen, wat betekent dat er minder kans is op fouten. Hier volgt een voorbeeld waarin het systeem een recente blog bevat met een beschrijving van de lancering van GPT-4 in Azure OpenAI Service en waarin wordt gevraagd om enkele van de vroege klanten een naam te geven.
Systeembericht | User | Assistent |
---|---|---|
U bent een AI-assistent waarmee mensen informatie kunnen vinden. U geeft uitsluitend antwoorden van de onderstaande tekst en reageert in 100 woorden of minder: "Bij Microsoft ontdekken we voortdurend nieuwe manieren om creativiteit te ontketenen, productiviteit te ontgrendelen en vaardigheden op niveau te verhogen, zodat meer mensen kunnen profiteren van het gebruik van AI. Hierdoor kunnen onze klanten ... … waardoor de kans wordt verkleind dat het model een schadelijk antwoord genereert."1 Beantwoord in 100 woorden of minder. Gebruik waar mogelijk lijsten met opsommingstekens. |
Wie zijn enkele van de vroege klanten van de GPT-4-modellen van de Azure OpenAI-service? | Hier volgen enkele van de vroege klanten van de GPT-4-modellen van de Azure OpenAI-service: - Epic Healthcare: Ze zijn van plan gpt-4 te gebruiken om artsen en verpleegsters te helpen minder tijd te besteden aan het invoeren en onderzoeken van gegevens. - Coursera: Ze gebruiken de Azure OpenAI-service met GPT-4 om een nieuwe ai-leerervaring op hun platform te maken. - Coca-Cola: Ze gebruiken Azure OpenAI om een kennishub te bouwen en gebruik te maken van de multimodale mogelijkheden van GPT-4 voor marketing, reclame, public relations en klantrelaties. - Andere bedrijven van alle grootten maken gebruik van Azure AI om klantervaringen te verbeteren, lange-vorminhoud samen te vatten, software te schrijven en risico's te verminderen door de juiste belastinggegevens te voorspellen. |
1 Text from Azure OpenAI GPT-4 launch blog.
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.
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.
Gerelateerde inhoud
- Meer informatie over Azure OpenAI.
- Ga aan de slag met het ChatGPT-model met de snelstartgids voor ChatGPT.
- Bekijk de GitHub-opslagplaats met Azure OpenAI-voorbeelden voor meer voorbeelden