Designing Helium Agent

Helium Agent ಎಂಬುದು Python ಬಳಸಿ ನಿರ್ಮಿಸಲಾದ ಹಗುರವಾದ (lightweight) AI ಏಜೆಂಟ್ ಆಗಿದೆ. ಇದು ನಿಮ್ಮ ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ. ಇದನ್ನು ಕನಿಷ್ಠ ಸಂಕೀರ್ಣತೆಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.

ನಿರ್ಮಾಣದ ಪ್ರಮುಖ ವಿನ್ಯಾಸದ ನಿರ್ಧಾರಗಳು ಇಲ್ಲಿವೆ:

• ಆರ್ಕಿಟೆಕ್ಚರ್ (Architecture) ಈ ವ್ಯವಸ್ಥೆಯು ಫ್ಲಾಟ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ನಾನು ಭಾರೀ ಫ್ರೇಮ್‌ವರ್ಕ್‌ಗಳು ಮತ್ತು ಆಳವಾದ ಡಿಪೆಂಡೆನ್ಸಿ ಟ್ರೀಗಳನ್ನು ತಪ್ಪಿಸುತ್ತೇನೆ. ನಾನು OpenAI function calling ಬದಲಿಗೆ <action> ನಂತಹ XML ಟ್ಯಾಗ್‌ಗಳನ್ನು ಬಳಸುತ್ತೇನೆ. ಇದು ಏಜೆಂಟ್ ಅನ್ನು ಮಾಡೆಲ್ ಅಜ್ಞಾತವಾಗಿರಿಸುತ್ತದೆ (model agnostic). ನೀವು ಯಾವುದೇ LLM ಅನ್ನು ಬಳಸಬಹುದು.

• ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ ಮೂಲಕ ಕಾಂಪೋಸಿಬಿಲಿಟಿ (Composability through Dependency Injection) ನಾನು AgenticLoop ಎಂಬ ಸರಳ ಲೂಪ್ ಅನ್ನು ಬಳಸುತ್ತೇನೆ. ಇದು ಎರಡು ಇನ್‌ಪುಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ: ಮಾಡೆಲ್ ಕಾಲಿಂಗ್ (model caller) ಮತ್ತು ಟೂಲ್ ಎಕ್ಸಿಕ್ಯೂಟರ್ (tool executor). ಈ ಒಂದು ಆಯ್ಕೆಯು ನಾಲ್ಕು ವಿಭಿನ್ನ ಮೋಡ್‌ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ:

  • ಸಾಮಾನ್ಯ ಚಾಟ್ (General chat)
  • ಕೋಡಿಂಗ್ ವರ್ಕ್‌ಫ್ಲೋಗಳು (Coding workflows)
  • ಸಬ್-ಏಜೆಂಟ್‌ಗಳು (Subagents)
  • ಕಸ್ಟಮ್ ಕೌಶಲ್ಯಗಳು (Custom skills) ನಾನು ಸಬ್‌ಕ್ಲಾಸ್‌ಗಳು ಅಥವಾ ಸಂಕೀರ್ಣ ಮಾದರಿಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ. ಕೇವಲ ಎರಡು ಸರಳ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಬಳಸುತ್ತೇನೆ.

• ಸ್ಟೇಟ್ ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್ (State Management) Helium ಎಂಬುದು ಏಕ-ಬಳಕೆದಾರರ (single-user) ಸಾಧನವಾಗಿದೆ. ಸಂಭಾಷಣೆಯ ಇತಿಹಾಸ ಮತ್ತು ಮೆಮೊರಿಗಾಗಿ ನಾನು ಮಾಡ್ಯೂಲ್-ಮಟ್ಟದ ಸಿಂಗಲ್‌ಟನ್‌ಗಳನ್ನು (module-level singletons) ಬಳಸುತ್ತೇನೆ. ಗ್ಲೋಬಲ್ ಸ್ಟೇಟ್ (Global state) ಎಂಬುದು ಏಕ ಬಳಕೆದಾರರ ಸೆಷನ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸಲು ಅತ್ಯಂತ ಸರಳವಾದ ಮಾರ್ಗವಾಗಿದೆ. ಇದು ಓವರ್-ಎಂಜಿನಿಯರಿಂಗ್ ಅನ್ನು ತಡೆಯುತ್ತದೆ.

