तुमचा AI भ्रमित (hallucinating) होत नाहीये. तो फक्त अंदाज (guessing) लावत आहे.
AI मॉडेल्सना ते कधी चुकतात हे माहित नसते. अनिश्चितता दर्शवण्यासाठी त्यांच्याकडे कोणताही संकेत (signal) नसतो. ते तुमच्या इनपुटच्या आधारे सर्वात संभाव्य पुढचा शब्द तयार करतात. ते बरोबर असताना आणि चुकल्या असतानाही तितकाच आत्मविश्वास दाखवतात.
ही प्रणालीमधील त्रुटी नाही. आर्किटेक्चर (architecture) अशा प्रकारेच काम करते.
LLMs हे 'नेक्स्ट-टोकन प्रेडिक्टर्स' (next-token predictors) आहेत. ते तथ्यांच्या डेटाबेसची तपासणी करत नाहीत. ते मोठ्या प्रमाणावर पॅटर्न पूर्ण करण्याचे (pattern completion) काम करतात. जर मॉडेलने चुकीचे उत्तर दिले, तर ते तुमच्या प्रॉम्प्टमुळे संभाव्यता त्या निकालाकडे वळल्यामुळे घडते.
हा फरक समस्या सोडवण्याची तुमची पद्धत बदलतो. जर मॉडेल भ्रमित (hallucinating) होत असेल, तर तुम्ही ते सुधारू शकत नाही. पण जर तुमचा प्रॉम्प्ट अस्पष्ट असल्यामुळे मॉडेल अंदाज लावत असेल, तर तुम्ही ते आत्ताच सुधारू शकता.
Datawise मध्ये, आम्ही AI मॉडेल्सचे बेंचमार्किंग करतो. आम्हाला एक सततचा पॅटर्न दिसून येतो. जेव्हा इनपुटमध्ये तपशीलाचा अभाव असतो, तेव्हा मॉडेल्स चुकीची उत्तरे देतात. मॉडेल तुम्ही प्रत्यक्षात विचारलेल्या प्रश्नाचे उत्तर देते, तुम्ही विचारण्याचा जो हेतू ठेवला होता त्या प्रश्नाचे नाही.
या दोन प्रॉम्प्ट्सची तुलना करा:
- "Python मध्ये Postgres ला कसे कनेक्ट करू?"
- "Ubuntu 24.04 वर, Cloudflare Tunnel च्या मागे, 30-सेकंद टाइमआउटसह, psycopg3 आणि 10 च्या कनेक्शन पूलचा वापर करून Python मध्ये Postgres ला कसे कनेक्ट करू?"
पहिला प्रॉम्प्ट मॉडेलला सहा वेळा अंदाज लावण्यास भाग पाडतो. दुसरा प्रॉम्प्ट मर्यादा (constraints) प्रदान करतो.
विशिष्ट प्रॉम्प्ट लिहिण्यातील अडचण म्हणजे तुमच्या स्वतःच्या गरजा जाणून घेण्यातील अडचण. जर तुम्ही विशिष्ट प्रॉम्प्ट लिहू शकत नसाल, तर तुम्हाला अजून काय हवे आहे हे तुम्हाला माहित नाही. प्रॉम्प्टिंग थांबवा आणि विचार करायला सुरुवात करा.
AI चुकीचे आउटपुट देखील तितक्याच प्रवाही भाषेत देते जितके बरोबर आउटपुट देते. मजकूर अधिकृत (authoritative) वाटतो. कोड स्वच्छ दिसतो. मॉडेल एखादी पोकळी भरून काढत आहे, असा कोणताही संकेत मिळत नाही.
वरिष्ठ इंजिनिअर्स केवळ आउटपुटवर विश्वास ठेवत नाहीत. ते विचारतात: मी अर्थ लावण्यास (interpretation) कुठे जागा सोडली आहे? प्रत्येक संदिग्ध शब्द म्हणजे मॉडेलने तुमच्यासाठी घेतलेला एक निर्णय आहे.
केवळ शब्दांत थोडा बदल करून प्रॉम्प्ट पुन्हा सबमिट करू नका. हे लॉग्स (logs) तपासल्याशिवाय एखादी सर्व्हिस रीस्टार्ट करण्यासारखे आहे. तुम्ही मूळ कारण (root cause) सुधारत नाही आहात.
जेव्हा आउटपुट चुकीचे असते, तेव्हा आधी तुमचा प्रॉम्प्ट वाचा. तुम्ही अर्थ लावण्यास कुठे जागा सोडली आहे ते शोधा. खालील गोष्टींसाठी मर्यादा (constraints) जोडा:
- इनपुट आणि आउटपुट (Inputs and outputs)
- एरर हँडलिंग (Error handling)
- डिपेंडन्सीज (Dependencies)
- एज केसेस (Edge cases)
'Enter' दाबण्यापूर्वी, तुमचा प्रॉम्प्ट असा वाचा जणू तुम्ही कोणताही संदर्भ नसलेले एक नवीन इंजिनिअर आहात. तुम्हाला ज्या गोष्टींचा अंदाज लावावा लागतो, तिथे मॉडेल देखील अंदाज लावेल.
मॉडेल तुम्हाला तुमच्या सूचनांमधील त्रुटी दर्शवते. या त्रुटी दूर करा. अधिक अचूक आणि स्पष्ट प्रॉम्प्ट्स लिहा.
ऐच्छिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi