जेव्हा तुम्ही पहिल्यांदा कृत्रिम बुद्धिमत्तेवर (AI) काम करायला सुरुवात करता, तेव्हा सर्वजण एकाच गोष्टीवर भर देतात: मॉडेल. ते म्हणतात, योग्य मॉडेल निवडा आणि बाकी सर्व गोष्टी आपोआप सुटतील. माझ्या स्वतःच्या प्रयोगांनंतर काही आठवड्यांत मला हे समजले की हे अजिबात खरे नाही. उपलब्ध असलेल्या लार्ज लँग्वेज मॉडेल्समध्ये (LLMs) निवड करणे महत्त्वाचे आहेच, पण ते कामाच्या केवळ वीस टक्के भागाइतके आहे. उरलेले काम हे सिस्टिमचे आहे. ते म्हणजे प्लंबिंग, कौशल्य आणि सततचे परीक्षण. ही जाणीव मला सुरुवातीलाच झाली आणि त्यानंतर मी प्रत्येक प्रकल्पाकडे बघण्याचा माझा दृष्टिकोन बदलला आहे.

मॉडेल ही केवळ सुरुवात आहे

सुरुवात करणाऱ्यांना मॉडेल्सबद्दल वेड का लागते, हे समजणे सोपे आहे. रिलीज नोट्स अधिक चांगले तर्क (reasoning), मोठे कॉन्टेक्स्ट विंडोज (context windows) आणि अधिक स्पष्ट आउटपुटचे आश्वासन देतात. हे सुधारणा वास्तविक आहेत, पण त्या सामान्य वापरासाठी आहेत. एखादे अत्याधुनिक मॉडेल तुमच्या कंपनीची रिफंड पॉलिसी आपोआप जाणून घेणार नाही. जोपर्यंत तुम्ही त्याला सांगत नाही, तोपर्यंत ते तुमच्या मोबाईल अॅपसाठी प्रतिसाद (responses) योग्य स्वरूपात तयार करणार नाही. ते हवेतून लाईव्ह इन्व्हेंटरी डेटा काढू शकत नाही.

मी हे कष्टाने शिकलो. माझा पहिला प्रोटोटाइप एका सक्षम मॉडेलचा वापर करत असे आणि सुंदर, आत्मविश्वासाने भरलेले परिच्छेद तयार करत असे, जे कधीकधी पूर्णपणे चुकीचे असायचे. मजकूर व्यावसायिक वाटत होता कारण मॉडेलने टोनवर प्रभुत्व मिळवले होते, परंतु त्याच्याकडे चालू माहितीचा कोणताही प्रवेश नव्हता. मी दिवसभर मॉडेल बेंचमार्कची तुलना करण्यात घालवले होते, जेव्हा मला डेटा पाइपलाइन्स आणि कॉन्टेक्स्ट इंजेक्शन (context injection) बद्दल विचार करायला हवे होते. मॉडेलमध्ये काही बिघाड नव्हता, तर त्याच्याभोवतीची सिस्टिम अपूर्ण होती. जेव्हा तुम्ही केवळ डेमोमधून अशा सॉफ्टवेअरकडे वळता ज्यावर लोक खरोखर अवलंबून असतात, तेव्हा हा फरक अत्यंत महत्त्वाचा ठरतो.

प्रॉम्प्ट्स हे कोड आहेत, केवळ सूचना नाहीत

कोणत्याही विश्वसनीय AI ॲप्लिकेशनच्या केंद्रस्थानी उच्च दर्जाचे प्रॉम्प्ट्स असतात. सुरुवातीला, मी प्रॉम्प्ट्सकडे सर्च क्वेरीजप्रमाणे वागलो—थोडक्यात, अनौपचारिक आणि आशावादी. मी मॉडेलला "हे सारांशित करा" किंवा "मदत करा" असे सांगून सर्वोत्तम निकालाची अपेक्षा करायचो. परिणाम उपयुक्त आणि निरुपयोगी अशा दोन्ही टोकांवर असायचे आणि मला त्याचे कारणही समजत नसे.

आता मी प्रॉम्प्ट्सकडे हलके प्रोग्राम्स (lightweight programs) म्हणून पाहतो. एक चांगला प्रॉम्प्ट भूमिका (role) निश्चित करतो, आउटपुट फॉरमॅट स्पष्ट करतो, आवश्यकतेनुसार उदाहरणे देतो आणि मर्यादा ठरवतो. जर मला JSON हवे असेल, तर मी JSON ची मागणी करतो आणि त्याचा स्कीमा (schema) दाखवतो. जर मला संक्षिप्त उत्तर हवे असेल, तर मी स्पष्टपणे लांबी मर्यादित करतो आणि प्रस्तावना (preamble) टाळण्यास सांगतो. पुनरावृत्ती (Iteration) महत्त्वाची आहे. मी प्रॉम्प्ट्स आणि त्यांच्या आउटपुटचा एक लॉग ठेवतो आणि एका वेळी एक व्हेरिएबल बदलून पाहतो. प्रॉम्प्टमधील एक संदिग्ध विशेषण देखील संपूर्ण वर्कफ्लोचे वर्तन बदलू शकते. या संवेदनशीलतेसाठी अंदाज लावण्यापेक्षा शिस्तबद्धतेची गरज असते.

कचरा आत, कचरा बाहेर (Garbage In, Garbage Out)

