Prompt engineering: 25% minder kosten en 37% betere performance, hand in hand

September 29, 2023

Prompt engineering is de beste manier om kosten te drukken en prestaties verbeteren. Het zijn betrekkelijk vrij simpele technieken die jij thuis ook kunt toepassen.

Prompt engineering is een techniek die de efficiëntie en effectiviteit van interacties met Large Language Models (LLM's), zoals ChatGPT, optimaliseert. Deze aanpak stelt ons in staat om gerichter te communiceren met LLMs, waardoor we nauwkeurigere en meer toepasselijke antwoorden kunnen verkrijgen. Een goed ontworpen prompt kan niet alleen de kwaliteit van de output verbeteren, maar ook aanzienlijke kostenbesparingen met zich meebrengen.

Dit artikel heeft als doel om een uitgebreid overzicht te geven van de diverse technieken binnen het veld van prompt engineering. We belichten hoe deze technieken functioneren en welke voordelen ze onze klanten bieden. Daarnaast bieden we inzicht in de inherente beperkingen van LLMs en strategieën om deze effectief te omzeilen. In onze voorbeelden gebruiken we ChatGPT-4, zo kun je het thuis ook proberen.

Zero-shot prompting: de absolute basis

Zero-shot prompting vertegenwoordigt de meest elementaire vorm van prompting. In deze aanpak wordt een enkele, niet-begeleide instructie aan het LLM verstrekt. Hier volgt een voorbeeld:

Zero-shot

Few-shot prompting

Few-shot prompting, ook wel in-context learning genoemd, brengt je in staat om een Large Language Model (LLM) te trainen door het enkele specifieke voorbeelden te geven. Deze methode zorgt ervoor dat het LLM de intentie achter de prompt begrijpt en hier adequaat op reageert.

Few-shot

Zoals je in de afbeelding kunt zien, krijgt het LLM een voorbeeld dat dient als leidraad voor het omgaan met nieuwe, onbekende input. Dit wordt gerealiseerd door eerst een term en de bijbehorende betekenis te verduidelijken, gevolgd door een voorbeeldzin. Daarna introduceerje een nieuwe term en vraag je het LLM om een passend voorbeeld te genereren.

Chain-of-Thought (CoT) prompting

Chain-of-thought prompting is een techniek die in 2022 bekend werd, na de publicatie van het wetenschappelijke artikel "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" door Wei en collega's. Deze methode heeft aangetoond dat wanneer men een LLM vraagt om complexe taken stapsgewijs te verduidelijken, de kwaliteit van de uitvoer aanzienlijk verbetert. Best wel cool en totaal niet complex.

Bron: https://arxiv.org/abs/2201.11903

Voorbeeld uit het onderzoek:

Chain-of-Thought

Wanneer deze benadering wordt gecombineerd met “few-shot prompting”, (een techniek waarbij het model enkele voorbeelden krijgt om van te leren), leidt dit tot significant betere resultaten. Deze gecombineerde methode staat bekend als “few-shot CoT prompting”:

Few-shot Chain-of-Thought

Het is overigens ook mogelijk om uitstekende resultaten te krijgen met zero-shot CoT prompting. Hierbij hoef je geen voorbeelden aan het model te geven. Door simpelweg de zin "let’s go through this step by step" toe te voegen aan de instructie, verbetert de uitvoer in de meeste gevallen al aanzienlijk.

Automatic Chain-of-Thought (Auto-CoT)

Bij de toepassing van Chain-of-Thought prompting, met voorbeelden, komt er handmatig werk bij kijken, voor bij het creëren van effectieve en diverse voorbeelden. Deze handmatige inspanning kan soms leiden tot minder nauwkeurige uitkomsten (mensen maken fouten). Bovendien is het van belang om een gevarieerd aanbod aan voorbeelden te hebben; een overdaad aan gelijksoortige voorbeelden kan tot suboptimale resultaten leiden.

Om deze uitdagingen aan te pakken, hebben Zhuosheng Zhang, Aston Zhang, Mu Li en Alex Smola Auto-CoT ontwikkeld. Deze methode bestaat uit twee concrete fasen:

  • Fase 1: Hierbij worden vragen uit een gegeven dataset gegroepeerd in verschillende clusters.
  • Fase 2: demonstratie sampling: Uit elke cluster wordt een representatieve vraag geselecteerd, waarna de bijbehorende redeneerketen wordt gegenereerd met behulp van Zero-Shot-CoT.

Hier een voorbeeld van dit artikel bron (https://arxiv.org/pdf/2210.03493.pdf):

Automatic Chain-of-Thought

De resultaten van deze aanpak zijn veelbelovend:

Automatic Chain-of-Thought resultaten v. (zero-shot) CoT

Een nadeel van Auto-CoT is dat het meer vereist dan een eenvoudige prompt. De code voor Auto-CoT is hier te vinden.

Tree-of-Thoughts (ToT) prompting

Voor complexe taken waarbij exploratie en strategisch denken nodig zijn, schieten traditionele en eenvoudige prompting-technieken tekort. Yao et al. hebben een onderzoek gepresenteerd waaruit blijkt dat Tree-of-Thoughts (ToT) prompting betere resultaten oplevert. Bij ToT prompting verwerkt het LLM gedachten in 'nodes' binnen een ToT-schema. Omdat de AI een ToT moet uitwerken, worden meerdere opties overwogen en uiteindelijk wordt de beste optie gekozen in plaats van de eerste. Dit geeft het LLM een mate van zelfevaluatie, een vorm van redeneren.

Dat ziet er zo uit:

Tree-of-Thoughts structuur

ToT is bijzonder geschikt voor complexe vraagstukken zoals: "Moet ons bedrijf machine learning integreren in onze processen?" Deze vraag bestaat uit meerdere elementen met subelementen, en beslissingen in eerder gemaakte elementen hebben invloed op latere elementen. Op deze manier kan een LLM terugkeren op zijn stappen bij een verkeerde keuze. Een concreet voorbeeld:

Tree-of-Thoughts voorbeeld uitgewerkt

Als je een LLM zou voorzien van de volledige informatie zoals hierboven beschreven, dan zou het model deze kunnen uitwerken. Je kunt het LLM vervolgens vragen om elke stap concreet te onderbouwen.

Mocht je deze logica willen testen, dan kun je hier en hier de desbetreffende code vinden.

Graph-of-Thoughts (GoT) Prompting

Complexe taken kunnen met CoT- en ToT-prompting worden aangepakt, maar deze methoden blijven in essentie 'mechanisch'. Wat als we een meer menselijke benadering zoeken? Dit zou een realistischer beeld geven van menselijk denken. Het voordeel hiervan is dat het menselijk brein, dankzij zijn niet-lineaire aard, verbanden kan leggen tussen niet-gerelateerde gedachten of concepten, wat leidt tot diepere inzichten en creativiteit.

Hoe werkt dit? Heel abstract, als je een probleem probeert op te lossen, verken je als het ware "een keten van gedachten". Het kan voorkomen dat een bepaalde gedachteketen doodloopt. In dat geval kun je een nieuwe keten van gedachten starten, waarbij je gebruikmaakt van de inzichten die je heeft opgedaan in de vorige keten. Je kunt dus itereren op gedachtereeksen door gebruik te maken van eerder verworven inzichten. Een conclusie komt in feite voort uit een complex netwerk van gedachten, iets wat een LLM kan simuleren in zijn werkwijze.

Deze benadering verschilt van chain-of-thought reasoning, waarbij inzichten uit een doodgelopen gedachtereeks niet opnieuw kunnen worden gebruikt. Bij Graph-of-Thoughts reasoning/prompting is dat wel mogelijk.

Het resultaat van Graph-of-Thoughts reasoning/prompting is een betere uitkomst met diepere en creatievere inzichten.

Bekijk de onderstaande grafiek om te zien hoe GoT-prompting zich verhoudt tot andere prompting-technieken:

Graph-of-Thoughts structuur in vergelijking met ...

Conclusie

Allereerst is dit overzicht van prompt-technieken niet uitputtend. Er zijn vele technieken die in specifieke gevallen kunnen worden toegepast. Prompt engineering is een onderzoeksveld dat zich continu ontwikkelt.

Het is belangrijk om te weten dat, hoewel elke evolutiestap in prompt engineering — van zero-shot tot Graph-of-Thought — tot betere resultaten leidt, de marges van verbetering kleiner worden. Bijvoorbeeld, de overgang van zero-shot naar chain-of-thought resulteerde in een verbetering van 20 tot in sommige gevallen zelfs 34%. De laatste stap van ToT naar GoT leverde echter in veel gevallen slechts een verbetering van 0-2% op. In sommige gevallen was er zelfs sprake van regressie.

Daarnaast wordt elke volgende stap computationeel intensiever. Dit komt omdat elke geavanceerdere prompt meer vraagt van het systeem. Een simpele prompt is in feite een vraag-antwoord interactie, terwijl een GoT-prompt vereist dat het LLM meerdere taken uitvoert. Het voordeel is een beter resultaat, maar het nadeel zijn de hogere kosten en de extra tijd die nodig is om een vraag te beantwoorden.

Wij zijn ervan overtuigd dat voor elke toepassing en elk type vraag een andere prompting-techniek het meest geschikt is. Bij complexe vraagstukken waar een foutmarge onaanvaardbaar is, is GoT de betere keuze. In dergelijke gevallen is het ook gerechtvaardigd om meer tijd te investeren in het zorgvuldig opstellen van de prompt en de randvoorwaarden. Voor eenvoudigere vraagstukken kan een prompting-techniek zoals CoT al voldoende zijn. Wij adviseren echter om in vrijwel alle gevallen minimaal CoT toe te passen.

Wil je meer weten over prompt engineering of wil je een LLM-toepassing optimaliseren? Neem dan contact met ons op!