Prompt și context

From Systems analysis Wiki
Jump to navigation Jump to search

Prompt-ul și contextul sunt concepte fundamentale în prompt engineering pentru modelele lingvistice de mari dimensiuni (LLM).

Contextul este o componentă esențială a prompt-ului, determinând capacitatea LLM de a genera răspunsuri precise, relevante și utile. Prompt engineering-ul eficient constă în mare măsură în arta colectării, filtrării, structurării și prezentării contextului corect către model la momentul potrivit, depășind totodată limitările LLM-urilor moderne.

Definiția Prompt-ului

Prompt-ul (engl. prompt) — reprezintă setul complet de date de intrare furnizat unui LLM pentru generarea unui răspuns. Nu este doar o întrebare sau o comandă, ci un text structurat care poate include:

  • Instrucțiuni: Indicații directe către model despre ce trebuie făcut, în ce format, stil sau ton.
  • Interogarea principală (Query): Întrebarea directă a utilizatorului sau descrierea sarcinii principale.
  • Contextul: Informații suplimentare necesare pentru executarea corectă a interogării.
  • Exemple (Few-shot examples): Demonstrarea formatului sau stilului de răspuns dorit pe sarcini similare.

Calitatea și completitudinea prompt-ului determină direct relevanța, precizia și utilitatea răspunsului LLM.

Definiția Contextului

Contextul în cadrul prompt engineering-ului — reprezintă orice informație din interiorul prompt-ului care ajută modelul să înțeleagă mai bine sarcina, specificul situației sau așteptările utilizatorului, dar care nu face parte din datele de antrenament inițiale ale acestuia. Contextul furnizează detalii situaționale necesare pentru generarea unui răspuns adecvat.

Contextul poate include:

  • Istoricul dialogului anterior (în chatbot-uri).
  • Date extrase din surse externe (documente, baze de date, pagini web) — baza RAG.
  • Informații despre utilizator (profil, preferințe).
  • Detalii specifice ale sarcinii sau situației curente.
  • Exemple de executare a unor sarcini similare (ca parte a few-shot prompting).

Este important să se facă distincția între contextul furnizat în prompt și cunoștințele generale dobândite de model în timpul pre-antrenării sale. Prompt engineering-ul se concentrează pe furnizarea eficientă a contextului situațional.

Interrelație și Influență

Prompt-ul și contextul – sunt concepte fundamentale în funcționarea transformer-elor, determinând modul în care modelul percepe datele de intrare și pe baza a ce generează rezultatul. Din punct de vedere arhitectural, un transformer nu distinge în mod special „prompt-ul" de „context" – ambele sunt părți ale secvenței de intrare de token-uri, care sunt transformate în embedding-uri, îmbogățite cu informații poziționale și procesate în ansamblu de straturile de self-attention.

Prompt-ul și contextul sunt inseparabil legate: contextul este o componentă constitutivă a prompt-ului.

  • Contextul formează prompt-ul: Inginerul selectează și structurează contextul relevant pentru a fi inclus în prompt.
  • Contextul ghidează modelul: Informațiile furnizate permit LLM-ului să restrângă spațiul răspunsurilor posibile, să se concentreze pe aspectele relevante și să evite halucinațiile.
  • Calitatea contextului determină calitatea răspunsului: Un context insuficient, irelevant sau contradictoriu conduce la răspunsuri imprecise, generale sau eronate. Un context precis și complet sporește specificitatea și utilitatea generării.
  • Influența asupra interpretării instrucțiunilor: Contextul poate clarifica sau modifica interpretarea instrucțiunilor generale din prompt.

Eficacitatea prompt-ului depinde în mare măsură de cât de reușit a putut inginerul să colecteze, să filtreze și să prezinte contextul relevant modelului.

Tipuri de Context

Contextul poate fi clasificat după diferite criterii:

După sursă:

  • Furnizat de utilizator: Intrarea explicită a utilizatorului, întrebarea sa sau descrierea sarcinii.
  • Din istoricul dialogului: Mesajele anterioare ale utilizatorului și ale asistentului (memorie pe termen scurt).
  • Extras (Retrieved): Date din surse externe (documente, baze de date, web) cu ajutorul RAG.
  • Din profil/baza de cunoștințe: Informații pe termen lung despre utilizator sau domeniu.
  • Static/Instructiv: Informații incluse de inginer în șablonul prompt-ului (instrucțiuni, exemple, definirea rolurilor).

