ಕಿಚನ್ ನೈಟ್‌ಮೇರ್ಸ್: LangChain Agents ಎಡಿಷನ್

ರೆಸಿಪಿಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಮತ್ತು ಊಟದ ಯೋಜನೆಗಳನ್ನು (meal plans) ತಯಾರಿಸಲು ನಾನು ಒಂದು ಹೆಲ್ತ್ ಆಪ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ.

ವೆಬ್ ಆಪ್‌ಗಾಗಿ ನಾನು FastAPI ಮತ್ತು React ಅನ್ನು ಬಳಸಿದೆ. ಏಜೆಂಟ್‌ಗಳಿಗಾಗಿ LangChain ಅನ್ನು ಬಳಸಿದೆ. ನನ್ನ ಏಜೆಂಟ್‌ಗಳು ಏನು ಮಾಡುತ್ತಿವೆ ಎಂಬುದನ್ನು ನೋಡಲು LangSmith ಅನ್ನು ಬಳಸಿದೆ.

ಗುರಿ ಸರಳವಾಗಿತ್ತು. ಬಳಕೆದಾರರು ಒಂದು URL ಅನ್ನು ನೀಡುತ್ತಾರೆ. ಆಪ್ ರೆಸಿಪಿಯನ್ನು ಪಡೆದು ಅದನ್ನು mains, sides, ಮತ್ತು sauces ನಂತಹ ಘಟಕಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ. ನಂತರ ಬಳಕೆದಾರರು ಇವುಗಳನ್ನು ಬೆರೆಸಿ ಊಟವನ್ನು ಸಿದ್ಧಪಡಿಸಬಹುದು ಅಥವಾ ಕ್ಯಾಲೋರಿಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು.

ಏಜೆಂಟ್‌ನ ವಿಶ್ವಾಸಾರ್ಹತೆಯಲ್ಲಿ (reliability) ನಾನು ದೊಡ್ಡ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸಿದೆ.

ಮೊದಲಿಗೆ, ರೆಸಿಪಿಯನ್ನು ಗುಂಪು ಮಾಡಲು ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲು ನಾನು ಒಂದು ಏಜೆಂಟ್ ಅನ್ನು ಬಳಸಿದೆ. ಅದು ಪದೇ ಪದೇ ವಿಫಲವಾಯಿತು. ಅದು ಡೂಪ್ಲಿಕೇಟ್ ಐಟಂಗಳನ್ನು ನೀಡುತ್ತಿತ್ತು. ಸೂಚನೆಗಳನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತಿತ್ತು. ಎಲ್ಲವನ್ನೂ ಒಂದೇ ದೊಡ್ಡ ಬ್ಲಾಕ್ ಆಗಿ ಸೇರಿಸುತ್ತಿತ್ತು.

ಇದನ್ನು ಸರಿಪಡಿಸಲು ನಾನು ಡ್ಯುಯಲ್ ಏಜೆಂಟ್ ಸೆಟಪ್ ಅನ್ನು ಪ್ರಯತ್ನಿಸಿದೆ:

  • ಏಜೆಂಟ್ 1 (Grouping): ವಿವಿಧ ರೆಸಿಪಿ ಘಟಕಗಳನ್ನು ಹುಡುಕುತ್ತದೆ ಮತ್ತು ಪದಾರ್ಥಗಳು ಹಾಗೂ ಸೂಚನೆಗಳನ್ನು ಸಂಘಟಿಸುತ್ತದೆ.
  • ಏಜೆಂಟ್ 2 (Structuring): ಆ ಸಂಘಟಿತ ಪಠ್ಯವನ್ನು ತೆಗೆದುಕೊಂಡು ಅದನ್ನು ಸ್ವಚ್ಛವಾದ JSON ಫಾರ್ಮ್ಯಾಟ್‌ಗೆ ಪರಿವರ್ತಿಸುತ್ತದೆ.