• ಸೇಫ್ಟಿ ಗೇಟ್ಸ್ (Safety Gates) ಟೂಲ್ ಎಕ್ಸಿಕ್ಯೂಷನ್‌ಗಾಗಿ ನಾನು ಮೂರು ಹಂತಗಳ ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸುತ್ತೇನೆ:

  • ಸುರಕ್ಷಿತ (Safe): ಫೈಲ್‌ಗಳನ್ನು ಓದುವುದು ಅಥವಾ ಹುಡುಕುವುದು ನಂತಹ ಕಾರ್ಯಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ.
  • ಅಪಾಯಕಾರಿ (Risky): ಫೈಲ್‌ಗಳನ್ನು ಬರೆಯುವಂತಹ ಕಾರ್ಯಗಳಿಗೆ ಬಳಕೆದಾರರ ಅನುಮತಿಯ ಅಗತ್ಯವಿರುತ್ತದೆ.
  • ಷರತ್ತುಬದ್ಧ (Conditional): ಅಪಾಯವನ್ನು ಪರೀಕ್ಷಿಸಲು bash ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಂತಹ ಕಮಾಂಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಇದು ಹ್ಯಾಲ್ಯುಸಿನೇಟಿಂಗ್ (hallucinating) ಮಾಡೆಲ್ ನಿಮ್ಮ ಫೈಲ್‌ಗಳನ್ನು ಡಿಲೀಟ್ ಮಾಡದಂತೆ ತಡೆಯುತ್ತದೆ.

• ಸಂವಹನ (Communication) ನಾನು OpenAI SDK ಬದಲಿಗೆ ನೇರ (raw) HTTP ರಿಕ್ವೆಸ್ಟ್‌ಗಳನ್ನು ಬಳಸುತ್ತೇನೆ. ಇದು ಡಿಪೆಂಡೆನ್ಸಿಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಕೋಡ್ ಅನ್ನು ಪಾರದರ್ಶಕವಾಗಿರಿಸುತ್ತದೆ. API ಗೆ ನಿಖರವಾಗಿ ಏನು ಹೋಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೀವು ನೋಡಬಹುದು.

• ಕೌಶಲ್ಯ ವ್ಯವಸ್ಥೆ (Skill System) ಕೌಶಲ್ಯಗಳು (Skills) ಕೇವಲ Markdown ಫೈಲ್‌ಗಳಾಗಿವೆ. ನೀವು YAML frontmatter ಹೊಂದಿರುವ ಪಠ್ಯ ಫೈಲ್ ಬರೆಯುವ ಮೂಲಕ ಹೊಸ ಕೌಶಲ್ಯವನ್ನು ಸೇರಿಸಬಹುದು. ಇಲ್ಲಿ ಯಾವುದೇ ಸಂಕೀರ್ಣ ರಿಜಿಸ್ಟ್ರೇಶನ್ API ಇಲ್ಲ. ಇದು ಪ್ಲಗಿನ್ ವ್ಯವಸ್ಥೆಯನ್ನು ಯಾರೂ ಬಳಸಲು ಸುಲಭವಾಗಿಸುತ್ತದೆ.

• ಕಲಿತ ಪಾಠಗಳು (Lessons Learned)

  1. ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ (Dependency injection) ಅಗ್ಗದ ಕಾಂಪೋಸಿಬಿಲಿಟಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ.
  2. ಸಿಸ್ಟಮ್ ಪ್ರಾಂಪ್ಟ್ (System prompt) ನಿಮ್ಮ API ಆಗಿದೆ. ಅದನ್ನು ಪ್ರಥಮ ದರ್ಜೆಯ ಕೋಡ್ ಎಂದು ಪರಿಗಣಿಸಿ.
  3. ಸರ್ಕ್ಯುಲರ್ ಡಿಪೆಂಡೆನ್ಸಿಗಳನ್ನು ಸರಿಪಡಿಸಲು ನೀವು ಲೇಜಿ ಇಂಪೋರ್ಟ್‌ಗಳನ್ನು (lazy imports) ಬಳಸಬೇಕಿದ್ದರೆ, ನಿಮ್ಮ ಮಾಡ್ಯೂಲ್ ಗಡಿಗಳು (module boundaries) ತಪ್ಪಾಗಿವೆ ಎಂದರ್ಥ. ಬದಲಿಗೆ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಸರಿಪಡಿಸಿ.

ಸರಳತೆಯು ವಿಸ್ತರಿಸುತ್ತದೆ (Simplicity scales). ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಬಳಕೆಗಾಗಿ ಕೆಲಸ ಮಾಡುವ ಅತ್ಯಂತ ಸರಳ ಪರಿಹಾರವನ್ನು ಆರಿಸಿ.

ಮೂಲ: https://dev.to/debmalyasen34/designing-helium-agent-1b39

ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi