LangFlow ನಲ್ಲಿ ಪಾಸಾಗುವ ಆದರೆ n8n ಪ್ರೊಡಕ್ಷನ್ನಲ್ಲಿ ಫೇಲ್ ಆಗುವ 3 ಪರೀಕ್ಷೆಗಳು
ನೀವು ಒಂದು LangFlow ಪ್ರೊಟೊಟೈಪ್ ಅನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ. ಪ್ರತಿಯೊಂದು ಪರೀಕ್ಷೆಯೂ ಪಾಸಾಯಿತು. ನೀವು ಆ ಫ್ಲೋ ಅನ್ನು ಪ್ರೊಡಕ್ಷನ್ ಬಳಕೆಗಾಗಿ n8n ಗೆ ವರ್ಗಾಯಿಸಿದಿರಿ. ಮೊದಲನೇ ರನ್ನಲ್ಲಿ ಅದು ವಿಫಲವಾಯಿತು.
ಇದು ಬಗ್ (bug) ಅಲ್ಲ. ಇದು ಒಂದು ಮಾದರಿ (pattern).
LangFlow ಒಂದು ಡೆವಲಪ್ಮೆಂಟ್ ಎನ್ವಿರಾನ್ಮೆಂಟ್ ಆಗಿದೆ. ನೀವು ಅದನ್ನು ಗಮನಿಸುತ್ತಿದ್ದೀರಿ ಎಂದು ಅದು ಭಾವಿಸುತ್ತದೆ. ಇದು ತಪ್ಪುಗಳನ್ನು ಮತ್ತು ಮರುಪ್ರಯತ್ನಗಳನ್ನು (retries) ಸಹಿಸಿಕೊಳ್ಳುತ್ತದೆ.
n8n ಒಂದು ಪ್ರೊಡಕ್ಷನ್ ಇಂಜಿನ್ ಆಗಿದೆ. ಇದು ಯಾರ ಮೇಲೂ ಅವಲಂಬಿತವಾಗದೆ ಸ್ವತಂತ್ರವಾಗಿ ಚಲಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ನೋಡ್ (node) ಕೂಡ ಒಂದು ಪರಿಪೂರ್ಣವಾದ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಆಗಿರಬೇಕೆಂದು ಇದು ನಿರೀಕ್ಷಿಸುತ್ತದೆ. ನೀವು ವಿಫಲತೆಯನ್ನು (failure) ನಿಭಾಯಿಸದಿದ್ದರೆ, ವರ್ಕ್ಫ್ಲೋ ನಿಂತುಹೋಗುತ್ತದೆ.
ನೀವು ಪ್ರೊಟೊಟೈಪ್ನಿಂದ ಪ್ರೊಡಕ್ಷನ್ಗೆ ಬದಲಾಯಿಸಿದಾಗ ವಿಫಲವಾಗುವ ಮೂರು ಪರೀಕ್ಷೆಗಳು ಇಲ್ಲಿವೆ.
- JSON Parsing LangFlow ನಲ್ಲಿ, ನೀವು JSON ಅನ್ನು ಕೇಳುತ್ತೀರಿ. ಮಾಡೆಲ್ ಒಂದು ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ನೀಡುತ್ತದೆ. ನೀವು ಅದನ್ನು ಪಾರ್ಸ್ (parse) ಮಾಡುತ್ತೀರಿ. ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ.
n8n ನಲ್ಲಿ, ಮಾಡೆಲ್ ಮಾರ್ಕ್ಡೌನ್ ಫೆನ್ಸ್ಗಳು (markdown fences), ಪ್ರೆಂಬಲ್ (preamble) ಅಥವಾ ಕೊನೆಯಲ್ಲಿ ಕಾಮಾ (trailing comma) ಸೇರಿಸಬಹುದು. LangFlow ಇಂತಹ ಸಣ್ಣ ತಪ್ಪುಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ. ಆದರೆ n8n ಹಾಗೆ ಮಾಡುವುದಿಲ್ಲ. JSON ನೋಡ್ ವಿಫಲವಾಗಿ ಇಡೀ ವರ್ಕ್ಫ್ಲೋ ನಿಂತುಹೋಗುತ್ತದೆ.
ಪರಿಹಾರ: ಉತ್ತಮ ಪ್ರಾಂಪ್ಟ್ (prompt) ಮೇಲೆ ಅವಲಂಬಿತರಾಗಬೇಡಿ. ಒಂದು ವ್ಯಾಲಿಡೇಶನ್ ಲೇಯರ್ (validation layer) ಅನ್ನು ನಿರ್ಮಿಸಿ. ಪಾರ್ಸ್ ಮಾಡುವ ಮೊದಲು ಮಾರ್ಕ್ಡೌನ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲು ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಶುದ್ಧೀಕರಿಸಲು (clean) ಒಂದು ಯುಟಿಲಿಟಿ ನೋಡ್ ಬಳಸಿ.
- Context Limits LangFlow ನಲ್ಲಿ, ನೀವು 8,000 ಟೋಕನ್ಗಳಿರುವ ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ಪರೀಕ್ಷಿಸುತ್ತೀರಿ. ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ. ನೀವು 12,000 ಟೋಕನ್ಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದರೆ, ಅದು ಕೂಡ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
n8n ನಲ್ಲಿ, ನಿಮ್ಮ ವರ್ಕ್ಫ್ಲೋ ಸ್ಥಿತಿಯನ್ನು (state) ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಸಬ್-ವರ್ಕ್ಫ್ಲೋಗಳು, ಇತಿಹಾಸ (history) ಮತ್ತು ಮೆಟಾಡೇಟಾ ಸೇರಿ ಪ್ರಮಾಣ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಪ್ರತ್ಯೇಕವಾಗಿ ಕೆಲಸ ಮಾಡಿದ ಡಾಕ್ಯುಮೆಂಟ್, ಪೂರ್ಣ ಪೈಪ್ಲೈನ್ನ ಭಾಗವಾದಾಗ ಮಿತಿಯನ್ನು ತಲುಪಬಹುದು. ಆಗ ಮಾಡೆಲ್ ಪಠ್ಯವನ್ನು ಕತ್ತರಿಸುತ್ತದೆ (truncates), ಮತ್ತು ನಿಮ್ಮ ಔಟ್ಪುಟ್ ವ್ಯರ್ಥವಾಗುತ್ತದೆ.
ಪರಿಹಾರ: ಕಾನ್ಟೆಕ್ಸ್ ಬಜೆಟ್ ಚೆಕರ್ (context budget checker) ಅನ್ನು ಅಳವಡಿಸಿ. LLM ಕರಲ್ ಮಾಡುವ ಮೊದಲು ನಿಮ್ಮ ಟೋಕನ್ಗಳನ್ನು ಅಳೆಯಿರಿ. ನೀವು ಮಿತಿಯನ್ನು ಮೀರಿದರೆ, ಸ್ಪಷ್ಟವಾದ ದೋಷದೊಂದಿಗೆ (error) ವರ್ಕ್ಫ್ಲೋ ಅನ್ನು ಮೊದಲೇ ನಿಲ್ಲಿಸಿ.
- Transient Failures LangFlow ನಲ್ಲಿ, ಒಂದು ಕರಲ್ ವಿಫಲವಾದರೆ, ನೀವು ಮತ್ತೆ "Run" ಕ್ಲಿಕ್ ಮಾಡುತ್ತೀರಿ. ಅದು ನೆಟ್ವರ್ಕ್ ಸಮಸ್ಯೆಯಾಗಿರಬಹುದು ಎಂದು ನೀವು ಭಾವಿಸುತ್ತೀರಿ.
n8n ನಲ್ಲಿ, ರಾತ್ರಿ 2 ಗಂಟೆಗೆ ಒಂದು ಕರಲ್ ವಿಫಲವಾದರೆ, ವರ್ಕ್ಫ್ಲೋ ಸ್ಥಗಿತಗೊಳ್ಳುತ್ತದೆ. "Run" ಕ್ಲಿಕ್ ಮಾಡಲು ಅಲ್ಲಿ ಯಾರೂ ಇರುವುದಿಲ್ಲ. ನಿಮ್ಮ ಡೇಟಾ ಎರರ್ ಕ್ಯೂನಲ್ಲಿ (error queue) ಸಿಲುಕಿಕೊಳ್ಳುತ್ತದೆ.
ಪರಿಹಾರ: ಕೇವಲ ಸರಳವಾದ ರಿಟ್ರೈ (retry) ಅನ್ನು ಮಾತ್ರ ಸೇರಿಸಬೇಡಿ. ಎಕ್ಸ್ಪೊನೆನ್ಶಿಯಲ್ ಬ್ಯಾಕ್ಆಫ್ (exponential backoff) ಬಳಸಿ. ಎಲ್ಲಕ್ಕಿಂತ ಮುಖ್ಯವಾಗಿ, ಡೆಡ್-ಲೆಟರ್ ಕ್ಯೂ (dead-letter queue) ಬಳಸಿ. ಇದು ವಿಫಲವಾದ ಇನ್ಪುಟ್ ಅನ್ನು ಉಳಿಸುತ್ತದೆ, ಇದರಿಂದ ನೀವು ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಿ ನಂತರ ಅದನ್ನು ಮರುಪ್ರಯತ್ನಿಸಬಹುದು.
ಪ್ರೊಟೊಟೈಪ್ನಿಂದ ಪ್ರೊಡಕ್ಷನ್ಗೆ ಬದಲಾಯಿಸಲು ಸಾರಾಂಶ: • ಪ್ರತಿಯೊಂದು LLM ಔಟ್ಪುಟ್ಗೆ ವ್ಯಾಲಿಡೇಶನ್ ಲೇಯರ್ ಅನ್ನು ಸೇರಿಸಿ. • ಪ್ರತಿ ಕರಲ್ ಮಾಡುವ ಮೊದಲು ಕಾನ್ಟೆಕ್ಸ್ ಬಳಕೆಯನ್ನು ಅಳೆಯಿರಿ. • ಡೆಡ್-ಲೆಟರ್ ಕ್ಯೂ ಜೊತೆಗೆ ರಿಟ್ರೈಗಳನ್ನು ಅಳವಡಿಸಿ.
ಪ್ರೊಟೊಟೈಪ್ ಎಂಬುದು ಒಂದು ಸ್ಕೆಚ್ (sketch) ಇದ್ದಂತೆ. ಪ್ರೊಡಕ್ಷನ್ ಎಂಬುದು ಒಂದು ಕಟ್ಟಡವಿದ್ದಂತೆ. ಇವೆರಡನ್ನೂ ಗೊಂದಲ ಮಾಡಿಕೊಳ್ಳಬೇಡಿ.
Source: https://dev.to/qawalah/3-tests-that-pass-in-langflow-but-fail-in-n8n-production-22i7
Optional learning community: https://t.me/GyaanSetuAi
