ഒരു ഓട്ടോണമസ് ഏജന്റിന് വേണ്ടി പുൾ റിക്വസ്റ്റ് (Pull Request) ഇല്ല
പരമ്പരാഗത സുരക്ഷാ പരിശോധനകൾ ഒരു 'diff'-നെ ആശ്രയിച്ചാണ് നടക്കുന്നത്. ഒരാൾ ഒരു പുൾ റിക്വസ്റ്റ് (pull request) തുറക്കുന്നു. മറ്റൊരാൾ അത് വായിക്കുന്നു. പ്രൊഡക്ഷനിലുള്ള കോഡ് നിങ്ങൾ പരിശോധിച്ച കോഡുമായി പൊരുത്തപ്പെടുന്നു.
ഓട്ടോണമസ് ഏജന്റുകൾ ഈ മാതൃകയെ തകർക്കുന്നു.
ഒരു ഏജന്റ് റൺടൈമിൽ (runtime) പ്ലാൻ ചെയ്യുകയും ടൂളുകൾ ഉപയോഗിക്കുകയും ചെയ്യുന്നു. ഇത് ഒരു കമ്മിറ്റിലൂടെ (commit) പ്രവർത്തനങ്ങൾ അയക്കുന്നില്ല. ഇത് പ്രവർത്തിച്ചുകൊണ്ടിരിക്കുമ്പോൾ തന്നെ തീരുമാനങ്ങൾ എടുക്കുന്നു. നിങ്ങൾ ആപ്ലിക്കേഷൻ കോഡ് മാത്രം പരിശോധിക്കുകയാണെങ്കിൽ, യഥാർത്ഥ അപകടസാധ്യത നിങ്ങൾ കാണാതെ പോകും.
ഒരു ഏജന്റ് വെറും കോഡ് മാത്രമല്ല. അത് ഒരു റൺടൈം കോൺഫിഗറേഷൻ (runtime configuration) കൂടിയാണ്. ഈ കോൺഫിഗറേഷനിൽ ഇവ ഉൾപ്പെടുന്നു:
• സിസ്റ്റം പ്രോംപ്റ്റ് (The system prompt) • ഹാർനസ് അല്ലെങ്കിൽ ലൂപ്പ് (The harness or loop) • ടൂൾ സർഫസ് (The tool surface) • മെമ്മറിയും ഐഡന്റിറ്റിയും (Memory and identity) • നെറ്റ്വർക്ക് എഗ്രസ് പോളിസികൾ (Network egress policies) • കണ്ടെയ്നർ ഇമേജുകൾ (Container images)
ഒരേ മോഡൽ ഉപയോഗിക്കുന്ന രണ്ട് ഏജന്റുകൾ പോലും ഈ ക്രമീകരണങ്ങൾ അനുസരിച്ച് വ്യത്യസ്തമായി പ്രവർത്തിച്ചേക്കാം. മോഡൽ മാറ്റമില്ലാതെ തുടരുന്നു, എന്നാൽ കോൺഫിഗറേഷൻ എല്ലാം മാറ്റിമറിക്കുന്നു.
പല ടീമുകളും സിസ്റ്റം പ്രോംപ്റ്റുകളെ വെറും ടെക്സ്റ്റ് ബോക്സ് സെറ്റിംഗുകളായിട്ടാണ് കാണുന്നത്. അവർ ഡാഷ്ബോർഡിൽ അവ എഡിറ്റ് ചെയ്യുന്നു. ഇത് ഒരു തെറ്റാണ്. ഒരു വരിയിലെ മാറ്റം പോലും സുരക്ഷാ കവചങ്ങളെ (guardrails) ഇല്ലാതാക്കിയേക്കാം. എഡിറ്റ് ചെയ്യാവുന്ന ഒരു പ്രോംപ്റ്റ് എന്നത് പരിശോധിക്കപ്പെടാത്ത ഒരു കോഡ് പാത്ത് (code path) ആണ്.
യഥാർത്ഥ സംഭവങ്ങൾ ഇത് തെളിയിക്കുന്നു:
• ഒരു ബോട്ട് ആഴ്ചകളോളം ഭൂവുടമകൾക്ക് നിയമവിരുദ്ധമായ ഉപദേശങ്ങൾ നൽകി. • ഒരു പ്രോംപ്റ്റ് അപ്ഡേറ്റ് കാരണം സപ്പോർട്ട് ബോട്ട് ഉപഭോക്താക്കളോട് ചീത്തവിളിക്കാൻ തുടങ്ങി. • നിയമങ്ങൾ മറികടക്കാൻ ദുരുദ്ദേശ്യപരമായ ഫയലുകൾ അദൃശ്യമായ അക്ഷരങ്ങൾ (invisible characters) ഉപയോഗിച്ചു.
ഇവ മോഡലിന്റെ പരാജയങ്ങളല്ലായിരുന്നു. ആരും പരിശോധിക്കാത്ത കോൺഫിഗറേഷൻ മാറ്റങ്ങളായിരുന്നു അവ.
നിങ്ങൾ കോൺഫിഗറേഷനെ കോഡ് പോലെ തന്നെ കാണണം.
നിങ്ങളുടെ സിസ്റ്റം പ്രോംപ്റ്റുകളും ഹാർനസ് കോൺഫിഗറേഷനുകളും വെർഷൻ കൺട്രോളിൽ (version control) ഉൾപ്പെടുത്തുക. അവ പുൾ റിക്വസ്റ്റുകൾ വഴി മാത്രം മാറ്റുക. എന്ത് മാറ്റമാണ് സംഭവിച്ചതെന്ന് കാണാൻ 'diff'-കൾ ഉപയോഗിക്കുക.
നിങ്ങളുടെ ഡിപ്ലോയ് ചെയ്ത കോൺഫിഗറേഷനായി ഒരു കണ്ടന്റ് ഹാഷ് (content hash) ഉപയോഗിക്കുക. ഈ ഹാഷിൽ പ്രോംപ്റ്റ് വേർഷൻ, മോഡൽ ഐഡി, കണ്ടെയ്നർ ഡൈജസ്റ്റ് എന്നിവ ഉൾപ്പെടുത്തണം. നിങ്ങൾ പ്രോംപ്റ്റ് മാറ്റുകയാണെങ്കിൽ, ഏജന്റിന്റെ ഐഡന്റിറ്റിയും മാറുന്നു. ഒരു പ്രോംപ്റ്റ് നിശബ്ദമായി മാറ്റാൻ നിങ്ങൾക്ക് കഴിയില്ല.
ഏജന്റ് സർഫസ്സിൽ 'ഡ്രിഫ്റ്റ് ഡിറ്റക്ഷൻ' (drift detection) നടപ്പിലാക്കുക. ഹോസ്റ്റ് (host) മാത്രം നിരീക്ഷിക്കരുത്. MCP സെർവർ ലിസ്റ്റുകളും ആ ഏജന്റിനായുള്ള പ്രത്യേക എഗ്രസ് പോളിസികളും നിരീക്ഷിക്കുക.
ലോഗ് ചെയ്യുമ്പോൾ (logging), ഈ രണ്ട് കാര്യങ്ങൾ ശ്രദ്ധിക്കുക:
• ഡിസിഷൻ-ടൈം കോൺടെക്സ്റ്റ് സൈസ് (Decision-time context size): പ്രവർത്തിച്ച സമയത്ത് മോഡലിന് എത്രത്തോളം വിവരങ്ങൾ ലഭ്യമായിരുന്നു? • പാരന്റ് പ്രോംപ്റ്റ് (The parent prompt): മൾട്ടി-ഏജന്റ് സിസ്റ്റങ്ങളിൽ, വിളിച്ച ഏജന്റ് (calling agent) എന്താണ് അയച്ചത്?
നിങ്ങൾക്ക് പുതിയ ടൂളുകൾ ആവശ്യമില്ല. നിലവിലുള്ള വെർഷൻ കൺട്രോളും സ്ട്രക്ചേർഡ് ലോഗിംഗും ഉപയോഗിക്കുക. അവ ശരിയായ ദിശയിലേക്ക് തിരിച്ചുവിടുക മാത്രം ചെയ്താൽ മതി.
നിങ്ങൾ നിങ്ങളുടെ സിസ്റ്റം പ്രോംപ്റ്റുകൾ വെർഷൻ കൺട്രോൾ ചെയ്യുകയും അവ പരിശോധിക്കുകയും ചെയ്യുന്നുണ്ടോ? അതോ കൺസോൾ ആക്സസ് ഉള്ള ആർക്കും യാതൊരു അടയാളവും ഇല്ലാതെ അവ മാറ്റാൻ കഴിയുമോ?
Optional learning community: https://t.me/GyaanSetuAi