अनेक AI प्रकल्प शांतपणे जिथे अपयशी ठरतात, ते म्हणजे विश्वसनीय डेटा रिट्रिव्हल (data retrieval). मॉडेल्सना खाजगी किंवा चालू डेटाचा प्रवेश देण्यासाठी 'रिट्रिव्हल-ऑगमेंटेड जनरेशन' (RAG) ही एक मानक पद्धत बनली आहे. ही कल्पना सोपी आहे: संबंधित कागदपत्रे मिळवा, ती मॉडेलच्या कॉन्टेक्स्ट विंडोमध्ये टाका आणि मॉडेलला तथ्यांवर आधारित तर्क करू द्या. परंतु प्रत्यक्ष अंमलबजावणी अधिक गुंतागुंतीची आहे.

मी एका साध्या नॉलेज बेसचे डीबगिंग करण्यात बराच वेळ घालवला, जो वारंवार असंबंधित निकाल देत होता. मॉडेल ठीक होते, पण रिट्रिव्हल लेयरमध्ये दोष होता. माझे चंक्स (chunks) खूप लहान होते आणि त्यातून संदर्भ (context) निघून गेला होता. ड्युप्लिकेट हेडर्स साफ न करता माझे एम्बेडिंग्स (embeddings) तयार झाले होते. सिमिलॅरिटी सर्चने तांत्रिकदृष्ट्या जवळचा मजकूर शोधला होता, पण तो चुकीच्या प्रश्नाचे उत्तर देत होता. हे सुधारण्यासाठी मला चंकिंग स्ट्रॅटेजीवर पुन्हा विचार करावा लागला, मेटाडेटा फिल्टर्स जोडले आणि री-रँकिंग स्टेप (re-ranking step) सुरू करावी लागली. एकदा का रिट्रिव्हल स्थिर झाले की, मॉडेलची उत्तरे लगेच सुधारली. धडा स्पष्ट होता: तुम्ही खराब डेटा रिट्रिव्हल सुधारण्यासाठी चांगले मॉडेल वापरून चालणार नाही. तुम्हाला पाइपलाइन योग्यरित्या तयार करावी लागेल.

ज्याचे मोजमाप करता येत नाही, त्यात सुधारणा करता येत नाही

सततचे मूल्यमापन ही अशी सवय आहे जी प्रयोग आणि उत्पादने यातील फरक स्पष्ट करते. जेव्हा मी सुरुवात केली, तेव्हा मी केवळ अनुभवावरून (vibe) मूल्यमापन करायचो. मी पाच आउटपुट वाचायचो, होकार द्यायचो आणि पुढे जायचो. जोपर्यंत वापरकर्ता सहावा प्रश्न विचारत नाही आणि त्याला काहीतरी विचित्र उत्तर मिळत नाही, तोपर्यंत हे चालते.

आता मी प्रत्येक फीचरसाठी लहान मूल्यमापन संच (evaluation sets) तयार करतो. मी वापरकर्त्यांच्या वास्तविक क्वेरीज गोळा करतो, अपेक्षित वर्तन लेबल करतो आणि त्यांच्यावर स्वयंचलित तपासणी (automated checks) चालवतो. मी 'ड्रिफ्ट' (drift) कडे लक्ष देतो: गेल्या महिन्यात काम करणारा प्रॉम्प्ट मॉडेल अपडेटनंतर किंवा मूळ डेटा बदलल्यानंतर खराब होऊ शकतो. मी शैलीचे मूल्यमापन (style evaluation) आणि तथ्यात्मक अचूकता (factual accuracy) वेगळी ठेवतो. व्यावसायिक दिसणे चांगले आहे; पण अचूक असणे अनिवार्य आहे. या लूपशिवाय, तुम्ही केवळ आशेवर उत्पादन पाठवत असता, आणि आशा ही चाचणीची रणनीती नाही.

मशीनच्या मर्यादा जाणून घ्या

Understanding model limits has saved me from overpromising and underdelivering. These systems have genuine constraints. Context windows are larger than they used to be, but they still have ceilings, and stuffing them full degrades performance at the edges. Models hallucinate, especially on niche topics where training data is thin. They struggle with precise arithmetic and certain types of multi-step logic. They are sensitive to phrasing.

Cost and speed are limits too. A model that generates perfect prose in ten seconds might be unusable in a real-time chat interface. I now map features to latency budgets early. If a task needs sub-second response, I may precompute answers, cache aggressively, or use a smaller model for the first draft and a larger one only for refinement. Working within constraints is standard engineering. AI is no different.

Building for Real People

I am currently studying LLM applications and software engineering with a simple goal: build tools people use every day. That sounds obvious, but the gap between a cool prototype and a daily-use tool is massive. A demo can tolerate a forty-second pause and a verbose answer. A person trying to finish a task before a meeting cannot.

Daily-use tools need error handling, fallbacks, and clear UI when the model is uncertain. They need to integrate with existing workflows rather than forcing new ones. I think about edge cases now: what happens when the model refuses to answer, when the context overflows, or when the API times out? Shipping AI software means answering those questions with code, not just optimism.

Let's Share What We Learn

I want to connect with other developers who are navigating the same path. The field moves quickly, and the best practices are still being written. No one has all the answers. Whether you are wrestling with prompt design, fighting retrieval pipelines, or figuring out how to evaluate outputs at scale, the problems are better solved together.

Let us share what we learn. Not polished conference talks, but the messy middle. The broken pipelines, the prompt tweaks that finally worked, the evaluation tests that caught a bug before launch. That granular, honest exchange is what turns individual experiments into a shared body of knowledge.

The Real Takeaway

If you are starting out with AI development, spend less time searching for the