După dinamism:

  • Context static: Parte invariabilă a prompt-ului (instrucțiuni, definiții, exemple). Definește sarcina generală.
  • Context dinamic: Informații care se modifică de la o interogare la alta (datele utilizatorului, rezultatele RAG, ora curentă). Furnizează detalii specifice.

După durata de stocare (Memorie):

  • Context pe termen scurt: Istoricul sesiunii curente de dialog.
  • Context pe termen lung: Date salvate despre utilizator sau interacțiunile anterioare, care necesită mecanisme de stocare și recuperare.

Gestionarea Contextului

Gestionarea eficientă a contextului reprezintă o sarcină-cheie în prompt engineering, mai ales în contextul limitărilor ferestrei de context a LLM-urilor. Principalele metode:

  • RAG: Cea mai răspândită metodă pentru lucrul cu volume mari de informații. Permite găsirea dinamică și includerea în prompt doar a celor mai relevante fragmente dintr-o bază de cunoștințe extinsă. Necesită o bază de date vectorială și mecanisme eficiente de căutare (lexicală sau semantică).
  • Chunking: Împărțirea documentelor mari în fragmente semantic corelate sau de dimensiune fixă pentru indexare și recuperare ulterioară prin RAG.
  • Sumarizarea: Comprimarea istoricului lung al dialogului sau a documentelor voluminoase pentru transmiterea sensului principal în fereastra de context limitată.
  • Gestionarea Memoriei (Memory Management): Utilizarea diverselor strategii pentru stocarea și recuperarea istoricului dialogului în chatbot-uri și agenți (de exemplu, ConversationBufferMemory, ConversationSummaryBufferMemory în LangChain).
  • Fereastra Glisantă (Sliding Window): Păstrarea în context doar a ultimelor N mesaje ale dialogului.
  • Filtrarea și Prioritizarea: Selectarea celor mai relevante fragmente de context pe baza importanței lor (de exemplu, prin scoruri de relevanță obținute la căutare) înainte de asamblarea prompt-ului final.

Rolul Contextului în Prompt Engineering

  • Creșterea Relevanței: Contextul permite modelului să genereze răspunsuri care corespund cu precizie interogării și situației utilizatorului.
  • Reducerea Halucinațiilor: Furnizarea de informații factuale (prin RAG) determină modelul să se bazeze pe acestea, în loc să inventeze fapte.
  • Personalizarea: Contextul despre utilizator (preferințe, istoric) permite adaptarea răspunsurilor.
  • Gestionarea Stării: În dialoguri și procese cu mai mulți pași, contextul (istoricul) asigură continuitatea și conștientizarea de către model a pașilor anteriori.
  • Depășirea Limitărilor Cunoștințelor Modelului: RAG permite modelului să răspundă la întrebări despre evenimente petrecute după antrenarea sa, sau despre date specifice/private.

Limitări

  • Limita Ferestrei de Context: În ciuda creșterii până la 1-2 milioane de token-uri la modelele moderne, procesarea unor astfel de volume poate fi costisitoare și lentă. Necesită strategii eficiente de comprimare și selecție (RAG, sumarizare).
  • Găsirea Contextului Relevant: Eficacitatea RAG depinde de calitatea căutării. Un context extras incorect poate deruta modelul („garbage in – garbage out").
  • „Valea Indiferenței" (Valley of Meh): Informațiile aflate la mijlocul unui prompt foarte lung pot fi ignorate de model. Necesită structurarea prompt-ului (de exemplu, „tehnica sandwich").
  • Riscul Injecției de Context: Dacă contextul este extras din surse nesigure (de exemplu, pagini web), acesta poate conține instrucțiuni malițioase (prompt injection).

Bibliografie

  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
  • Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
  • Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
  • Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.

Vezi și

  • Modele lingvistice de mari dimensiuni
  • Fereastra de context
  • Baze de date vectoriale
  • LangChain