Google ನ Agent Development Kit (ADK) ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಎರಡು ಮುಖ್ಯ ವಿಧಾನಗಳನ್ನು ನೀಡುತ್ತದೆ.
ಡೈನಾಮಿಕ್ ಮಲ್ಟಿ-ಏಜೆಂಟ್ ರೂಟಿಂಗ್ (Dynamic Multi-Agent Routing)
ರೂಟಿಂಗ್ ಮಾಡೆಲ್ನಲ್ಲಿ, ಒಂದು ಕೇಂದ್ರ ಸಂಯೋಜಕವು (central coordinator) ಬಳಕೆದಾರರ ವಿನಂತಿಯನ್ನು ಸ್ವೀಕರಿಸಿ ಅದನ್ನು ತಜ್ಞ ಏಜೆಂಟ್ಗಳಿಗೆ (specialist agents) ಕಳುಹಿಸುತ್ತದೆ. ಯಾವ ತಜ್ಞ ಏಜೆಂಟ್ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕು ಎಂಬುದನ್ನು ಸಂಯೋಜಕ ನಿರ್ಧರಿಸುತ್ತದೆ, ತಜ್ಞ ಏಜೆಂಟ್ ತನ್ನ ಕೆಲಸವನ್ನು ಪೂರ್ಣಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ನಿಯಂತ್ರಣವು ಪೋಷಕ ಏಜೆಂಟ್ಗೆ (parent) ಮರಳುತ್ತದೆ.
- ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ – ಸಂಯೋಜಕವು ಒಬ್ಬ ತಜ್ಞನನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ, ಕಾರ್ಯವನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ನಂತರ ಮುಂದಿನ ಹಂತಕ್ಕೆ ಹೋಗುವ ಮೊದಲು ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಕಾಯುತ್ತದೆ.
- ಅನುಕೂಲಗಳು (Pros) – ಇದು ಹೆಚ್ಚಿನ ನಮ್ಯತೆಯನ್ನು (flexibility) ನೀಡುತ್ತದೆ. LLM ರನ್-ಟೈಮ್ನಲ್ಲಿ (runtime) ಹಾದಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದರಿಂದ, ಫ್ಲೋ ಅನ್ನು ಮತ್ತೆ ಬರೆಯುವ ಅಗತ್ಯವಿಲ್ಲದೆ ವ್ಯವಸ್ಥೆಯು ಹೊಸ ಅಥವಾ ಅನಿರೀಕ್ಷಿತ ಇನ್ಪುಟ್ಗಳಿಗೆ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ.
- ಅನಾನುಕೂಲಗಳು (Cons) – ಪ್ರತಿ ಹಂತವು ನೆಟ್ವರ್ಕ್ ಮತ್ತು ಪ್ರೊಸೆಸಿಂಗ್ ಓವರ್ಹೆಡ್ ಅನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ನೇರವಾದ ಪೈಪ್ಲೈನ್ನೊಂದಿಗೆ ಹೋಲಿಸಿದರೆ ವಿಳಂಬವು (latency) ಹೆಚ್ಚಾಗುತ್ತದೆ.
ಸೀಕ್ವೆನ್ಷಿಯಲ್ ವರ್ಕ್ಫ್ಲೋ ಲೂಪ್ಸ್ (Sequential Workflow Loops)
ಲೂಪ್ ಮಾಡೆಲ್ ಸಂಯೋಜಕದ ಬದಲಿಗೆ ಏಕೈಕ LoopAgent ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ಮೊದಲೇ ನಿರ್ಧರಿಸಿದ ಹಂತಗಳ ಸರಣಿಯ ಮೂಲಕ ಸಾಗುತ್ತದೆ ಮತ್ತು ಬದಲಾಗಬಲ್ಲ ಸೆಷನ್ ಸ್ಟೇಟ್ ಅನ್ನು (mutable session state) ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ.
- ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ – ಏಜೆಂಟ್ಗಳು ಹಂಚಿಕೆಯ ಕೀಯನ್ನು (shared key) ಓದುತ್ತವೆ, ಅದನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡುತ್ತವೆ ಮತ್ತು ಸರಣಿಯು ಮುಗಿಯುವವರೆಗೆ ನಿಯಂತ್ರಣವನ್ನು ಮುಂದಿನ ಹಂತಕ್ಕೆ ನೀಡುತ್ತವೆ.
- ಅನುಕೂಲಗಳು (Pros) – ಮುನ್ಸೂಚನೆ ನೀಡುವಿಕೆ (Predictability). ಕ್ರಮವು ಎಂದಿಗೂ ಬದಲಾಗುವುದಿಲ್ಲ, ಇದು ડીಬಗ್ಗಿಂಗ್ (debugging) ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸುವುದನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ.
- ಅನಾನುಕೂಲಗಳು (Cons) – ಬಿಗಿತ (Rigidity). ನಿಗದಿತ ಕ್ರಮದಿಂದ ಹೊರಬರಬೇಕಾದ ಯಾವುದೇ ಅಗತ್ಯವಿದ್ದರೆ, ಲೂಪ್ ಅನ್ನು ಮರು ವಿನ್ಯಾಸಗೊಳಿಸಬೇಕಾಗುತ್ತದೆ.
ಪ್ರಾಯೋಗಿಕ ಪರೀಕ್ಷೆ: ಮ್ಯಾಥ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ ಪಾರ್ಸರ್ (Math Expression Parser)
ಈ ಮಾದರಿಗಳು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ ಎಂಬುದನ್ನು ನೋಡಲು, ನಾವು ನಾಲ್ಕು ತಜ್ಞ ಏಜೆಂಟ್ಗಳನ್ನು ಬಳಸುವ ಸರಳ ಪಾರ್ಸರ್ ಅನ್ನು ನಿರ್ಮಿಸಿದ್ದೇವೆ: adder, subtracter, multiplier, ಮತ್ತು divider.
ವರ್ಕ್ಫ್ಲೋ ಲೂಪ್ನಿಂದ ಕಲಿತ ಪಾಠಗಳು
- ಅನಂತ ಲೂಪ್ಗಳನ್ನು ತಡೆಯಿರಿ (Prevent infinite loops) – ಹಂಚಿಕೆಯ ಸ್ಟೇಟ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿದ ತಕ್ಷಣ ಪ್ರತಿ ಏಜೆಂಟ್ ಪಠ್ಯವನ್ನು ಔಟ್ಪುಟ್ ಮಾಡಿ ತನ್ನ ಸರದಿ ಮುಗಿಸಬೇಕೆಂದು ನಾವು ಸೂಚಿಸಿದೆವು. ಆ ರಕ್ಷಣೆಯಿಲ್ಲದಿದ್ದರೆ ಲೂಪ್ ಅನಂತವಾಗಿ ಚಲಿಸುತ್ತಿರಬಹುದು.
- ಗಣಿತದ ತರ್ಕವನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳಿ (Maintain math logic) – ಗಣಿತದ ಕ್ರಿಯೆಗಳ ಕ್ರಮವನ್ನು (order of operations) ಪಾಲಿಸಲು ನಾವು adder ಗೆ ಸ್ಪಷ್ಟ ಮಾರ್ಗದರ್ಶನ ನೀಡಿದೆವು, ಇದರಿಂದ ಅದು ಕಳೆಯುವ ನಿಯಮಗಳನ್ನು ಉಲ್ಲಂಘಿಸದಂತೆ ತಡೆಯಬಹುದು.
- ಮೌನ ನಿರ್ಗಮನವನ್ನು ತಪ್ಪಿಸಿ (Avoid silent exits) – ಏಜೆಂಟ್ಗಳು ಎಕ್ಸಿಟ್ ಟೂಲ್ ಅನ್ನು ಬಳಸುವ ಮೊದಲು ಅಂತಿಮ ಫಲಿತಾಂಶವನ್ನು ಪ್ರಿಂಟ್ ಮಾಡುವಂತೆ ನಾವು ಮಾಡಿದೆವು, ಇದರಿಂದ ಬಳಕೆದಾರರು ಹಠಾತ್ ಅಂತ್ಯದ ಬದಲಿಗೆ ಫಲಿತಾಂಶವನ್ನು ನೋಡಬಹುದು.
ದೋಷ ನಿರ್ವಹಣೆ (Error Handling)
ನಾವು divider ತಜ್ಞ ಏಜೆಂಟ್ ಮುಂದೆ 'ಜೀರೋ-ಡಿವಿಷನ್ ಗಾರ್ಡ್' (zero-division guard) ಅನ್ನು ಸೇರಿಸಿದ್ದೇವೆ. ಈ ಗಾರ್ಡ್ ಮೊದಲು ವಿಭಾಜಕವನ್ನು (divisor) ಪರಿಶೀಲಿಸುತ್ತದೆ; ಅದು ಸೊನ್ನೆಯಾಗಿದ್ದರೆ, ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ, ಇದರಿಂದ ಇಡೀ ವ್ಯವಸ್ಥೆಯು ರನ್-ಟೈಮ್ ಎಕ್ಸೆಪ್ಶನ್ನಿಂದ (runtime exception) ತಪ್ಪಿಸಿಕೊಳ್ಳುತ್ತದೆ.
ಯಾವ ಮಾದರಿಯು ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ಗೆ ಸೂಕ್ತವಾಗಿದೆ?
- ಮಲ್ಟಿ-ಏಜೆಂಟ್ ರೂಟಿಂಗ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ (Choose Multi-Agent Routing): ಕಾರ್ಯಗಳು ಕ್ಷಣ ಕ್ಷಣಕ್ಕೂ ಬದಲಾಗುತ್ತಿದ್ದರೆ, ಇನ್ಪುಟ್ಗಳು ವೈವಿಧ್ಯಮಯವಾಗಿದ್ದರೆ ಅಥವಾ ರನ್-ಟೈಮ್ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ತಜ್ಞನನ್ನು ನಿರ್ಧರಿಸಲು LLM ಅಗತ್ಯವಿದ್ದರೆ ಇದನ್ನು ಬಳಸಿ. ಇದರ ಬೆಲೆ ಹೆಚ್ಚಿನ ವಿಳಂಬವು (latency), ಆದರೆ ಕೋಡ್ ಬದಲಾಯಿಸದೆಯೇ ವ್ಯವಸ್ಥೆಯು ಅನಿರೀಕ್ಷಿತ ಸನ್ನಿವೇಶಗಳನ್ನು ನಿಭಾಯಿಸುತ್ತದೆ.
- ವರ್ಕ್ಫ್ಲೋ ಲೂಪ್ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ (Choose Workflow Loops): ನಿಮ್ಮಲ್ಲಿ ದತ್ತಾಂಶ ಶುದ್ಧೀಕರಣ (data cleaning), ರೂಪಾಂತರ (transformation), ಸಂಘಟಿಸುವಿಕೆ (aggregation) ನಂತಹ ಸ್ಪಷ್ಟವಾದ ಪೈಪ್ಲೈನ್ ಇದ್ದಾಗ ಮತ್ತು ಪ್ರತಿ ಹಂತವು ಕಟ್ಟುನಿಟ್ಟಾದ ಕ್ರಮದಲ್ಲಿ ನಡೆಯಬೇಕಾದಾಗ ಇದನ್ನು ಬಳಸಿ. ಇದರ ಪ್ರಯೋಜನವೆಂದರೆ ಕಡಿಮೆ ವಿಳಂಬ ಮತ್ತು ಸುಲಭವಾದ ડીಬಗ್ಗಿಂಗ್, ಆದರೆ ಇದು ಡೈನಾಮಿಕ್ ಆಗಿ ವಿಭಜನೆಯಾಗುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ.
