Skip to content

Introducerea în promptare

Ingineria prompturilor este o disciplină relativ nouă pentru dezvoltarea și optimizarea prompturilor pentru a folosi eficient modelele de limbaj (LM-uri) pentru o gamă largă de aplicații și subiecte de cercetare. Abilitățile de inginerie a prompturilor ajută la înțelegerea mai bună a capacităților și limitărilor modelelor de limbaj mari (LLM-uri). Cercetătorii folosesc ingineria prompturilor pentru a îmbunătăți capacitatea LLM-urilor pe o gamă largă de sarcini comune și complexe precum răspunsurile la întrebări și raționamentul aritmetic. Dezvoltatorii folosesc ingineria prompturilor pentru a proiecta tehnici robuste și eficiente de promptare care se interfațează cu LLM-urile și alte instrumente.

Acest ghid acoperă elementele de bază ale prompturilor standard pentru a oferi o idee aproximativă despre cum să folosești prompturile pentru a interacționa și instrui modelele de limbaj mari (LLM-uri).

Toate exemplele sunt testate cu text-davinci-003 (folosind playground-ul OpenAI) dacă nu se specifică altfel. Folosește configurațiile implicite, de ex., temperature=0.7 și top-p=1.

Subiecte:


Prompturi de bază

Poți deja să realizezi multe cu prompturile, dar calitatea rezultatelor depinde de câtă informație îi furnizezi. Un prompt poate conține informații precum instrucțiunea sau întrebarea pe care o transmiți modelului și poate include alte detalii precum intrările sau exemplele.

Iată un exemplu de bază al unui prompt simplu:

Prompt

Cerul este

Ieșire:

albastru

Cerul este albastru într-o zi senină. Într-o zi înnorată, cerul poate fi gri sau alb.

După cum poți vedea, modelul de limbaj produce o continuare a șirurilor care au sens având în vedere contextul "Cerul este". Ieșirea ar putea fi neașteptată sau departe de sarcina pe care vrem să o realizăm.

Acest exemplu de bază evidențiază și necesitatea de a furniza mai mult context sau instrucțiuni despre ce anume vrem să realizăm.

Să încercăm să îl îmbunătățim puțin:

Prompt:

Completează propoziția:

Cerul este

Ieșire:

 atât de frumos astăzi.

Este mai bine? Ei bine, i-am spus modelului să completeze propoziția, deci rezultatul arată mult mai bine deoarece urmează exact ceea ce i-am spus să facă ("completează propoziția"). Această abordare de proiectare a prompturilor optime pentru a instrui modelul să execute o sarcină este ceea ce se numește ingineria prompturilor.

Exemplul de mai sus este o ilustrare de bază a ceea ce este posibil cu LLM-urile de astăzi. LLM-urile de astăzi pot executa tot felul de sarcini avansate care variază de la rezumarea textului la raționamentul matematic la generarea de cod.


Un cuvânt despre setările LLM

Când lucrezi cu prompturi, vei interacționa cu LLM-ul prin intermediul unui API sau direct. Poți configura câțiva parametri pentru a obține rezultate diferite pentru prompturile tale.

Temperatura - Pe scurt, cu cât temperatura este mai mică, cu atât rezultatele sunt mai deterministe în sensul că cel mai probabil următorul token este întotdeauna ales. Creșterea temperaturii ar putea duce la mai multă aleatorie, încurajând ieșiri mai diverse sau creative. În esență, creștem greutățile celorlalți tokeni posibili. În ceea ce privește aplicația, am putea să vrem să folosim o temperatură mai mică pentru ceva precum întrebări-răspunsuri bazate pe fapte pentru a încuraja răspunsuri mai factuale și concise. Pentru generarea de poezii sau alte sarcini creative, ar putea fi benefic să creștem temperatura.

Top_p - În mod similar, cu top_p, o tehnică de eșantionare cu temperatură numită eșantionarea nucleului, poți controla cât de determinist este modelul la generarea unui răspuns. Dacă cauți răspunsuri exacte și factuale, păstrează aceasta la un nivel scăzut. Dacă cauți răspunsuri mai diverse, crește la o valoare mai mare.

Recomandarea generală este să alterezi unul, nu pe ambele.

Înainte de a începe cu câteva exemple de bază, reține că rezultatele tale pot varia în funcție de versiunea LLM pe care o folosești.


Prompturi standard

Am încercat un prompt foarte simplu mai sus. Un prompt standard are următorul format:

<Întrebare>?

Aceasta poate fi formatată într-un format întrebare-răspuns, care este standard în multe seturi de date de întrebări-răspunsuri, după cum urmează:

Î: <Întrebare>?
R:

Având în vedere formatul standard de mai sus, o tehnică populară și eficientă pentru promptare este ceea ce se numește promptarea cu câteva exemple unde furnizăm exemple. Prompturile cu câteva exemple pot fi formatate după cum urmează:

<Întrebare>?
<Răspuns>

<Întrebare>?
<Răspuns>

<Întrebare>?
<Răspuns>

<Întrebare>?

Și poți ghici deja că versiunea sa de format întrebare-răspuns ar arăta astfel:

Î: <Întrebare>?
R: <Răspuns>

Î: <Întrebare>?
R: <Răspuns>

Î: <Întrebare>?
R: <Răspuns>

Î: <Întrebare>?
R:

Reține că nu este obligatoriu să folosești formatul întrebare-răspuns. Formatul depinde de sarcina de la îndemână. De exemplu, poți executa o sarcină simplă de clasificare și să dai exemple care demonstrează sarcina după cum urmează:

Prompt:

Aceasta este grozavă! // Pozitiv
Aceasta este rea! // Negativ
Wow, acel film a fost grozav! // Pozitiv
Ce spectacol oribil! //

Ieșire:

Negativ

Prompturile cu câteva exemple permit învățarea în context, care este capacitatea modelelor de limbaj de a învăța sarcini având doar câteva exemple. Vom vedea mai mult din aceasta în acțiune în ghidurile următoare.


Elementele unui prompt

Pe măsură ce acoperim din ce în ce mai multe exemple și aplicații care sunt posibile cu ingineria prompturilor, vei observa că există anumite elemente care alcătuiesc un prompt.

Un prompt poate conține oricare dintre următoarele componente:

Instrucțiunea - o sarcină sau instrucțiune specifică pe care vrei ca modelul să o execute

Contextul - poate implica informații externe sau context suplimentar care poate ghida modelul către răspunsuri mai bune

Datele de intrare - sunt intrarea sau întrebarea pentru care suntem interesați să găsim un răspuns

Indicatorul de ieșire - indică tipul sau formatul ieșirii.

Nu toate componentele sunt obligatorii pentru un prompt și formatul depinde de sarcina de la îndemână. Vom atinge exemple mai concrete în ghidurile următoare.


Sfaturi generale pentru proiectarea prompturilor

Iată câteva sfaturi de reținut în timp ce proiectezi prompturile tale:

Începe simplu

Pe măsură ce începi să proiectezi prompturi, ar trebui să reții că este un proces iterativ care necesită multă experimentare pentru a obține rezultate optime. Folosirea unui playground simplu precum cel al OpenAI sau Cohere este un punct de plecare bun.

Poți începe cu prompturi simple și să continui să adaugi mai multe elemente și context pe măsură ce vrei rezultate mai bune. Versiunea promptului pe parcurs este vitală din acest motiv. Pe măsură ce citim ghidul, vei vedea multe exemple unde specificitatea, simplitatea și concizia vor da adesea rezultate mai bune.

Când ai o sarcină mare care implică multe subsarcini diferite, poți încerca să împarți sarcina în subsarcini mai simple și să construiești pe măsură ce obții rezultate mai bune. Aceasta evită adăugarea prea multor complexități la procesul de proiectare a prompturilor la început.

Instrucțiunea

Poți proiecta prompturi eficiente pentru diverse sarcini simple folosind comenzi pentru a instrui modelul ce vrei să realizezi precum "Scrie", "Clasifică", "Rezumă", "Traduce", "Ordonează", etc.

Reține că trebuie să experimentezi și mult pentru a vedea ce funcționează cel mai bine. Încearcă diferite instrucțiuni cu diferite cuvinte cheie, contexte și date și vezi ce funcționează cel mai bine pentru cazul tău specific de utilizare și sarcină. De obicei, cu cât contextul este mai specific și relevant pentru sarcina pe care încerci să o execuți, cu atât mai bine. Vom atinge importanța eșantionării și adăugării mai multui context în ghidurile următoare.

Alții recomandă ca instrucțiunile să fie plasate la începutul promptului. De asemenea, se recomandă să se folosească un separator clar precum "###" pentru a separa instrucțiunea și contextul.

De exemplu:

Prompt:

### Instrucțiune ###
Traduce textul de mai jos în spaniolă:

Text: "hello!"

Ieșire:

¡Hola!

Specificitatea

