പ്രോംപ്റ്റ് എഞ്ചിനീയർമാർക്കായുള്ള കോൺടെക്സ്റ്റ് എഞ്ചിനീയറിംഗ്
പ്രോംപ്റ്റ് എഞ്ചിനീയറിംഗ് അവസാനിച്ചു എന്ന് ചിലർ പറയുന്നു. കോൺടെക്സ്റ്റ് എഞ്ചിനീയറിംഗ് അതിനെ മാറ്റിസ്ഥാപിച്ചു എന്നും അവർ പറയുന്നു. ഇത് തെറ്റാണ്.
കോൺടെക്സ്റ്റ് എഞ്ചിനീയറിംഗിന്റെ ഒരു ഭാഗം മാത്രമാണ് പ്രോംപ്റ്റ് എഞ്ചിനീയറിംഗ്. നിങ്ങൾ പറയുന്നതാണ് പ്രോംപ്റ്റിംഗ്. എന്നാൽ ഒരു മോഡൽ കാണുന്നതെല്ലാം കോൺടെക്സ്റ്റ് എഞ്ചിനീയറിംഗിൽ ഉൾപ്പെടുന്നു. ഇതിൽ സിസ്റ്റം പ്രോംപ്റ്റുകൾ (system prompts), ടൂൾ ഡെഫനിഷനുകൾ (tool definitions), റിട്രീവ് ചെയ്ത ഡോക്യുമെന്റുകൾ (retrieved documents), മെമ്മറി എന്നിവ ഉൾപ്പെടുന്നു.
നിങ്ങളുടെ പ്രോംപ്റ്റ് എന്നത് വലിയൊരു പസിലിന്റെ ഒരു ചെറിയ ഭാഗം മാത്രമാണ്. അതിന്റെ വ്യാപ്തി ഇപ്പോൾ വർദ്ധിച്ചിരിക്കുന്നു.
എല്ലാ പ്രശ്നങ്ങളും പരിഹരിക്കാൻ വലിയ കോൺടെക്സ്റ്റ് വിൻഡോകൾ (context windows) ഉപയോഗിക്കാൻ ശ്രമിക്കരുത്. ഒരു മില്യൺ ടോക്കണുകളുടെ വിൻഡോ ഉണ്ടെന്നതിനർത്ഥം ഒരു മില്യൺ ടോക്കണുകളും ഉപയോഗപ്രദമായ ശ്രദ്ധയോടെ (useful attention) മോഡൽ ഉപയോഗിക്കും എന്നല്ല. കൂടുതൽ ഇൻപുട്ടുകൾ നൽകുന്നത് മോഡലിന്റെ പ്രകടനം മോശമാക്കാൻ കാരണമായേക്കാം.
പ്രധാനമായും രണ്ട് പ്രശ്നങ്ങൾ നിങ്ങൾ ശ്രദ്ധിക്കണം:
• Lost in the middle: പ്രോംപ്റ്റുകളുടെ തുടക്കത്തിലും അവസാനത്തിലും ആണ് മോഡലുകൾ ഏറ്റവും കൂടുതൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത്. പ്രധാനപ്പെട്ട വിവരങ്ങൾ നടുവിൽ വരുമ്പോൾ അവ കൈകാര്യം ചെയ്യാൻ മോഡലുകൾ പ്രയാസപ്പെടുന്നു. • Context rot: ഇൻപുട്ടിന്റെ ദൈർഘ്യം കൂടുമ്പോൾ യുക്തിചിന്തയും (reasoning) വിവരങ്ങൾ ഓർത്തെടുക്കാനുള്ള കഴിവും (recall) കുറയുന്നു. വിൻഡോ നിറയുമ്പോൾ ലളിതമായ ജോലികൾ പോലും മോഡലിന് പ്രയാസകരമായി മാറുന്നു.
ജോലി കൃത്യമായി ചെയ്യാൻ ആവശ്യമായ ഏറ്റവും കുറഞ്ഞ എണ്ണം ഉയർന്ന സിഗ്നൽ നൽകുന്ന ടോക്കണുകൾ (high-signal tokens) കണ്ടെത്തുക എന്നതാണ് ലക്ഷ്യം. നിങ്ങളുടെ കോൺടെക്സ്റ്റ് വിൻഡോയെ ഒരു ബജറ്റ് പോലെ കാണുക.
നിങ്ങളുടെ ബജറ്റ് നിയന്ത്രിക്കാൻ ഈ ആറ് രീതികൾ ഉപയോഗിക്കുക:
• Attention budgeting: അനാവശ്യമായതും ആവർത്തന സ്വഭാവമുള്ളതുമായ ടെക്സ്റ്റുകൾ ഒഴിവാക്കുക. ഏറ്റവും പ്രധാനപ്പെട്ട വിവരങ്ങൾ മാത്രം ഉപയോഗിക്കുക. • Retrieval placement: പ്രസക്തമായ വിവരങ്ങൾ പ്രോംപ്റ്റിന്റെ തുടക്കത്തിലോ അവസാനത്തിലോ നൽകുക. പ്രധാനപ്പെട്ട വിവരങ്ങൾ നടുവിൽ നൽകുന്നത് ഒഴിവാക്കുക. • Tool-result formatting: വിവരങ്ങൾ ചുരുക്കി നൽകുക. വലിയ API ഒബ്ജക്റ്റുകൾ നേരിട്ട് വിൻഡോയിലേക്ക് നൽകരുത്. • Schema design: സ്ട്രക്ചർ ചെയ്ത ഔട്ട്പുട്ടുകൾ (structured outputs) ഉപയോഗിക്കുക. പിശകുകൾ ഒഴിവാക്കാൻ നെസ്റ്റിംഗ് ലെവലുകൾ (nesting levels) കുറയ്ക്കുക. • System vs. turn separation: അടിസ്ഥാന നിയമങ്ങൾ സിസ്റ്റം പ്രോംപ്റ്റിൽ സൂക്ഷിക്കുക. പ്രത്യേക വിവരങ്ങൾ യൂസർ ടേണുകളിൽ (user turns) നൽകുക. • Memory and compaction: വിവരങ്ങൾ വിൻഡോയ്ക്ക് പുറത്ത് സൂക്ഷിക്കുക. സംഭാഷണം നിലനിർത്താൻ പഴയ വിവരങ്ങൾ സംഗ്രഹിക്കുക (summarize).
കോൺടെക്സ്റ്റ് എഞ്ചിനീയറിംഗ് എന്നത് വെറും RAG മാത്രമല്ല. അത് വിവരങ്ങൾ എവിടെ നൽകണം, എത്ര നൽകണം എന്നതിനെക്കുറിച്ചാണ്. നിങ്ങൾ ഇതിനകം മികച്ച രീതിയിൽ പ്രോംപ്റ്റ് ചെയ്യാൻ അറിയുന്നവരാണെങ്കിൽ, നിങ്ങൾ പൂജ്യത്തിൽ നിന്ന് തുടങ്ങേണ്ടതില്ല. നിങ്ങളുടെ പ്രോംപ്റ്റ് ഉപയോഗിക്കുന്ന ബജറ്റ് എങ്ങനെ നിയന്ത്രിക്കാം എന്ന് നിങ്ങൾ പഠിക്കുകയാണ് ചെയ്യുന്നത്.
Source: https://dev.to/anoopk/context-engineering-for-people-who-already-know-how-to-prompt-2pj1
Optional learning community: https://t.me/GyaanSetuAi