20 ஆண்டுகால சப்போர்ட் டிக்கெட்டுகளுக்கு முன்னால் நான் ஒரு AI ஏஜென்ட்டை அமைத்தேன்
எங்களிடம் பத்து லட்சம் டிக்கெட்டுகளைக் கொண்ட ஒரு helpdesk அமைப்பு உள்ளது. எங்களிடம் 2,400 கையேடுகள் (manuals) மற்றும் இரண்டு பிரம்மாண்டமான codebase-கள் உள்ளன.
ஒரு டெவலப்பர், "நாம் இதற்கு முன்பு ஒரு சிக்கலைத் தீர்த்தோமா?" என்று கேட்டால், அதற்கான பதில் எப்போதும் "ஆம்" தான். ஆனால் அந்தத் தரவுகள் எங்கோ புதைந்து கிடக்கின்றன. மூத்த பணியாளர்கள் தேடுவதிலேயே பல மணிநேரங்களை இழக்கிறார்கள். ஜூனியர்கள் பல வாரங்களை இழக்கிறார்கள்.
இந்தத் தரவுகள் அனைத்திற்கும் முன்னால் செயல்பட ஒரு AI ஏஜென்ட்டை நான் உருவாக்கினேன். அது இப்போது பயன்பாட்டில் (production) உள்ளது. உண்மையில் என்ன நடந்தது என்பதை இங்கே காணலாம்.
தரவுகளைச் சேகரிப்பது கடினமான பகுதி அல்ல. எங்கே தேடுவது என்று தெரிந்துகொள்வதுதான் கடினம். ஏஜென்ட் தானாகவே கற்பனையான விஷயங்களைச் சொல்வதைத் (making things up) தடுப்பது அதைவிடக் கடினமாக இருந்தது.
இது எவ்வாறு செயல்படுகிறது:
- இயற்கை மொழி உள்ளீட்டுடன் (natural language input) கூடிய ஒரு ஏஜென்ட்.
- இது helpdesk தரவுத்தளம், புராஜெக்ட் கருவிகள், GitLab மற்றும் SVN ஆகியவற்றை வாசிக்கும்.
- இது கையேடுகள் மற்றும் பழைய டிக்கெட்டுகளில் vector தேடல்களைச் செய்கிறது.
- இது .xlsx அல்லது .docx போன்ற கோப்புகளை உருவாக்க முடியும்.
- இது தனக்கான கருவிகளைத் தேர்ந்தெடுத்து அவற்றை இணையாக (parallel) இயக்கும்.
இதன் கட்டமைப்பு (architecture) எளிமையானது. இது முக்கிய பயன்பாட்டிலிருந்து (main app) தனித்து ஒரு Node container-இல் இயங்குகிறது. தோல்விகளைத் தனிமைப்படுத்துவதற்காக (failure isolation) நான் இதைச் செய்தேன். AI தோல்வியடைந்தாலும், helpdesk தொடர்ந்து இயங்கும்.
மிகப்பெரிய பாடம் 'prompt' பற்றியதுதான். நான் ஒரு மிகப்பெரிய உரைத் தொகுப்புடன் (wall of text) தொடங்கினேன். அது 40,000 tokens அளவில் இருந்தது. அதை பராமரிப்பது கடினமாக இருந்தது மற்றும் ஏஜென்ட் தனது கவனத்தை இழந்தது.
நான் எனது அணுகுமுறையை மாற்றினேன். prompt-ஐ சிறிய திறன் கோப்புகளாக (skill files) பிரித்தேன்.
- டிக்கெட் தேடல் என்பது ஒரு கோப்பு.
- கோட் வரலாறு (Code history) என்பது மற்றொன்று.
- புராஜெக்ட் மேனேஜ்மென்ட் என்பது மூன்றாவது.
முக்கிய prompt ஒரு router போலச் செயல்படுகிறது. அதற்குத் தேவைப்படும்போது மட்டுமே அது ஒரு திறனை (skill) ஏற்றுகிறது. இது ஒரு கோரிக்கைக்குத் தேவைப்படும் tokens எண்ணிக்கையை 40,000-லிருந்து 8,000 ஆகக் குறைத்தது. இதனால் ஏஜென்ட் தனது பணியில் கவனம் செலுத்துகிறது மற்றும் கோடைப் பராமரிப்பது எளிதாகிறது.
நான் பயனர் சுயவிவரங்களையும் (user profiles) சேர்த்தேன். ஒரு டெவலப்பருக்கு கோட் பாதைகள் (code paths) கிடைக்கும். ஒரு புராஜெக்ட் மேனேஜருக்கு நிலைச் சுருக்கங்கள் (status summaries) கிடைக்கும். யார் கேட்கிறார்கள் என்று சொல்லாமலேயே ஏஜென்ட் அறிந்து கொள்கிறது.
இது முழுமையானது அல்ல. நாங்கள் சில உண்மையான தோல்விகளைச் சந்தித்தோம்:
- Hallucinations: ஏஜென்ட் போலியான URL-களை உருவாக்கியது. தீர்வு: துல்லியமான முறைகளை (patterns) உறுதிப்படுத்துங்கள் அல்லது தேடலை (lookup) கட்டாயமாக்குங்கள்.
- Memory loss: நீண்ட உரையாடல்களில் ஏஜென்ட் விதிகளை மறந்தது. தீர்வு: ஒவ்வொரு முறையும் ஒரு கட்டமைக்கப்பட்ட செய்ய வேண்டிய பட்டியல் (structured to-do list) மூலம் தகவல்களைச் செலுத்துங்கள்.
- Infinite loops: ஏஜென்ட் மிக அதிகமான கருவி அழைப்புகளை (tool calls) செய்தது. தீர்வு: ஒவ்வொரு கோரிக்கைக்கும் ஒரு குறிப்பிட்ட வரம்பை (strict budget) நிர்ணயியுங்கள்.
- Safety: பயனர்கள் ஏஜென்ட்டை ஏமாற்ற முயன்றனர். தீர்வு: பாதுகாப்பிற்கு prompt-களை மட்டும் நம்பியிருக்க வேண்டாம். உங்கள் உள்கட்டமைப்பில் (infrastructure) read-only தரவுத்தள அங்கீகாரங்களைப் (database credentials) பயன்படுத்துங்கள்.
உண்மையான வேலை என்பது ஒரு வாராந்திர சுழற்சி (weekly loop) ஆகும். நான் லாக்-களை (logs) படிக்கிறேன். அமர்வுகளை (sessions) மதிப்பிடுகிறேன். திறன்களைச் சீரமைக்கிறேன். சுயவிவரங்களைப் புதுப்பிக்கிறேன்.
இந்தச் சுழற்சியைத் தவிர்த்தால், உங்களிடம் ஒரு டெமோ (demo) மட்டுமே இருக்கும். இதைச் செய்தால், உங்களிடம் ஒரு தயாரிப்பு (product) இருக்கும்.
இலக்கு வேகமான பதில்கள் மட்டுமல்ல. நிறுவனத்தின் அறிவை (institutional knowledge) நிறுவனத்திற்குள்ளேயே வைத்திருப்பதே இலக்கு. ஒரு நபர் வெளியேறும்போது, அவரது அறிவு உரையாடல் பதிவுகளில் (transcripts) தங்கிவிடும்.
உங்கள் தயாரிப்பிற்கான சுருக்கம்:
- உங்கள் சொந்த வரலாற்றின் மீது RAG மூலம் தொடங்கவும்.
- ஒரு பெரிய prompt-க்கு பதிலாக lazy-loaded திறன் கோப்புகளைப் பயன்படுத்தவும்.
- தனிப்பயனாக்கப்பட்ட சூழலுக்கு (personalized context) பயனர் சுயவிவரங்களைப் பயன்படுத்தவும்.
- AI-யை அதன் சொந்த container-இல் தனிமைப்படுத்தவும்.
- அறிவுறுத்தல்கள் மூலம் அல்லாமல், உள்கட்டமைப்பு மூலம் பாதுகாப்பை உறுதி செய்யவும்.
- ஒவ்வொரு வாரமும் உங்கள் லாக்-களைப் படிக்கவும்.
Optional learning community: https://t.me/GyaanSetuAi