ಇದು ಒಂದು ದಿನ ಕೆಲಸ ಮಾಡಿತು. ಮರುದಿನ, ತಪ್ಪುಗಳು ಮತ್ತೆ ಮರಳಿದವು. ಸ್ಟ್ರಕ್ಚರಿಂಗ್ ಏಜೆಂಟ್ ಎಲ್ಲಾ ಪದಾರ್ಥಗಳು ಮತ್ತು ಸೂಚನೆಗಳನ್ನು ಬಿಟ್ಟುದೂ JSON ಅನ್ನು ನೀಡಲು ಪ್ರಾರಂಭಿಸಿತು.

ನಾನು print ಸ್ಟೇಟ್‌ಮೆಂಟ್‌ಗಳನ್ನು ಬಳಸುವುದು ನಿಲ್ಲಿಸಿ LangSmith ಅನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದೆ.

LangSmith ನನಗೆ latency, ಟೋಕನ್ ಬಳಕೆ ಮತ್ತು ವೆಚ್ಚವನ್ನು ತೋರಿಸುತ್ತದೆ. ಎಲ್ಲಕ್ಕಿಂತ ಮುಖ್ಯವಾಗಿ, ಚೈನ್ ಎಲ್ಲಿ ಮುರಿದುಹೋಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಇದು ನಿಖರವಾಗಿ ತೋರಿಸುತ್ತದೆ.

ನನ್ನ ಸಂದರ್ಭದಲ್ಲಿ, ಗ್ರೂಪಿಂಗ್ ಏಜೆಂಟ್ ಪರಿಪೂರ್ಣವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿತ್ತು. ಅದು ಎಲ್ಲಾ ವಿವರಗಳೊಂದಿಗೆ ಉತ್ತಮ ಮಾರ್ಕ್‌ಡೌನ್ ಅನ್ನು ನೀಡುತ್ತಿತ್ತು. ವೈಫಲ್ಯವು ಎರಡನೇ ಏಜೆಂಟ್‌ನಲ್ಲಿ ಸಂಭವಿಸಿತು. ಪರಿವರ್ತನೆಯ ಸಮಯದಲ್ಲಿ ಅದು ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತಿತ್ತು.

ಈಗ ನಾನು ಮೂರು ಪರಿಹಾರಗಳ ಮೇಲೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇನೆ:

  • ಏಜೆಂಟ್ ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಸುಧಾರಿಸುವುದು: ಸ್ಟ್ರಕ್ಚರಿಂಗ್ ಏಜೆಂಟ್ ಮೂಲ ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ ಇಲ್ಲದ 'cuisine' ಫೀಲ್ಡ್ ಅನ್ನು ಊಹಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ ಎಂದು ನಾನು ಗಮನಿಸಿದೆ. ಈ ಗೊಂದಲವು ತಪ್ಪುಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತಿದೆ.
  • ವ್ಯಾಲಿಡೇಶನ್ ಸೇರಿಸುವುದು: ಔಟ್‌ಪುಟ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ನಾನು Python ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಬಳಸುತ್ತೇನೆ. ಮಾರ್ಕ್‌ಡೌನ್ ಸರಿಯಾಗಿದೆ ಮತ್ತು ಯಾವುದೇ ಡೂಪ್ಲಿಕೇಟ್‌ಗಳು ಇಲ್ಲ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಾನು ಬಯಸುತ್ತೇನೆ.
  • ಉತ್ತಮ ಅಬ್ಸರ್ವೇಬಿಲಿಟಿ (observability): ಸುಲಭವಾದ ಟ್ರೇಸಿಂಗ್‌ಗಾಗಿ ಪ್ರತಿ ಏಜೆಂಟ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟ ಬಳಕೆದಾರರ ವಿನಂತಿಗೆ ಲಿಂಕ್ ಮಾಡಲು ನಾನು ಬಯಸುತ್ತೇನೆ.

ಏಜೆಂಟ್‌ಗಳೊಂದಿಗೆ ನಿರ್ಮಿಸುವುದು ಒಂದು ಬಾರಿಯ ಕೆಲಸವಲ್ಲ. ಇದು ಪರೀಕ್ಷೆ ಮತ್ತು ಸರಿಪಡಿಸುವಿಕೆಯ ನಿರಂತರ ಲೂಪ್ ಆಗಿದೆ.

Source: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co

Optional learning community: https://t.me/GyaanSetuAi