Zephyrnet-logo

Natuurlijke taal AI in uw volgende project? Het is makkelijker dan je denkt

Datum:

Wil je dat je volgende project trashtalk wordt? Dynamisch saaie logberichten herschrijven als sci-fi technobabble? Beantwoordt u graag (of met tegenzin) vragen? Dat soort dingen doen en meer kan worden gedaan met OpenAI's GPT-3, een voorspellingsmodel voor natuurlijke taal met een API dat waarschijnlijk een stuk gemakkelijker te gebruiken is dan je zou denken.

Sterker nog, als je basisvaardigheden voor het coderen van Python hebt, of zelfs alleen de mogelijkheid om een curl verklaring, heb je zo ongeveer alles wat je nodig hebt om deze mogelijkheid toe te voegen aan je volgende project. Het is op de lange termijn niet gratis, hoewel het eerste gebruik gratis is bij aanmelding, maar voor persoonlijke projecten zullen de kosten erg laag zijn.

Basisconcepten

OpenAI heeft een API die toegang biedt tot GPT-3, een machine learning-model met de mogelijkheid om vrijwel elke taak uit te voeren waarbij natuurlijk klinkende taal wordt begrepen of gegenereerd.

OpenAI biedt uitstekende documentatie evenals een webtool waarmee interactief kan worden geëxperimenteerd. Eerst moet men echter een account aanmaken en een API-sleutel ontvangen. Daarna gaan de deuren open.

Door een account aan te maken krijg je ook een aantal gratis credits waarmee je kunt experimenteren met ideeën. Zodra de gratis proefperiode is opgebruikt of verloopt, kost het gebruik van de API geld. Hoeveel? Niet veel, eerlijk gezegd. Alles dat naar (en van) de API wordt verzonden, wordt opgedeeld in tokens, en prijsstelling is van $ 0.0008 tot $ 0.06 per duizend tokens. Duizend tokens is ongeveer 750 woorden, dus kleine projecten zijn echt geen grote financiële verplichting. Mijn gratis proefperiode kwam met 18 USD aan credits, waarvan ik tot nu toe amper 5% heb kunnen uitgeven.

Laten we eens nader bekijken hoe het werkt en wat u ermee kunt doen!

Hoe het werkt

De API accepteert verzoeken op verschillende manieren, en als u een curl statement, gebruik de opdrachtregel of schrijf een simpele Python (of node.js) code, goed nieuws! Je hebt alles wat je nodig hebt om ideeën uit te proberen!

Ik zal het gebruik van de API op de meest basale manier beschrijven, namelijk: voltooiing. Dat betekent dat men de API presenteert met een prompt, waaruit het een tekst zal opleveren voltooiing die probeert de prompt te evenaren. Dit alles gebeurt volledig in tekst en opgemaakt als natuurlijke taal.

Het op deze manier gebruiken van de API kan worden gezien als het implementeren van een soort zeer capabele autocomplete. De motor zelf kan worden gezien als een soort fantastisch complexe toestandsmachine, terwijl hij tegelijkertijd ook niet helemaal is zoals iets anders.

Wat voor soort dingen is mogelijk?

Hier is een heel eenvoudig voorbeeld:

Prompt (verzonden naar API) Voltooiing (reactie van API)
Schrijf een geestige foutmelding voor een bijna lege batterij. "Je loopt leeg!"

De prompt is ook hoe men het model "programmeert", en het ontwerpen van een goede prompt is een groot deel van het verkrijgen van goede resultaten.

Omdat het model in staat is de taalstructuur en intentie te begrijpen, is a prompt kan worden geformuleerd alsof men een schrijfopdracht geeft aan een middelbare scholier.

Hier is een iets complexer voorbeeld dat precies dat doet:

prompt Voltooiing
Geef enthousiast commentaar op een evenement in een tafelspel over treinen.

Evenement: Een speler genaamd Rob verkoopt een bedrijf.
Commentaar:

“Rob heeft besloten hun bedrijf te verkopen. Dit is een grote stap en zal grote gevolgen hebben voor het spel. Wie gaat het bedrijf kopen? Wat zullen ze ermee doen? De tijd zal het leren."

