ഒരേസമയം ഒരുപാട് കാര്യങ്ങൾ ചെയ്യാൻ ആവശ്യപ്പെടുമ്പോൾ ലാർജ് ലാംഗ്വേജ് മോഡലുകൾ (Large language models) പാളിപ്പോകാറുണ്ട്. ഒരു അമ്പത് പേജുള്ള PDF ചാറ്റ് വിൻഡോയിലേക്ക് ഇട്ട് ഒരേസമയം ഒരു ഘടനാപരമായ വിശകലനവും (structured analysis), റിസ്ക് അസസ്‌മെന്റും (risk assessment), എക്സിക്യൂട്ടീവ് സമ്മറിയും (executive summary) ആവശ്യപ്പെട്ടാൽ ലഭിക്കുന്ന ഫലം സാധാരണയായി അപൂർണ്ണമോ, ആശയക്കുഴപ്പത്തിലോ അല്ലെങ്കിൽ തികച്ചും തെറ്റോ ആയിരിക്കും. ഇതിന് മെക്കാനിക്കൽ ആയ ഒരു സമീപനമാണ് നല്ലത്. ജോലിയെ വ്യത്യസ്ത ഘട്ടങ്ങളായി തിരിക്കുക. ആദ്യ ഘട്ടത്തിന്റെ ഔട്ട്പുട്ട് നേരിട്ട് രണ്ടാമത്തെ ഘട്ടത്തിലേക്ക് നൽകുക, അങ്ങനെ തുടരുക. Anthropic ഇതിനെ 'prompt chaining' എന്ന് വിളിക്കുന്നു. Google ഇതിനെ 'sequential pipeline' എന്ന് വിളിക്കുന്നു. രണ്ട് പേരുകളും ഒരേ കാര്യത്തെയാണ് സൂചിപ്പിക്കുന്നത്: ഓരോ സ്റ്റേഷനും ഓരോ പ്രത്യേക മാറ്റം കൈകാര്യം ചെയ്യുന്ന ഒരു അസംബ്ലി ലൈൻ പോലെ.

ഇത് പ്രായോഗികമായി എങ്ങനെയിരിക്കും

ഒരു വലിയ പ്രോംപ്റ്റിന് പകരം, നിങ്ങൾ ചെറിയതും ശ്രദ്ധ കേന്ദ്രീകരിച്ചതുമായ ഒരു കൂട്ടം ഘട്ടങ്ങൾ നിർമ്മിക്കുന്നു. വെണ്ടർ സെക്യൂരിറ്റി അസസ്‌മെന്റുകൾ (vendor security assessments) പ്രോസസ്സ് ചെയ്യുന്ന ഒരു കംപ്ലയൻസ് ടീമിനെ സങ്കൽപ്പിക്കുക. ഘട്ടം ഒന്ന്: സ്കാൻ ചെയ്ത ഒരു PDF-ൽ നിന്ന് ടെക്സ്റ്റ് വേർതിരിച്ചെടുക്കുന്നു. ഘട്ടം രണ്ട്: എൻക്രിപ്ഷൻ സ്റ്റാൻഡേർഡുകളെക്കുറിച്ചും ആക്സസ് കൺട്രോളുകളെക്കുറിച്ചുമുള്ള പരാമർശങ്ങൾ തിരിച്ചറിയുന്നു. ഘട്ടം മൂന്ന്: ഈ കണ്ടെത്തലുകളെ ഒരു ഇന്റേണൽ ചെക്ക്‌ലിസ്റ്റുമായി താരതമ്യം ചെയ്യുന്നു. ഘട്ടം നാല്: സെക്യൂരിറ്റി ലീഡിന് വേണ്ടി ഒരു ചെറിയ മെമ്മോ തയ്യാറാക്കുന്നു. ഒരു ഏജന്റ് PDF-നെ ടെക്സ്റ്റാക്കി മാറ്റുന്നു. അടുത്ത ഏജന്റ് ആ ടെക്സ്റ്റിൽ നിന്ന് പ്രത്യേക വിവരങ്ങൾ എടുക്കുന്നു. അവസാന ഏജന്റ് ആ വിവരങ്ങൾ ഉപയോഗിച്ച് ഒരു സമ്മറി എഴുതുന്നു. ഇതിൽ ഒരു ഘട്ടവും വലിയ കാര്യങ്ങളല്ല, അവ ഒരേസമയം പല ജോലികൾ ചെയ്യുന്നില്ല. ഓരോ ഭാഗവും ഒരു ജോലി കൃത്യമായി ചെയ്യുന്നു.

അതുകൊണ്ടാണ് അസംബ്ലി ലൈൻ ഉപമ ഇവിടെ ശരിയാകുന്നത്. ഒരു ഫാക്ടറിയിൽ ഒരു തൊഴിലാളി ഒരു കാർ മുഴുവനായി നിർമ്മിക്കുന്നില്ല. സ്പെഷ്യലൈസേഷൻ (Specialization) ഗുണനിലവാരം നിലനിർത്താനും പിഴവുകൾ കുറയ്ക്കാനും സഹായിക്കുന്നു. ഇതേ ലോജിക് തന്നെയാണ് ലാംഗ്വേജ് മോഡലുകൾക്കും ബാധകമാകുന്നത്. JSON എക്സ്ട്രാക്ഷൻ (JSON extraction) മാത്രം ആവശ്യപ്പെടുന്ന ഒരു പ്രോംപ്റ്റിന്, ഒരേസമയം അഭിപ്രായങ്ങളും ഫോർമാറ്റിംഗും ആവശ്യപ്പെടുന്ന പ്രോംപ്റ്റിനെ അപേക്ഷിച്ച് ഹാലൂസിനേഷൻ (hallucinate) നടത്താനുള്ള സാധ്യത കുറവാണ്.

ഊഹങ്ങൾക്ക് പകരം ഗേറ്റുകൾ (Gates) നിർമ്മിക്കുക

ഏതൊരു ചെയിനിലെയും ഏറ്റവും ദുർബലമായ ഭാഗം വിവരങ്ങൾ കൈമാറുന്ന ഘട്ടമാണ് (handoff). ഒരു മോഡൽ മര്യാദയോടെ നിരസിക്കുകയോ, JSON-ന് പകരം മാർക്ക്ഡൗൺ (markdown) നൽകുകയോ, അല്ലെങ്കിൽ അപൂർണ്ണമായ മറുപടി നൽകുകയോ ചെയ്തേക്കാം. ഈ തെറ്റായ വിവരങ്ങൾ രണ്ടാമത്തെ ഘട്ടത്തിലേക്ക് പോയാൽ മുഴുവൻ ചെയിനും തകരും. ഇതിനുള്ള പരിഹാരം ഒരു 'ഗേറ്റ്' (gate) ആണ്.

ഒരു ഗേറ്റ് എന്നത് ഒരു മോഡൽ കോൾ അല്ല. അത് ലളിതമായ ഒരു കോഡ് ആണ്. ഘട്ടങ്ങൾക്കിടയിൽ പ്രവർത്തിക്കുന്ന ഒരു ചെറിയ സ്ക്രിപ്റ്റ് നിങ്ങൾ എഴുതുന്നു. ഔട്ട്പുട്ടിന്റെ നീളം പരിശോധിക്കാനോ അത് ശൂന്യമല്ലെന്ന് ഉറപ്പാക്കാനോ ഇത് ഉപയോഗിക്കാം. മൂന്നാമത്തെ ഘട്ടം പ്രതീക്ഷിക്കുന്ന കീകൾ (keys) ശരിയാണോ എന്ന് ഉറപ്പാക്കാൻ ഒരു JSON schema validation നടത്താം. അടുത്ത പ്രോംപ്റ്റ് തയ്യാറാക്കുന്നതിന് മുമ്പ് ഒരു ഇമെയിൽ അഡ്രസ്സോ തീയതിയോ ഉണ്ടോ എന്ന് ഒരു regex ചെക്ക് വഴി പരിശോധിക്കാം. തെറ്റായ ഔട്ട്പുട്ടുകൾക്കായി പണം പാഴാക്കുന്നതിന് മുമ്പ് തന്നെ ഇത് പിഴവുകൾ തടയുന്നു. ഒരു ഗേറ്റിന് വളരെ കുറഞ്ഞ കമ്പ്യൂട്ടിംഗ് സമയം മാത്രമേ ആവശ്യമുള്ളൂ. എന്നാൽ ഒരു മോഡൽ കോൾ പരാജയപ്പെട്ടാൽ അത് ടോക്കണുകൾക്കും (tokens), ലേറ്റൻസിക്കും (latency), നിങ്ങളുടെ സമയത്തിനും നഷ്ടമുണ്ടാക്കും.

ഫാക്ടറിയിലെ ഒരു ക്വാളിറ്റി ചെക്ക്‌പോയിന്റ് പോലെ ഇതിനെ കരുതുക. സാധനങ്ങൾ എണ്ണാൻ നിങ്ങൾക്ക് AI ആവശ്യമില്ല. ഒരു റൂൾ (ruler) മതിയാകും.

എപ്പോൾ ചെയിൻ ചെയ്യണം, എപ്പോൾ നിർത്തണം

എല്ലാ പ്രശ്നങ്ങൾക്കും പ്രോംപ്റ്റ് ചെയിനിംഗ് അനുയോജ്യമല്ല. ജോലികൾ കൃത്യമായതും ആവർത്തന സ്വഭാവമുള്ളതുമാണെങ്കിൽ ഇത് ഉപയോഗിക്കുക. പ്രതിമാസ സാമ്പത്തിക റിപ്പോർട്ടുകൾ, സ്റ്റാൻഡേർഡ് ആയ കരാർ അവലോകനങ്ങൾ (contract review), ലോഗ് അനാലിസിസ് പൈപ്പ്‌ലൈനുകൾ (log analysis pipelines) എന്നിവ ഇതിന് നല്ല ഉദാഹരണങ്ങളാണ്. ഒരു നടപടിക്രമം ചെക്ക്‌ലിസ്റ്റ് പോലെ എഴുതാൻ കഴിയുമെങ്കിൽ, നിങ്ങൾക്ക് അത് ചെയിൻ ചെയ്യാൻ സാധിക്കും. സങ്കീർണ്ണമായ ജോലികൾക്ക് ഉയർന്ന കൃത്യത ആവശ്യപ്പെടുമ്പോഴും ചെയിനിംഗ് ഉപയോഗിക്കണം. ഒരു പ്രശ്നത്തെ ഘട്ടങ്ങളായി തിരിക്കുന്നത് മോഡലിനെ ഓരോ ലോജിക്കൽ ലെയറുകൾ വീതം കൈകാര്യം ചെയ്യാൻ നിർബന്ധിക്കുന്നു. കൂടാതെ, വലിയ പ്രോംപ്റ്റുകളെ അപേക്ഷിച്ച് ചെയിനുകൾ ഡിബഗ് (debug) ചെയ്യാൻ എളുപ്പമാണ്. സമ്മറി തെറ്റാണെങ്കിൽ, എക്സ്ട്രാക്ഷൻ പരിശോധിക്കുക. എക്സ്ട്രാക്ഷൻ തെറ്റാണെങ്കിൽ, സോഴ്സ് ടെക്സ്റ്റ് പരിശോധിക്കുക. പരിശോധിക്കാൻ നിങ്ങൾക്ക് ഇടക്കാല വിവരങ്ങൾ (intermediate artifacts) ലഭ്യമാണ്.

ഘട്ടങ്ങൾ മുൻകൂട്ടി അറിയാത്ത സാഹചര്യങ്ങളിൽ പ്രോംപ്റ്റ് ചെയിനിംഗ് ഒഴിവാക്കുക. പര്യവേഷണ ഗവേഷണം (Exploratory research), ഓപ്പൺ-എൻഡഡ് ബ്രെയിൻസ്റ്റോമിംഗ് (open-ended brainstorming), അല്ലെങ്കിൽ അന്വേഷണാത്മക ജോലികൾ എന്നിവ ഒരു നേർരേഖയിൽ പോകുന്നില്ല. വേഗതയാണ് നിങ്ങളുടെ ഏക മുൻഗണനയെങ്കിൽ ഇത് ഒഴിവാക്കുക. ചെയിനുകൾ സീരിയൽ ആണ്; ഒന്നാമത്തെ ഘട്ടം കഴിയാതെ രണ്ടാമത്തേത് തുടങ്ങാൻ കഴിയില്ല. നിങ്ങളുടെ ഘട്ടങ്ങൾ പരസ്പരം ആശ്രയിച്ചല്ലെങ്കിൽ, അവ പാരലൽ ആയി (parallel) പ്രവർത്തിപ്പിക്കുക. ഒരേ ഡോക്യുമെന്റിന്റെ മൂന്ന് സ്വതന്ത്രമായ വിവർത്തനങ്ങൾ ചെയിൻ ചെയ്യേണ്ട ആവശ്യമില്ല.

റിജിഡിറ്റി ട്രാപ്പ് (The Rigidity Trap)

ഈ ഘടനയുടെ പകരമായി ലഭിക്കുന്ന ദോഷം അതിന്റെ കർക്കശതയാണ് (rigidity). ഒരു നിശ്ചിത ചെയിനിന് പുതിയ സാഹചര്യങ്ങളുമായി പൊരുത്തപ്പെടാൻ കഴിയില്ല. ഒരു വെണ്ടർ ആറ് ഫീൽഡുകളുള്ള ഒരു ഫോം അയക്കുകയും നിങ്ങളുടെ ഷീമ വാലിഡേഷൻ ഗേറ്റ് അഞ്ച് ഫീൽഡുകൾ മാത്രം പ്രതീക്ഷിക്കുകയും ചെയ്താൽ, പ്രക്രിയ അവിടെ നിൽക്കും. ഒരു ഉപയോക്താവ് PDF-ന് പകരം ഒരു വേർഡ് ഡോക്യുമെന്റ് അപ്‌ലോഡ് ചെയ്താൽ, ആദ്യ ഘട്ടം പരാജയപ്പെടുകയും ബാക്കി ചെയിനിന് ഒന്നും ചെയ്യാൻ കഴിയാതെ വരികയും ചെയ്യും.

ഇതിലും മോശമായത്, പിഴവുകൾ പടർന്നുപന്തലിക്കും എന്നതാണ്. തുടക്കത്തിൽ സംഭവിക്കുന്ന ഒരു തെറ്റ് മുഴുവൻ ചെയിനിലൂടെയും ഒഴുകുന്നു. ഒരു PDF എക്സ്ട്രാക്ടർ സാമ്പത്തിക കണക്കിലെ ഒരു നെഗറ്റീവ് ചിഹ്നം ഒഴിവാക്കിയാൽ, ബാക്കിയുള്ള എല്ലാ ഘട്ടങ്ങളും ആ തെറ്റായ സംഖ്യയെ