Fii foarte specific despre instrucțiunea și sarcina pe care vrei ca modelul să le execute. Cu cât promptul este mai descriptiv și detaliat, cu atât rezultatele sunt mai bune. Aceasta este deosebit de importantă când ai un rezultat dorit sau un stil de generare pe care îl cauți. Nu există tokeni sau cuvinte cheie specifice care să ducă la rezultate mai bune. Este mai important să ai un format bun și un prompt descriptiv. Furnizarea de exemple în prompt este foarte eficientă pentru a obține ieșirea dorită în formate specifice.

Când proiectezi prompturi, ar trebui să reții și lungimea promptului deoarece există limitări cu privire la cât de lung poate fi acesta. Gândirea despre cât de specific și detaliat ar trebui să fii este ceva de luat în considerare. Prea multe detalii inutile nu sunt neapărat o abordare bună. Detaliile ar trebui să fie relevante și să contribuie la sarcina de la îndemână. Aceasta este ceva cu care va trebui să experimentezi mult. Încurajăm multă experimentare și iterație pentru a optimiza prompturile pentru aplicațiile tale.

Ca exemplu, să încercăm un prompt simplu pentru a extrage informații specifice dintr-o bucată de text.

Prompt:

Extrage numele locurilor din următorul text.

Format dorit:
Loc: <lista_locuri_separate_prin_virgulă>

Intrare: "Deși aceste dezvoltări sunt încurajatoare pentru cercetători, multe sunt încă un mister. 'Adesea avem o cutie neagră între creier și efectul pe care îl vedem în periferie', spune Henrique Veiga-Fernandes, un neuroimunolog de la Centrul Champalimaud pentru Necunoscut din Lisabona. 'Dacă vrem să îl folosim în contextul terapeutic, trebuie să înțelegem mecanismul.'"

Ieșire:

Loc: Centrul Champalimaud pentru Necunoscut, Lisabona

Textul de intrare este obținut din acest articol Nature.

Evită imprecizia

Având în vedere sfaturile de mai sus despre a fi detaliat și îmbunătăți formatul, este ușor să cazi în capcana de a vrea să fii prea inteligent cu prompturile și de a crea potențial descrieri imprecise. Este adesea mai bine să fii specific și direct. Analogia aici este foarte similară cu comunicarea eficientă -- cu cât mai direct, cu atât mai eficient ajunge mesajul.

De exemplu, ai putea fi interesat să înveți conceptul de inginerie a prompturilor. Ai putea încerca ceva precum:

Explică conceptul de inginerie a prompturilor. Păstrează explicația scurtă, doar câteva propoziții, și nu fi prea descriptiv.

Nu este clar din promptul de mai sus câte propoziții să folosești și ce stil. Ai putea încă să obții răspunsuri oarecum bune cu prompturile de mai sus, dar promptul mai bun ar fi unul care este foarte specific, concis și la obiect. Ceva precum:

Folosește 2-3 propoziții pentru a explica conceptul de inginerie a prompturilor unui elev de liceu.

Să faci sau să nu faci?

Un alt sfat comun când proiectezi prompturi este să eviți să spui ce să nu faci, ci să spui ce să faci în schimb. Aceasta încurajează mai multă specificitate și se concentrează pe detaliile care duc la răspunsuri bune de la model.

Iată un exemplu al unui chatbot de recomandări de filme care eșuează exact la ceea ce nu vreau să facă din cauza modului în care am scris instrucțiunea -- concentrându-mă pe ce să nu fac.

Prompt:

Următorul este un agent care recomandă filme unui client. NU ÎNTREBA DESPRE INTERESE. NU ÎNTREBA DESPRE INFORMAȚII PERSONALE.

Client: Te rog să-mi recomanzi un film bazat pe interesele mele.
Agent:

Ieșire:

Sigur, pot să-ți recomand un film bazat pe interesele tale. Ce fel de film ai vrea să vezi? Preferi acțiune, comedie, romantism sau altceva?

Iată un prompt mai bun:

Prompt:

Următorul este un agent care recomandă filme unui client. Agentul este responsabil să recomande un film din filmele de top globale trend. Ar trebui să se abțină de la a întreba utilizatorii despre preferințele lor și să evite să întrebe despre informații personale. Dacă agentul nu are un film de recomandat, ar trebui să răspundă "Îmi pare rău, nu am putut găsi un film de recomandat astăzi.".

Client: Te rog să-mi recomanzi un film bazat pe interesele mele.
Agent:

Ieșire:

Îmi pare rău, nu am nicio informație despre interesele tale. Cu toate acestea, iată o listă cu filmele de top globale trend acum: [lista de filme]. Sper să găsești ceva care să-ți placă!

Unele dintre exemplele de mai sus au fost adoptate din articolul "Cele mai bune practici pentru ingineria prompturilor cu OpenAI API."


Secțiunea următoare (Promptarea de bază)