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: yesterday

Hoe prompt-engineering werkt

Door de manier waarop OpenAI modellen worden getraind, zijn er specifieke prompt-indelingen die bijzonder goed werken en tot nuttigere modeloutputs leiden.

De officiële prompt-engineeringgids van OpenAI is meestal de beste plek om te beginnen voor promptingtips.

Hieronder presenteren we een aantal prompt-indelingen die volgens ons goed werken, maar voel je vrij om verschillende indelingen te verkennen, die mogelijk beter bij jouw taak passen.

Vuistregels en voorbeelden

Opmerking: “{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, meest capabele modellen te gebruiken. Nieuwere modellen zijn doorgaans eenvoudiger voor prompt-engineering.


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 specifiek, beschrijvend en zo 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. Maak de gewenste outputindeling duidelijk met 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 vertel — modellen reageren beter wanneer specifieke indelingsvereisten worden getoond. Dit maakt het ook eenvoudiger om meerdere outputs 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-tune: bekijk best practices voor fine-tuning hier.

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 ook wat je in plaats daarvan wel 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 richting 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 de hint dat het in Python moet gaan schrijven. (Op dezelfde manier is “SELECT” een goede hint voor het begin van een SQL-statement.)

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 Generate Anything

Ontwikkelaars kunnen de functie 'Generate Anything' gebruiken om een taak of verwachte output in natuurlijke taal te beschrijven en een op maat gemaakte prompt te ontvangen.

Meer informatie over het gebruik van de functie 'Generate Anything'.

Parameters

Over het algemeen merken we dat model en temperature de meest gebruikte parameters zijn om de modeloutput te wijzigen.

  1. model - Modellen met hogere prestaties zijn over het algemeen duurder en kunnen een hogere latentie hebben.

  2. temperature - Een maat voor hoe vaak het model een minder waarschijnlijk token output. Hoe hoger de temperature, hoe willekeuriger (en meestal creatiever) de output. Dit is echter niet hetzelfde als ‘waarheidsgetrouwheid’. Voor de meeste feitelijke use-cases, zoals data-extractie en waarheidsgetrouwe vraag-en-antwoordtoepassingen, is een temperature van 0 het best.

  3. max_completion_tokens (maximale lengte) - Beheerst niet de lengte van de output, 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 stopsequentie bereikt.

  4. stop (stopsequenties) - Een reeks tekens (tokens) die, wanneer gegenereerd, ervoor zorgen dat de tekstgeneratie stopt.

Zie voor andere parameterbeschrijvingen de API-referentie.

Was dit artikel nuttig?