Kitchen Nightmares: LangChain ഏജന്റ്സ് എഡിഷൻ
റെസിപ്പികൾ വിശകലനം ചെയ്യാനും (parse) മീൽ പ്ലാനുകൾ തയ്യാറാക്കാനും വേണ്ടി ഞാൻ ഒരു ഹെൽത്ത് ആപ്പ് നിർമ്മിച്ചു.
വെബ് ആപ്പിനായി ഞാൻ FastAPI-യും React-ഉം ഉപയോഗിച്ചു. ഏജന്റുകൾക്കായി LangChain ഉപയോഗിച്ചു. എന്റെ ഏജന്റുകൾ എന്താണ് ചെയ്യുന്നതെന്ന് കാണാൻ ഞാൻ LangSmith ഉപയോഗിച്ചു.
ലക്ഷ്യം ലളിതമായിരുന്നു. ഒരു ഉപയോക്താവ് ഒരു URL നൽകുന്നു. ആപ്പ് റെസിപ്പി എടുക്കുകയും അതിനെ മെയിൻ ഡിഷുകൾ (mains), സൈഡ് ഡിഷുകൾ (sides), സോസുകൾ (sauces) എന്നിങ്ങനെ വിവിധ ഭാഗങ്ങളായി തിരിക്കുകയും ചെയ്യുന്നു. ഉപയോക്താക്കൾക്ക് ഇവ കൂട്ടിച്ചേർത്ത് ഭക്ഷണക്രമം ഉണ്ടാക്കാനോ കലോറി ട്രാക്ക് ചെയ്യാനോ സാധിക്കും.
ഏജന്റുകളുടെ വിശ്വാസ്യതയുമായി (reliability) ബന്ധപ്പെട്ട് എനിക്ക് വലിയൊരു പ്രശ്നം നേരിട്ടു.
തുടക്കത്തിൽ, റെസിപ്പി ഗ്രൂപ്പ് ചെയ്യാനും ഔട്ട്പുട്ട് ഫോർമാറ്റ് ചെയ്യാനും ഞാൻ ഒരു ഏജന്റ് ഉപയോഗിച്ചു. അത് നിരന്തരം പരാജയപ്പെട്ടു. ഒരേ സാധനങ്ങൾ തന്നെ ആവർത്തിച്ചു വരുന്നു (duplicate items), നിർദ്ദേശങ്ങൾ വിട്ടുപോകുന്നു, എല്ലാം കൂടി ഒരു വലിയ ബ്ലോക്കായി മാറ്റുന്നു എന്നിങ്ങനെയായിരുന്നു പ്രശ്നങ്ങൾ.
ഇത് പരിഹരിക്കാൻ ഞാൻ രണ്ട് ഏജന്റുകൾ ഉപയോഗിച്ചുള്ള ഒരു സെറ്റപ്പ് പരീക്ഷിച്ചു:
- ഏജന്റ് 1 (Grouping): റെസിപ്പിയുടെ വിവിധ ഭാഗങ്ങൾ കണ്ടെത്തുകയും ചേരുവകളും നിർദ്ദേശങ്ങളും ക്രമീകരിക്കുകയും ചെയ്യുന്നു.
- ഏജന്റ് 2 (Structuring): ക്രമീകരിച്ച ആ ടെക്സ്റ്റ് എടുത്ത് വൃത്തിയുള്ള ഒരു JSON ഫോർമാറ്റിലേക്ക് മാറ്റുന്നു.
ഇത് ഒരു ദിവസം പ്രവർത്തിച്ചു. അടുത്ത ദിവസം പിഴവുകൾ വീണ്ടും വന്നു. സ്ട്രക്ചറിംഗ് ഏജന്റ് (structuring agent) ചേരുവകളും നിർദ്ദേശങ്ങളും ഇല്ലാത്ത JSON നൽകാൻ തുടങ്ങി.
ഞാൻ പ്രിന്റ് സ്റ്റേറ്റ്മെന്റുകൾ (print statements) ഉപയോഗിക്കുന്നത് നിർത്തി LangSmith ഉപയോഗിക്കാൻ തുടങ്ങി.
ലേറ്റൻസി (latency), ടോക്കൺ ഉപയോഗം, ചിലവ് എന്നിവ LangSmith എനിക്ക് കാണിച്ചുതരുന്നു. എല്ലാറ്റിലുമുപരി, ചെയിൻ (chain) എവിടെയാണ് തകരാറിലാകുന്നത് എന്ന് കൃത്യമായി ഇത് കാണിച്ചുതരുന്നു.
എന്റെ കാര്യത്തിൽ, ഗ്രൂപ്പിംഗ് ഏജന്റ് കൃത്യമായി പ്രവർത്തിക്കുന്നുണ്ടായിരുന്നു. എല്ലാ വിവരങ്ങളും ഉൾക്കൊള്ളുന്ന മികച്ച മാർക്ക്ഡൗൺ (markdown) അത് നൽകുന്നുണ്ടായിരുന്നു. പരാജയം സംഭവിച്ചത് രണ്ടാമത്തെ ഏജന്റിലാണ്. ഡാറ്റാ ട്രാൻസ്ഫോർമേഷൻ സമയത്ത് വിവരങ്ങൾ നഷ്ടപ്പെടുകയായിരുന്നു.
ഇപ്പോൾ ഞാൻ മൂന്ന് പരിഹാരങ്ങൾക്കായി ശ്രമിച്ചുകൊണ്ടിരിക്കുകയാണ്:
- ഏജന്റിന്റെ വിശ്വാസ്യത മെച്ചപ്പെടുത്തുക: ഒറിജിനൽ പ്രോംപ്റ്റിൽ ഇല്ലാത്ത ഒരു 'cuisine' ഫീൽഡ് കണ്ടെത്താൻ സ്ട്രക്ചറിംഗ് ഏജന്റ് ശ്രമിക്കുന്നത് ഞാൻ ശ്രദ്ധിച്ചു. ഈ ആശയക്കുഴപ്പം പിഴവുകൾക്ക് കാരണമാകുന്നു.
- വാലിഡേഷൻ (validation) ചേർക്കുക: ഔട്ട്പുട്ട് പരിശോധിക്കാൻ ഞാൻ Python ഫംഗ്ഷനുകൾ ഉപയോഗിക്കും. മാർക്ക്ഡൗൺ ശരിയാണെന്നും ഡ്യൂപ്ലിക്കേറ്റുകൾ ഇല്ലെന്നും ഉറപ്പാക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു.
- മെച്ചപ്പെട്ട ഒബ്സർവബിലിറ്റി (observability): എളുപ്പത്തിൽ ട്രാസ്സ് (trace) ചെയ്യാൻ വേണ്ടി ഓരോ ഏജന്റ് എക്സിക്യൂഷനെയും ഒരു പ്രത്യേക യൂസർ റിക്വസ്റ്റുമായി ബന്ധിപ്പിക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു.
ഏജന്റുകൾ ഉപയോഗിച്ച് നിർമ്മിക്കുക എന്നത് ഒറ്റത്തവണത്തെ ജോലിയല്ല. അത് പരിശോധനയുടെയും (testing) പരിഹാരത്തിന്റെയും (fixing) നിരന്തരമായ ഒരു പ്രക്രിയയാണ്.
Source: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co
Optional learning community: https://t.me/GyaanSetuAi
