OpenAI
Deze pagina is automatisch vertaald. Bekijk het oorspronkelijke Engelstalige artikel.

Best practices voor prompt-engineering met de OpenAI API

Hoe je duidelijke en effectieve instructies geeft aan OpenAI-modellen

Bijgewerkt: 4 days ago

Hoe prompt-engineering werkt

Door de manier waarop modellen van OpenAI worden getraind, zijn er specifieke promptindelingen die bijzonder goed werken en tot nuttigere modeluitvoer leiden. De officiële gids voor prompt-engineering van OpenAI is meestal de beste plek om te beginnen voor prompttips.

Hieronder presenteren we een aantal promptindelingen waarvan we merken dat ze goed werken, maar verken gerust andere indelingen die mogelijk beter bij je taak passen.

Vuistregels en voorbeelden

Opmerking: de "{text input here}" is een placeholder voor daadwerkelijke tekst/context

1. Gebruik het nieuwste model

Voor de beste resultaten raden we over het algemeen aan de nieuwste, krachtigste modellen te gebruiken. Nieuwere modellen zijn doorgaans makkelijker te prompt-engineeren.


Opmerking: Er zijn enkele verschillen om rekening mee te houden bij het prompten van een redenerend model versus het prompten van een GPT-model. Meer details hier.

2. Zet instructies aan het begin van de prompt en gebruik ### of """ om de instructie en context te scheiden

Minder effectief ❌:

Vat de onderstaande tekst samen als een lijst met opsommingstekens van de belangrijkste punten.

{text input here}

Beter ✅:

Vat de onderstaande tekst samen als een lijst met opsommingstekens van de belangrijkste punten.

Tekst: """
{text input here}
"""

3. Wees zo specifiek, beschrijvend en gedetailleerd mogelijk over de gewenste context, uitkomst, lengte, indeling, stijl, enz.

Wees specifiek over de context, uitkomst, lengte, indeling, stijl, enz.

Minder effectief ❌:

Schrijf een gedicht over OpenAI. 

Beter ✅:

Schrijf een kort inspirerend gedicht over OpenAI, met focus op de recente productlancering van DALL-E (DALL-E is een ML-model van tekst naar beeld) in de stijl van een {famous poet}

4. Formuleer de gewenste uitvoerindeling aan de hand van voorbeelden

Minder effectief ❌:

Haal de entiteiten uit de onderstaande tekst. Haal de volgende 4 entiteitstypen eruit: bedrijfsnamen, persoonsnamen, specifieke onderwerpen en thema's.

Tekst: {text}

Laat zien én leg uit - de modellen reageren beter wanneer ze specifieke indelingsvereisten te zien krijgen. Dit maakt het ook makkelijker om meerdere uitvoeren programmatisch betrouwbaar te parseren.

Beter ✅:

Haal de belangrijke entiteiten uit de onderstaande tekst. Haal eerst alle bedrijfsnamen eruit, daarna alle persoonsnamen, vervolgens specifieke onderwerpen die bij de inhoud passen en tot slot algemene overkoepelende thema's

Gewenst formaat:
Bedrijfsnamen: <komma_gescheiden_lijst_met_bedrijfsnamen>
Persoonsnamen: -||-
Specifieke onderwerpen: -||-
Algemene thema's: -||-

Tekst: {text}

5. Begin met zero-shot, daarna few-shot; werkt geen van beide, ga dan fine-tunen

✅ Zero-shot

Haal trefwoorden uit de onderstaande tekst.

Tekst: {text}

Trefwoorden:

✅ Few-shot - geef een paar voorbeelden

Haal trefwoorden uit de bijbehorende teksten hieronder.

Tekst 1: Stripe biedt API's die webontwikkelaars kunnen gebruiken om betalingsverwerking in hun websites en mobiele applicaties te integreren.
Trefwoorden 1: Stripe, betalingsverwerking, API's, webontwikkelaars, websites, mobiele applicaties
##
Tekst 2: OpenAI heeft toonaangevende taalmodellen getraind die erg goed zijn in het begrijpen en genereren van tekst. Onze API biedt toegang tot deze modellen en kan worden gebruikt om vrijwel elke taak op te lossen waarbij taalverwerking komt kijken.
Trefwoorden 2: OpenAI, taalmodellen, tekstverwerking, API.
##
Tekst 3: {text}
Trefwoorden 3:

✅Fine-tunen: bekijk hier de best practices voor fine-tunen.

6. Verminder “wollige” en onnauwkeurige beschrijvingen

Minder effectief ❌:

De beschrijving van dit product moet vrij kort zijn, slechts een paar zinnen, en niet veel meer.

Beter ✅:

Gebruik een alinea van 3 tot 5 zinnen om dit product te beschrijven.

7. Zeg niet alleen wat je niet moet doen, maar zeg wat je in plaats daarvan moet doen

Minder effectief ❌:

Het volgende is een gesprek tussen een agent en een klant. VRAAG NIET OM GEBRUIKERSNAAM OF WACHTWOORD. NIET HERHALEN.

Klant: Ik kan niet inloggen op mijn account.
Agent:

Beter ✅:

Het volgende is een gesprek tussen een agent en een klant. De agent zal proberen het probleem vast te stellen en een oplossing voor te stellen, zonder vragen te stellen die verband houden met PII. Verwijs de gebruiker in plaats van om PII, zoals gebruikersnaam of wachtwoord, te vragen naar het helpartikel www.samplewebsite.com/help/faq

Klant: Ik kan niet inloggen op mijn account.
Agent:

8. Specifiek voor codegeneratie - Gebruik “leidende woorden” om het model naar een bepaald patroon te sturen

Minder effectief ❌:

# Schrijf een eenvoudige python-functie die
# 1. Me om een getal in mijl vraagt
# 2. Mijlen omzet naar kilometers

In het onderstaande codevoorbeeld geeft het toevoegen van “import” het model een hint dat het in Python moet beginnen te schrijven. (Op dezelfde manier is “SELECT” een goede hint voor het begin van een SQL-instructie.)

Beter ✅:

# Schrijf een eenvoudige python-functie die
# 1. Me om een getal in mijl vraagt
# 2. Mijlen omzet naar kilometers

import

9. Gebruik de functie “Alles genereren”

Ontwikkelaars kunnen de functie “Alles genereren” gebruiken om een taak of verwachte uitvoer in natuurlijke taal te beschrijven en een prompt op maat te ontvangen.


Meer informatie over het gebruik van de functie “Alles genereren”.

Parameters

Over het algemeen zien we dat `model` en `temperature` de meest gebruikte parameters zijn om de modeluitvoer aan te passen.

  1. `model` - Krachtigere modellen zijn over het algemeen duurder en kunnen een hogere latentie hebben.

  2. `temperature` - Een maat voor hoe vaak het model een minder waarschijnlijke token uitvoert. Hoe hoger de temperature, hoe willekeuriger (en meestal creatiever) de uitvoer. Dit is echter niet hetzelfde als “waarheidsgetrouwheid”. Voor de meeste feitelijke toepassingen, zoals gegevensextractie en waarheidsgetrouwe Q&A, is een temperature van 0 het beste.

  3. `max_completion_tokens` (maximale lengte) - Beheerst niet de lengte van de uitvoer, maar is een harde afkaplimiet voor tokengeneratie. Idealiter bereik je deze limiet niet vaak, omdat je model stopt wanneer het denkt klaar te zijn, of wanneer het een door jou gedefinieerde stopreeks bereikt.

  4. `stop` (stopreeksen) - Een set tekens (tokens) die, wanneer ze worden gegenereerd, ervoor zorgen dat de tekstgeneratie stopt.

Zie de API-referentie voor beschrijvingen van andere parameters.

Was dit artikel nuttig?