Er zijn een paar dingen om op te wijzen in het bovenstaande voorbeeld. De eerste regel van de prompt beschrijft wat er moet gebeuren. De volgende twee regels (“Gebeurtenis:” en “Commentaar:”) geven het model aan hoe de verklaring moet worden ingevuld. Merk op dat de regel "Commentaar:" leeg wordt gelaten in de prompt; het model voltooit wat is begonnen.

De praktijk van het maken van effectieve prompts heet snel ontwerp, en het is essentieel om allerlei nuttige en verschillende antwoorden van de API te krijgen. Laten we eens nader bekijken hoe snel ontwerp de resultaten beïnvloedt.

Betere reacties krijgen

Als iemand problemen heeft om het model op een bruikbare manier te laten reageren, kan het handig zijn om meerdere voorbeelden van wat er wordt gevraagd in de prompt zelf op te nemen om het model een beter idee te geven van wat er wordt verwacht.

De API-documentatie heeft: een uitstekende demonstratie van dit idee, en ik zal het hieronder kort herhalen:

Prompt (verzonden naar API) Voltooiing (reactie van API)
Stel drie namen voor voor een paard dat een superheld is. Superman, Batman, Spiderman

Dit resultaat is niet echt wat we willen. Het opnemen van enkele voorbeelden in de prompt zelf levert echter duidelijk betere resultaten op:

Prompt (verzonden naar API) Voltooiing (reactie van API)
Stel drie namen voor voor een dier dat een superheld is.

Dier: Kat
Namen: Kapitein Sharpclaw, Agent Fluffball, The Incredible Feline
Dier: Hond
Namen: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
dier: paard
namen:

Mighty Ros, Blaze the Wonder Horse, Thunderhoof

Hierdoor stijgen de kosten - bedenk dat men per token betaalt, zowel in de prompt als in de output - maar het verstrekken van meerdere voorbeelden in de prompt kan in sommige gevallen de sleutel zijn om de beste resultaten te krijgen, omdat het het model een veel duidelijker beeld geeft idee van wat wordt gevraagd, en hoe het moet worden opgemaakt.

Nogmaals, het is nuttig om de prompt te zien als een schrijfopdracht voor een middelbare scholier; een middelbare scholier die op zijn beurt kan worden gezien als een fantastisch complexe en enigszins variabele toestandsmachine.

Dezelfde prompt, verschillende voltooiingen

Voor een identieke prompt retourneert de API niet noodzakelijk dezelfde resultaten. Hoewel de aard van de prompt en de gegevens waarop het model is getraind een rol spelen, kan de diversiteit aan reacties ook worden beïnvloed door de temperature instellen in een verzoek.

Temperatuur is een waarde tussen 0 en 1, en is een uitdrukking van hoe deterministisch het model zou moeten zijn bij het maken van voorspellingen over geldige aanvullingen op een prompt. Een temperatuur van 0 betekent dat het indienen van dezelfde prompt elke keer dezelfde (of zeer vergelijkbare) reacties oplevert. Een temperatuur boven nul levert elke keer andere opleveringen op.

Anders gezegd, een lagere temperatuur betekent dat het model minder risico's neemt, wat resulteert in opleveringen die meer deterministisch zijn. Dit is handig wanneer men voltooiingen wil die nauwkeurig kunnen worden voorspeld, zoals reacties die feitelijk van aard zijn. Aan de andere kant levert het verhogen van de temperatuur - 0.7 is een typische standaardwaarde - meer diversiteit in voltooiingen op.

Fijnafstemming van het model

Het natuurlijke taalmodel achter de API is vooraf getraind, maar het is nog steeds mogelijk om het model aan te passen met een aparte dataset die is afgestemd op een bepaalde toepassing.

Deze functie, genaamd fijne afstemming, maakt het mogelijk om het model op een efficiënte manier te voorzien van veel meer voorbeelden dan het praktisch zou zijn om in elke prompt op te nemen. Als een dataset voor fijnafstemming eenmaal is aangeleverd, hoeft u in feite geen voorbeelden meer in de prompt zelf op te nemen. Ook worden aanvragen sneller verwerkt.

Dit is waarschijnlijk niet nodig, behalve voor smalle toepassingen, maar als u merkt dat het verkrijgen van solide resultaten voor uw project afhankelijk is van grote prompts en u wilt dat het efficiënter is, fijne afstemming is waar je moet kijken. OpenAI biedt tools om dit proces zo eenvoudig mogelijk te maken, mocht u dat nodig hebben.

Hoe ziet de code eruit?

Er is een interactieve webtool (de speelplaats, vereist een account) waarin men het model kan gebruiken om ideeën te testen zonder iets te hoeven coderen, maar het heeft ook de handige functie om op verzoek een codefragment te genereren, voor eenvoudig kopiëren en plakken in projecten.

Hier is het allereerste voorbeeld in dit artikel, geformatteerd als een eenvoudige curl verzoek:

curl https://api.openai.com/v1/engines/text-davinci-002/completions
  -H "Content-Type: application/json"
  -H "Authorization: Bearer $OPENAI_API_KEY"
  -d '{
  "prompt": "Write a witty error message for a low battery condition.",
  "temperature": 0.7,
  "max_tokens": 256,
  "top_p": 1,
  "frequency_penalty": 0,
  "presence_penalty": 0
}'

En hetzelfde, deze keer in Python:

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(
engine="text-davinci-002",
prompt="Write a witty error message for a low battery condition.",
temperature=0.7,
max_tokens=256,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)

Door het python-pakket te installeren, wordt ook een hulpprogramma geïnstalleerd dat direct vanaf de opdrachtregel kan worden gebruikt voor maximaal gemak:

$ openai api completions.create -e text-davinci-002 -p "Write a simple poem about daisies." --stream -M 128

(Opmerkingen: --stream geeft resultaten weer zoals ze zijn ontvangen, en -M 128 beperkt het antwoord tot maximaal 128 tokens.)

De prompt "schrijf een eenvoudig gedicht over madeliefjes" leverde mij de volgende tekst op, die elke keer anders zou zijn:

The daisy is a beautiful flower
That grows in the meadow and in the pasture
It has a yellow center and white petals
That make it look like the sun
The daisy is a symbol of innocence
And purity and is loved by all

Alle bovenstaande voorbeelden werken op dezelfde manier: ze sturen de prompt naar de OpenAI API (met behulp van iemands API-sleutel voor toegang, waarvan de bovenstaande voorbeelden aannemen dat deze is ingesteld als een omgevingsvariabele met de naam OPENAI_API_KEY), en ontvang een antwoord met het antwoord.

Verantwoord gebruik

De moeite waard om te benadrukken is OpenAI's inzet voor verantwoord gebruik, inclusief begeleiding over: beste praktijken op het gebied van veiligheid voor toepassingen. Er is veel doordachte informatie in die link, maar de korte versie is om altijd in gedachten te houden dat dit een tool is die:

  1. In staat tot dingen verzinnen een zeer geloofwaardige manier en
  2. In staat om met mensen om te gaan.

Het is niet moeilijk om te zien dat de combinatie potentieel schadelijk is als ze onverantwoord wordt gebruikt. Zoals bij de meeste tools, moet je oppassen voor misbruik, maar tools kunnen ook geweldige dingen zijn.

Krijg je al ideeën?

Het gebruik van de API is op de lange termijn niet gratis, maar als je een account aanmaakt, krijg je een set gratis tegoeden die je kunt gebruiken om te spelen en een paar ideeën uit te proberen, en het gebruik van zelfs de duurste engine voor persoonlijke projecten kost een schijntje. Al mijn enthousiaste experimenten hebben tot nu toe amper twee dollar van mijn gratis proefperiode gebruikt.

Inspiratie nodig? We hebben al een paar projecten behandeld die in deze richting zijn gegaan. Deze robotachtige putgame gebruikt natuurlijke taal AI om trashtalk te genereren en de Deep Dreams-podcast bestaat volledig uit door machines gegenereerde sprookjes als slaaphulpmiddel en is gemaakt met de OpenAI API.

Nu je weet wat er allemaal mogelijk is en hoe gemakkelijk ze zijn, krijg je misschien al wat ideeën? Laat het ons weten in de comments!

spot_img

Laatste intelligentie

spot_img