https://openai.com is de plek waar je een key kan vragen voor privé gebruik.
Daarna kun je dit rudimentair stukje code gebruiken voor allerlei zaken, zoals oliebollen recepten, het laten schrijven van Pascal functies, programma's of classes.
Ik heb hier met de kerstdagen veel plezier aan beleefd... wellicht vinden jullie het ook interessant. Resultaten zijn niet altijd even goed, maar alles is nog beta.
Code:
program fpopenai_6;
{
Demo on how to use openai in Freepascal
Find out more at https://openai.com where you can also obtain a key.
Put the key in a file called openai.key surrounded by single quotes.
Enjoy, Thaddy de Koning, 26 december 2022
}
{$mode objfpc}{$ifdef mswindows}{$apptype console}{$endif}{$H+}
uses classes,sysutils,fphttpclient,opensslsockets,fpJson,jsonparser;
const
model ='{"model": "text-davinci-003", "prompt": "%s","temperature": 0.7,"max_tokens": 3000,"top_p": 1, "frequency_penalty": 0, "presence_penalty": 0}';
var
d:TJsonData;
s:string;
begin
writeln('What is your request?');
readln(s);
writeln;
with TfpHttpClient.Create(nil) do
Try
AllowRedirect:= true;
RequestHeaders.Add('Content-Type: application/json');
// put your key with single quotes in a textfile called openai.key
RequestHeaders.Add('Authorization: Bearer '+{$I openai.key});
RequestBody:=TStringStream.Create(format(model,[s]));
writeln('Please wait for the response, this can take some time:');
try
try
d:=GetJson(Post('https://api.openai.com/v1/completions'));
writeln(d.findpath('choices[0].text').AsString);
except
writeln('The engine was not able to answer your request');
end;
finally
d.free;
end;
finally
RequestBody.Free;
Free;
end;
end.
Als je het programma runt, kun je bijvoorbeeld oliebollen recepten vragen, maar ook Pascal code genereren in natuurlijke taal.
Zoals:
Code:
What is your request?
ik wil drie verschillende oliebollen recepten met verse gist
Please wait for the response, this can take some time:
1. Oliebollen met verse gist
Ingrediënten:
- 2 cups (250 gram) bloem
- 2 theelepels bakpoeder
- 2 eetlepels suiker
- 1 theelepel zout
- 2 eetlepels versgemalen kaneel
- 2 eetlepels versgemalen kardemom
- 1 eetlepel gedroogde gist
- ½ cup (110 ml) melk
- ½ cup (110 ml) melk
- 2 eieren
- 2 eetlepels vanillesuiker
- 1 kop (250 ml) plantaardige olie
- Suiker en kaneel voor het bestrooien
Bereidingswijze:
1. Meng de bloem, bakpoeder, suiker, zout, kaneel en kardemom in een kom.
2. Voeg de gist toe en roer tot alle ingrediënten goed gemengd zijn.
3. Voeg de melk, eieren en vanillesuiker toe en roer tot een glad deeg.
4. Verwarm de olie in een pan.
5. Neem het deeg en maak er kleine balletjes van.
6. Frituur de oliebollen in de olie totdat ze goudbruin zijn, ongeveer 3-4 minuten.
7. Haal de oliebollen uit de olie en laat ze op een bord met keukenpapier uitlekken.
8. Bestrooi met suiker en kaneel.
9. Serveer warm.
2. Oliebollen met verse gist en appel
Ingrediënten:
- 2 cups (250 gram) bloem
- 2 theelepels bakpoeder
- 2 eetlepels suiker
- 1 theelepel zout
- 2 eetlepels versgemalen kaneel
- 2 eetlepels versgemalen kardemom
- 1 eetlepel gedroogde gist
- 1 kop (250 ml) melk
- 1 kop (250 ml) appelsap
- 1 geschilde en gehakte appel
- 2 eieren
- 2 eetlepels vanillesuiker
- 1 kop (250 ml) plantaardige olie
- Suiker en kaneel voor het bestrooien
Bereidingswijze:
1. Meng de bloem, bakpoeder, suiker, zout, kaneel en kardemom in een kom.
2. Voeg de gist toe en roer tot alle ingrediënten goed gemengd zijn.
3. Voeg de melk, appelsap, gehakte appel, eieren en vanillesuiker toe en roer tot een glad deeg.
4. Verwarm de olie in een pan.
5. Neem het deeg en maak er kleine balletjes van.
6. Frituur de oliebollen in de olie totdat ze goudbruin zijn, ongeveer 3-4 minuten.
7. Haal de oliebollen uit de olie en laat ze op een bord met keukenpapier uitlekken.
8. Bestrooi met suiker en kaneel.
9. Serveer warm.
3. Oliebollen met verse gist en sinaasappel
Ingrediënten:
- 2 cups (250 gram) bloem
- 2 theelepels bakpoeder
- 2 eetlepels suiker
- 1 theelepel zout
- 2 eetlepels versgemalen kaneel
- 2 eetlepels versgemalen kardemom
- 1 eetlepel gedroogde gist
- ½ cup (110 ml) melk
- ½ cup (110 ml) versgeperst sinaasappelsap
- 2 eieren
- 2 eetlepels vanillesuiker
- 1 kop (250 ml) plantaardige olie
- Suiker en kaneel voor het bestrooien
Bereidingswijze:
1. Meng de bloem, bakpoeder, suiker, zout, kaneel en kardemom in een kom.
2. Voeg de gist toe en roer tot alle ingrediënten goed gemengd zijn.
3. Voeg de melk, sinaasappelsap, eieren en vanillesuiker toe en roer tot een glad deeg.
4. Verwarm de olie in een pan.
5. Neem het deeg en maak er kleine balletjes van.
6. Frituur de oliebollen in de olie totdat ze goudbruin zijn, ongeveer 3-4 minuten.
7. Haal de oliebollen uit de olie en laat ze op een bord met keukenpapier uitlekken.
8. Bestrooi met suiker en kaneel.
9. Serveer warm.
Merk op dat ik de vraag in het Nederlands stel...
============================
Ok, nu een voorbeeld waarin ik vraag om een pascal implementatie van het knapsack probleem:
Code:
What is your request?
write a program in pascal to solve the knapsack problem. Note variable names should not be the same as type names
Please wait for the response, this can take some time:
program Knapsack;
uses sysutils, math; // dat moest handmatig toegevoegd worden
type
Item = record
value, weight: real;
end;
ItemArray = array of Item;
var
items: ItemArray;
maxWeight, maxValue: real;
itemCount, i, j: integer;
currentWeight, currentValue: real;
begin
//read the input
readln(maxWeight);
readln(itemCount);
setlength(items, itemCount);
for i := 0 to itemCount - 1 do
readln(items[i].value, items[i].weight);
//initialize the matrix
maxValue := 0;
for i := 0 to itemCount do
begin
for j := 0 to trunc(maxWeight) do
begin
if (i = 0) or (j = 0) then
currentValue := 0
else
begin
if (items[i - 1].weight <= j) then
currentValue :=
max(items[i - 1].value +
maxValue(i - 1, j - items[i - 1].weight),
maxValue(i - 1, j))
else
currentValue := maxValue(i - 1, j);
end;
maxValue := max(maxValue, currentValue);
end;
end;
writeln(maxValue);
end.
Veel plezier!! en een gelukkig nieuwjaar
Bookmarks