tjarkvandemerwe / tidyprompt

Create LLM prompting pipelines
https://tjarkvandemerwe.github.io/tidyprompt/
Other
7 stars 1 forks source link

tidyprompt classes #5

Closed tjarkvandemerwe closed 1 month ago

tjarkvandemerwe commented 1 month ago

Volgens mij hebben we nu 5 classes die we gebruiken:

chr: bestaat al, single string, kan worden omgezet naar prompt prompt: de base prompt, de vraag, heeft geen functions van zichzelf (noemen we op dit moment prompt_wrap, maar is eigenlijk geen wrap, heeft ook geen mod/val/extr functions) prompt_modifier: een modifier op de baseprompt, e.g. answer_type, reasoning_mode, tool_caller, met naast mod, de extractie/val functies. Hier zouden we ook standaard een type aan kunnen toevoegen, of mode, waar we de sortering/modifier compatibility mee kunnen uitvoeren. prompt_list: een lijst met een base prompt, en een of meer compatible modifiers.

Is het een idee om deze objecten formeel te introduceren? Er staan al een paar, en dan alle argument namen ook hierop aan te passen? En dan kunnen we ook generics maken van de send_query functie etc. Dat we die compatible maken met de chr, prompt en prompt_list class. En dan kunnen we ook de andere generics zoals print ed mooier maken voor deze objecten.

En is prompt_modifier dan duidelijker dan prompt_wrapper?

lukakoning commented 1 month ago

Goed om dit nog even nader te bekijken inderdaad.

De enige gedefinieerde class is nu prompt_wrap. Wat we nu een 'base prompt' noemen is in feite een prompt_wrap maar met een waarde onder variabele prompt_text (wat daaropvolgende prompt_wraps niet hebben, die hebben modifying functions die worden toegepast op de voorgaande tekst). Base prompt moet aan het begin van een prompt list staan (wat nu enkel een list van prompt wraps is).

Huidige stand is dat de functie validate_prompt_list() checkt of een prompt list geldig is a.d.h.v. een aantal criteria, en ook een string omzet of een base prompt omzet naar een prompt list (die vervolgens behandeld kan worden door functies die een wrapper toevoegen en door de send_query-functie).

Mogelijk dus: voor string, base prompt; omzetten naar prompt list via generic, dan de reguliere functie (voor prompt list) aanhouden? En prompt list object definiëren dat list is met de checks die nu in validate_prompt_list() zitten. Aan prompt_list kunnen we misschien ook een $append_wrap() functie toevoegen om op mooie wijze een wrap toe te voegen

lukakoning commented 1 month ago

Nog over prompt_modifier/prompt_wrapper; modifier gebruiken we nu al intern voor de functies die de tekst v.d. prompt toevoegen. Dus dat kan dan misschien verwarrend worden als we beide modifier noemen. Wrapper vind ik op zich oké, je neemt een base prompt en voeg je steeds laagjes aan toe

lukakoning commented 1 month ago

Verder zijn er nu een aantal functies die een prompt list nemen en er iets mee doen (llm provider uit halen, prompt text constructen, etc). Dat zouden we mooi kunnen organiseren door al die functies aan het prompt list objecttype te hangen

lukakoning commented 1 month ago

Ik heb op mijn branch een kleine refactor gedaan waarbij prompt_list object is toegevoegd; prompt_wrap is dan meer wat de naam echt zegt. Volgens mij is het stable maar je kan het evt even bekijken voordat we het mergen met de main @tjarkvandemerwe

tjarkvandemerwe commented 1 month ago

Ga ik testen, ziet er goed uit, en ik ga wel even checken of ik een generic functie kan maken van bepaalde stappen, zodat je er een chr, prompt_wrap of prompt_list aan mee kan geven!