𝗜 𝗧𝗿𝗶𝗲𝗱 𝗧𝗼 𝗔𝘀𝘀𝗶𝗴𝗻 𝗧𝗮𝘀𝗸𝘀 𝘁𝗼 𝗮𝗻 𝗔𝗜
வெவ்வேறு AI ஏஜெண்டுகளுக்குப் பணிகளைப் பிரித்து அனுப்ப ஒரு டிஸ்பாட்சரை (dispatcher) உருவாக்க முயன்றேன்.
Forge குறியீடுகளை (code) கையாள்கிறது. Xiao Ke உரையாடல்களைக் கையாள்கிறது. இதன் தர்க்கம் (logic) எளிமையானது என்று நான் நினைத்தேன். பணியைப் படிக்கவும். அதன் திறமையுடன் பொருத்தவும். பணியை அனுப்பவும்.
நான் பாதியிலேயே நிறுத்திவிட்டேன்.
அவற்றை எவ்வாறு பொருத்துவது என்று எனக்குத் தெரியவில்லை என்பதை உணர்ந்தேன். Forge உண்மையில் என்ன செய்கிறது என்பதை என்னால் வரையறுக்க முடியவில்லை.
எனக்கு விடைகள் தெரியும் என்று நினைத்தேன். Forge குறியீடுகளை எழுதவும் சோதனைகளை (tests) இயக்கவும் முடியும் என்று நினைத்தேன். ஆனால் ஒரு விவரக்குறிப்பை (specification) எழுத முயன்றபோது, நான் தோல்வியடைந்தேன்.
என்னிடம் பின்வருவன குறித்த தரவுகள் இல்லை:
- அது எவ்வளவு பெரிய குறியீட்டுத் தொகுப்பை (codebase) கையாள்கிறது.
- ஒரே நேரத்தில் எத்தனை பணிகளைச் செய்கிறது.
- சிக்கலான பிரச்சனைகளுக்கு எவ்வளவு நேரம் எடுத்துக்கொள்கிறது.
- அது பிழைகளை எவ்வாறு புகாரளிக்கிறது.
நான் "தோராயமாக" மற்றும் "நான் நினைக்கிறேன்" போன்ற வார்த்தைகளையே பயன்படுத்திக் கொண்டிருந்தேன்.
AgentSpec என்ற ஆய்வறிக்கை இந்தச் சிக்கலை விளக்குகிறது. ஒரு திட்டமிடுபவர் (scheduler) சரியாகச் செயல்பட வேண்டுமென்றால், ஒவ்வொரு ஏஜெண்டிற்கும் ஒரு வகைப்படுத்தப்பட்ட விவரக்குறிப்பு (typed specification) தேவை. நீங்கள் பின்வருவனவற்றை வரையறுக்க வேண்டும்:
- உள்ளீட்டு வடிவங்கள் (Input formats).
- வெளியீட்டு வடிவங்கள் (Output formats).
- முன்நிபந்தனைகள் (Preconditions).
- தெரிந்த வரம்புகள் (Known limits).
ஒரு விவரக்குறிப்பு இல்லாமல், திட்டமிடுபவர் வெறும் யூகங்களை மட்டுமே செய்கிறார்.
யூகிக்கப்பது ஆபத்தானது, ஏனெனில் நீங்கள் அதைச் செய்வதே உங்களுக்குத் தெரியாது. நீங்கள் பணிகளைப் பொருத்துவதாக நினைக்கிறீர்கள். ஆனால் உண்மையில் நீங்கள் முன்கணிப்பதே (projecting) செய்கிறீர்கள். கடந்த வாரம் ஒரு வெற்றி கிடைத்ததைக் கண்டு, ஏஜெண்ட் மீண்டும் வெற்றி பெறும் என்று நீங்கள் ஊகித்துவிடுகிறீர்கள்.
இது மனிதத் தோழர்களிடமும் நடக்கிறது. யாராவது முன்பு ஒரு வேலையைச் செய்ததைக் கண்டு, அவர்களுக்கு மீண்டும் அதே வேலையைத் தருகிறீர்கள். சில நேரங்களில் நீங்கள் சரியாக இருக்கலாம். சில நேரங்களில் நீங்கள் எதிர்காலப் பிரச்சனையை மறைக்கிறீர்கள் அவ்வளவுதான்.
கடினமான பகுதி அறிவின்மை அல்ல. உங்களுக்குத் தெரியாத ஒன்றை உங்களுக்குத் தெரியும் என்று நினைப்பதே கடினமானது.
விவரக்குறிப்புகள் நிலையானவை (static), ஆனால் வேலை என்பது மாறும் தன்மை கொண்டது (dynamic) என்பதையும் நான் உணர்ந்தேன். ஒரு விவரக்குறிப்பு ஒரு ஏஜெண்ட் என்ன செய்ய முடியும் என்று சொல்லும். ஆனால் அந்த ஏஜெண்ட் இப்போது வேலையாக இருக்கிறதா அல்லது வரிசை (queue) நிரம்பிவிட்டதா என்பதை அது சொல்லாது.
நான் ஒரு மனநிலை மாதிரியை (mental model) உருவாக்கிக் கொண்டிருந்தேன், விவரக்குறிப்பை அல்ல. ஒவ்வொரு பணிக்குப் பிறகும் எனது எண்ணங்களை மாற்றிக்கொண்டே இருந்தேன். ஒரு கட்டமைப்பை உருவாக்குவதற்குப் பதிலாக, தரவுகளின் துண்டுகளைச் சேகரித்துக் கொண்டிருந்தேன்.
எண்ணங்கள் என்பவை துண்டுகள். விவரக்குறிப்புகள் என்பவை கட்டமைப்பு.
இந்த பயிற்சியைச் செய்து பாருங்கள்: நீங்கள் தினமும் பயன்படுத்தும் ஒரு நபர் அல்லது ஒரு கருவியைத் தேர்ந்தெடுங்கள். அவர்களுக்கான ஒரு திறன் விவரக்குறிப்பை (capability spec) எழுதுங்கள். புகழ்ச்சிகளை எழுதாதீர்கள். ஒரு உண்மையான ஆவணத்தை எழுதுங்கள்:
- எந்தச் சூழ்நிலைகளில் அவர்கள் மிகவும் திறமையாகச் செயல்படுவார்கள்?
- எந்த வகையான உள்ளீடுகள் பிழைகளை உண்டாக்குகின்றன?
- எந்தப் பணிகளை அவர்களுக்கு ஒருபோதும் கொடுக்கக்கூடாது?
எழுதுவது உங்கள் இடைவெளிகளைக் காட்டும். நீங்கள் "தெளிவானவை" என்று நினைக்கும் விஷயங்கள் உண்மையில் தெரியாத இடங்களாக (blank spots) இருப்பதை நீங்கள் காண்பீர்கள்.
அந்தத் தெரியாத இடங்களில்தான் உங்கள் அடுத்த தவறு நிகழும். ஏதேனும் உடைவதற்கு முன் அவற்றை இப்போதே கண்டறியுங்கள்.
ஆதாரம்: https://dev.to/icophy/i-tried-to-assign-tasks-to-an-ai-turns-out-i-didnt-know-what-it-could-do
விருப்பத்தேர்வு கற்றல் சமூகம்: https://t.me/GyaanSetuAi