AI Blindspots – AI कोडिंग के दौरान मिले LLM के blindspots
(ezyang.github.io)AI कोडिंग के दौरान मिले LLM के blindspots. Claude Sonnet के आधार पर
- Stop Digging → समस्या आने पर दिशा बदलना मुश्किल
- Use Static Types → static type सेटअप की ज़रूरत
- Black Box Testing → implementation details पर अत्यधिक निर्भरता
- Use MCP Servers → MCP server सेटअप और सुरक्षा समस्याएँ
- Preparatory Refactoring → गैर-ज़रूरी refactoring हो सकता है
- Mise en Place → environment setup विफल होने पर समस्याएँ
- Stateless Tools → state-dependent tools में समस्याएँ
- Respect the Spec → spec का उल्लंघन होने की संभावना अधिक
- Bulldozer Method → दोहराए जाने वाले काम बहुत ज़्यादा करना
- Memento → context समझने की कमी से समस्या
- Requirements, not Solutions → requirements को स्पष्ट करना ज़रूरी
- Scientific Debugging → अनुमान-आधारित fixes से समस्या
- Use Automatic Code Formatting → code style में असंगति
- The Tail Wagging the Dog → महत्वपूर्ण काम छोड़कर छोटी समस्याओं पर अटक जाना
- Keep Files Small → बड़े files में बदलाव करते समय समस्या
- Know Your Limits → model अपनी सीमाएँ ठीक से नहीं पहचानता
- Read the Docs → सीखी हुई जानकारी के बाहर की info में errors
- Culture Eats Strategy → code style में consistency की कमी
- Walking Skeleton → पहले न्यूनतम working system को चलाना ज़रूरी
- Rule of Three → code duplication होने पर refactoring की ज़रूरत
समस्या में फँसे न रहना (Stop Digging)
- मौजूदा LLMs में काम के दौरान समस्या आने पर खुद रुककर दिशा बदलने की क्षमता कम होती है
- उदाहरण: feature X implement करते समय अगर पहले feature Y बनाना ज़रूरी हो, तब भी LLM मूल काम (X) पूरा करने की कोशिश करता रहता है
- यह इस मायने में फ़ायदा है कि LLM निर्देशों का ईमानदारी से पालन करता है, लेकिन समस्या पहचानकर दिशा बदलना कठिन होता है
- समस्या से बचने की रणनीतियाँ
- planning चरण में reasoning model का उपयोग करके काम की priority और prerequisite tasks तय करें
- Sonnet जैसे agent LLM files पढ़कर work plan बनाते हैं → user के स्पष्ट निर्देश के बिना भी ज़रूरी काम पहचान सकते हैं
- आदर्श रूप से LLM को समस्या पहचानकर user से confirmation माँग सकना चाहिए
- लेकिन इससे context consume होता है, इसलिए यह काम किसी अलग monitoring LLM से कराना बेहतर हो सकता है
-
Example
- Monte Carlo simulation की random sampling method बदलने के बाद Claude Code से tests अपडेट करने को कहा गया
- नया implementation non-deterministic था, इसलिए test results pass/fail random तरीके से हो रहे थे
- Claude Code ने इसे नहीं पहचाना और test conditions को ढीला करके समस्या सुलझाने की कोशिश की
- इसकी जगह उसे simulation को deterministic बनाने वाला refactoring सुझाना चाहिए था
- Monte Carlo simulation की random sampling method बदलने के बाद Claude Code से tests अपडेट करने को कहा गया
static types का उपयोग (Use Static Types)
- dynamic type बनाम static type system की बहस असल में prototyping की आसानी और long-term maintenance के बीच संतुलन का सवाल है
- LLM boilerplate code और refactoring संभाल सकता है, इसलिए prototyping के लिए language चुनने का दबाव कम हो जाता है
- इसलिए ऐसी language चुनी जा सकती है जो prototyping से ज़्यादा long-term maintenance के लिए बेहतर हो
- type errors ठीक करने की रणनीति
- agent settings में ऐसा configure करें कि बदलाव के बाद पैदा हुए type errors को LLM पहचान सके
- इससे वे दूसरे files भी आसानी से मिल जाते हैं जहाँ fixes की ज़रूरत है
- ध्यान देने योग्य बातें
- Python और JavaScript में gradual type system होता है → type checker को सख़्ती से configure करना ज़रूरी है
- सिद्धांततः Rust LLM के लिए उपयुक्त है, लेकिन अभी यह Python/JavaScript जितना अच्छा generate नहीं होता
ब्लैक बॉक्स testing (Black Box Testing)
- ब्लैक बॉक्स testing वह तरीका है जिसमें component की अंदरूनी संरचना जाने बिना उसकी functionality test की जाती है
- implementation files context में शामिल होने की वजह से LLM के लिए ब्लैक बॉक्स testing के सिद्धांतों का पालन करना मुश्किल है
- Sonnet 3.7 (Cursor के उपयोग में) code consistency बनाए रखने की प्रवृत्ति दिखाता है → test files में duplication हटाने की कोशिश करता है
- लेकिन ब्लैक बॉक्स testing में इस duplication को बनाए रखना bug detection के लिए फ़ायदेमंद हो सकता है
- आदर्श समाधान
- LLM को loaded files से implementation details को mask या summarize करने में सक्षम होना चाहिए
- architect को information-hiding boundaries साफ़ तौर पर परिभाषित करनी चाहिए
-
Example
- Sonnet 3.7 ने failing test ठीक करते समय hardcoded constant को मूल algorithm के आधार पर calculate करने के लिए बदल दिया
- जबकि मूल constant को वैसा ही रहना चाहिए था
- Sonnet 3.7 ने failing test ठीक करते समय hardcoded constant को मूल algorithm के आधार पर calculate करने के लिए बदल दिया
MCP servers का उपयोग (Use MCP Servers)
- Model Context Protocol(MCP) server ऐसा standard interface देता है जिससे LLM environment के साथ interact कर सके
- Cursor agent mode और Claude Code में MCP servers का व्यापक उपयोग होता है
- अलग RAG system के बिना भी LLM MCP calls के ज़रिए ज़रूरी files खोज और edit कर सकता है
- model test या build चलाने के बाद तुरंत समस्या भी ठीक कर सकता है
- custom MCP server लिखते समय ध्यान रखने योग्य बातें
- Cursor में YOLO mode चालू करके Cursor rules में shell commands जोड़े जा सकते हैं
- यह ख़तरनाक है → मनमाने shell commands environment को नुकसान पहुँचा सकते हैं
- विकल्प: ऐसा custom MCP server लिखें जो केवल कुछ खास commands को ही expose करे → सुरक्षा बेहतर होती है
- लेकिन मार्च 2025 तक Cursor में project-specific MCP server settings अभी कमज़ोर हैं
- Cursor में YOLO mode चालू करके Cursor rules में shell commands जोड़े जा सकते हैं
-
Example
- Sonnet 3.7 ने TypeScript project में type checking और error fixing के लिए MCP का उपयोग किया
- terminal output को manually copy-paste करने की ज़रूरत बिना यह अपने-आप हो गया
- लेकिन कभी-कभी यह ग़लत command (
npm run typecheck) infer कर लेता है
- Sonnet 3.7 ने TypeScript project में type checking और error fixing के लिए MCP का उपयोग किया
तैयारी वाला refactoring (Preparatory Refactoring)
- preparatory refactoring वह रणनीति है जिसमें असली बदलाव से पहले refactoring करके काम को आसान बनाया जाता है
- refactoring अर्थ-संरक्षण वाला काम होता है, इसलिए इसे वास्तविक बदलाव की तुलना में evaluate करना आसान है
- पहले refactoring, फिर बदलाव → review और error fixing आसान हो जाते हैं
- मौजूदा LLM की समस्याएँ
- पहले refactoring किए बिना सब कुछ एक ही बार में करने की प्रवृत्ति
- गैर-ज़रूरी cleanup भी कर देता है → excessive refactoring हो सकता है
- Cursor Sonnet 3.7 में निर्देश पालन की सटीकता कम है → असंबंधित refactoring हो सकता है
- सुधार के तरीके
- साफ़ निर्देश दें कि बदलाव से पहले refactoring चरण में ही code edit किया जाए
- LLM जिस code range को edit कर सकता है उसे स्पष्ट रूप से परिभाषित करें → गैर-ज़रूरी बदलाव रुकेंगे
-
Example
- LLM को import error ठीक करने को कहा गया → fix के बाद उसने lambda functions में type annotations जोड़ दिए
- इनमें से कुछ annotations ग़लत जोड़े गए, जिससे agent loop बन गया
- LLM को import error ठीक करने को कहा गया → fix के बाद उसने lambda functions में type annotations जोड़ दिए
Mise en Place
- खाना पकाने में Mise en Place का मतलब है काम शुरू करने से पहले सभी सामग्री और tools को व्यवस्थित कर लेना
- LLM में Mise en Place का मतलब है काम शुरू होने से पहले ज़रूरी rules, MCP और development environment को पूरी तरह सेट कर लेना
- Sonnet 3.7 टूटे हुए environment को ठीक करने में कमज़ोर है
- StackOverflow से commands copy-paste करके समस्या सुलझाने की कोशिश कर सकता है → environment खराब होने का जोखिम
- काम शुरू करने से पहले environment सही तरह सेट होना चाहिए ताकि Sonnet debugging loop में न फँसे
-
Example
npm linkसमस्या के कारण VSCode दूसरे local project के import को पहचान नहीं पा रहा था- Cursor lint और tests ठीक करते समय इसी पर अटक गया, लेकिन
npm unlinkचलाने की ज़रूरत नहीं पहचान पाया
- Cursor lint और tests ठीक करते समय इसी पर अटक गया, लेकिन
Stateless tools का उपयोग (Stateless Tools)
- टूल्स को state सेव किए बिना हर बार स्वतंत्र रूप से चलना चाहिए
- shell वर्तमान working directory state पर निर्भर करता है → state सेव होने से भ्रम पैदा हो सकता है
- Sonnet 3.7 वर्तमान working directory state को सटीक रूप से ट्रैक नहीं कर पाता
- सभी commands को project root directory से चलाने योग्य बनाना ज़रूरी है
- सुधार के उपाय
- state बदलने की ज़रूरत वाले tool commands का उपयोग कम से कम करें
- अगर state अनिवार्य हो, तो consistency बनाए रखने के लिए वर्तमान state को लगातार model को देते रहें
-
Example
- अगर TypeScript project common, backend, frontend तीन modules से बना हो
- root से चलने पर Cursor को सही directory में
cdकरना पड़ता है → directory confusion होता है - हर module को अलग workspace के रूप में खोलकर काम करने पर समस्या हल हो गई
- root से चलने पर Cursor को सही directory में
- अगर TypeScript project common, backend, frontend तीन modules से बना हो
स्पेक का पालन (Respect the Spec)
- system बदलते समय किन हिस्सों को बदला जा सकता है और किन्हें नहीं, यह साफ़ तौर पर अलग होना चाहिए
- public API बदलने पर backward compatibility टूटने से बचाना ज़रूरी है
- external systems के साथ integration करते समय वास्तव में मौजूद API के अनुसार चलना चाहिए → मनचाहे तरीके से बदला नहीं जा सकता
- test fail होने पर tests हटाने की मनाही होनी चाहिए → कारण समझकर उसे ठीक करना चाहिए
- LLM की समस्याएँ
- spec का उल्लंघन करने की संभावना अधिक होती है → tests हटाना, API बदलना आदि आसानी से कर देता है
- spec का पालन सामान्य समझ की बात है, लेकिन इसे prompt में स्पष्ट लिखना पड़ सकता है
- कुछ सीमाएँ केवल code review के दौरान ही पकड़ी जा सकती हैं
-
Example
- Sonnet ने test ठीक करने में विफल होने के बाद test contents को
assert Trueसे बदल दिया - public function
passkey वाला dict लौटाता था → Sonnet ने उसेpass_में बदलने की कोशिश की (reserved word समस्या)
- Sonnet ने test ठीक करने में विफल होने के बाद test contents को
बुलडोज़र तरीका (Bulldozer Method)
- बुलडोज़र तरीका एक ऐसी रणनीति है जिसमें सरल दोहराए जाने वाले काम से समस्या हल की जाती है और सीखने के असर से गति बढ़ती है
- AI coding मूल रूप से repetitive work में मज़बूत है → पर्याप्त tokens हों तो बड़े पैमाने पर refactoring संभव है
- जिन समस्याओं को इंसान "काम बहुत ज़्यादा है" कहकर छोड़ देता है, उन्हें भी LLM हल कर सकता है
- लेकिन LLM एक ही काम बार-बार दोहरा सकता है, इसलिए यह देखना ज़रूरी है कि वह वास्तव में क्या कर रहा है
-
Example
- Haskell या Rust में core function बदलने पर व्यापक refactoring की ज़रूरत पड़ सकती है
- LLM compile errors पढ़ना → fix करना → फिर से compile करना, इस प्रक्रिया को automate कर सकता है
- hardcoded test values बदलते समय LLM tests दोबारा चलाकर अपने-आप fixes कर सकता है
- Haskell या Rust में core function बदलने पर व्यापक refactoring की ज़रूरत पड़ सकती है
मेमेंटो (Memento)
- LLM state याद नहीं रख पाता → हर task में उसे codebase को शुरुआत से फिर समझना पड़ता है
- prompt, explicit/implicit context, और agent mode में model द्वारा लोड की गई files के आधार पर ही काम होता है
- हर task में codebase को फिर से समझना पड़ता है → शुरुआती setup विफल होने पर ग़लत काम करने की संभावना बढ़ जाती है
- समस्या से बचाव की रणनीतियाँ
- LLM को refer करने योग्य documents स्पष्ट रूप से दें
- model के लिए ज़रूरी जानकारी आसानी से ढूँढने लायक व्यवस्था करें
- project का पूरा संदर्भ देने के बाद ही बड़े बदलावों के लिए कहें
-
Example
- Sonnet 3.7 से मौजूदा project के end-to-end test plan बनाने को कहा गया
- उसने project के पूरे उद्देश्य को testing समझ लिया → README को test-केंद्रित रूप में बदल दिया
- Sonnet 3.7 से मौजूदा project के end-to-end test plan बनाने को कहा गया
आवश्यकताओं की स्पष्टता (Requirements, not Solutions)
- software engineering में आम गलती यह है कि requirements स्पष्ट किए बिना सीधे solution सुझा दिया जाता है
- अगर problem space काफ़ी सीमित हो, तो केवल requirements स्पष्ट करने से ही solution अपने-आप तय हो सकता है
- requirements अस्पष्ट हों तो solution को लेकर अनावश्यक बहस हो सकती है
- LLM की समस्याएँ
- LLM requirements नहीं जानता → training patterns के आधार पर सबसे संभावित जवाब बनाता है
- स्पष्ट requirements के बिना task देने पर अजीब या अप्रासंगिक परिणाम आ सकते हैं
- prompt बदलकर ग़लत interpretation सुधारी जा सकती है → लेकिन अगर ग़लत interpretation context में रह जाए, तो उसे ठीक करना मुश्किल हो जाता है
- सुधार के उपाय
- अगर किसी खास तरीके का solution चाहिए, तो उसे स्पष्ट रूप से निर्देशित करें
- LLM निर्देशों का ठीक-ठीक पालन करता है, इसलिए ग़लत तरीके से निर्देश देने पर परिणाम भी ग़लत या inaccurate हो सकते हैं
-
Example
- Sonnet से visualization बनाने को कहने पर वह default रूप से SVG बनाता है
- "interactive" स्पष्ट लिखने पर वह React आधारित application बनाता है → एक keyword से बड़ा अंतर आ जाता है
- Sonnet से visualization बनाने को कहने पर वह default रूप से SVG बनाता है
वैज्ञानिक डिबगिंग (Scientific Debugging)
- bug fix करने के तरीके broadly दो तरह के होते हैं
- बेतरतीब बदलाव करके किस्मत पर छोड़ देना
- system के काम करने के तरीके का तार्किक विश्लेषण करके actual state और expected state के mismatch का कारण ढूँढना
- वैज्ञानिक debugging (तार्किक विश्लेषण) लंबे समय में बेहतर तरीका है
- LLM की समस्याएँ
- LLM की reasoning क्षमता सीमित होती है, इसलिए वैज्ञानिक approach अपनाना कठिन होता है
- पहले "सही जवाब का अंदाज़ा" लगाकर तुरंत fix करने की कोशिश करता है → विफल होने पर random fixes दोहराने लगता है (agent loop)
- debugging के लिए Grok 3, DeepSeek-R1 जैसे reasoning models अधिक उपयुक्त हैं
- सुधार के उपाय
- model को कारण का विश्लेषण करने का निर्देश दें, या उपयोगकर्ता स्वयं कारण बताए → fix success rate बढ़ती है
- समस्या का सही कारण बता दिया जाए तो model बेहतर solution सुझा सकता है
-
Example
- Sonnet 3.7 में pip के बिना default uv environment में package install error हुआ
- कारण समझने में विफल रहने के बाद उसने random कोशिशें दोहराईं → tokens की बर्बादी हुई और debugging विफल रही
- Sonnet 3.7 में pip के बिना default uv environment में package install error हुआ
ऑटोमैटिक कोड फ़ॉर्मैटिंग का उपयोग (Use Automatic Code Formatting)
- automatic code formatting tools (
gofmt,rustfmt,blackआदि) consistent code style बनाए रखने में उपयोगी हैं- LLM mechanical rules (जैसे blank line में spaces न होना, 78-character line length limit आदि) का पालन करने में कमज़ोर है
- formatting टूल्स पर छोड़ देना चाहिए और LLM को complex tasks पर ध्यान देना चाहिए
- यही सिद्धांत lint fixes पर भी लागू होता है
- auto-fixable lint का उपयोग सुझाया जाता है
- LLM के resources को complex problem solving पर केंद्रित करना चाहिए
जब पूँछ कुत्ते को हिलाने लगे (The Tail Wagging the Dog)
- इसका मतलब है ऐसी स्थिति जहाँ मामूली समस्या ज़्यादा महत्वपूर्ण समस्या को नियंत्रित करने लगे
- low-level समस्या सुलझाने में उलझकर पूरे code लिखने का मूल उद्देश्य भुलाया जा सकता है
- LLM chat session में सारी जानकारी context में शामिल कर लेता है → importance तय करना मुश्किल हो जाता है
- सुधार के उपाय
- शुरुआत में स्पष्ट prompt दें → LLM को महत्वपूर्ण काम पर केंद्रित किया जा सकता है
- Claude Code sub-agents के ज़रिए specific tasks कराता है ताकि global context दूषित न हो
-
Example
- LLM से किसी खास काम के तरीके पर सोचने को कहने पर वह केवल सोचने के बजाय वास्तव में काम शुरू करने की कोशिश कर सकता है
फ़ाइलों का आकार छोटा रखें (Keep Files Small)
- code file size को लेकर बहस लंबे समय से चलती आई है
- single responsibility principle (प्रति फ़ाइल एक class) लागू करना बनाम परिस्थिति के अनुसार बड़ी files स्वीकार करना
- अगर files बहुत बड़ी हों, तो RAG system में file-level context loading के दौरान समस्या हो सकती है
- Cursor जैसे IDE में patch apply विफल हो सकता है → सफल होने पर भी apply होने में काफ़ी समय लग सकता है
- उदाहरण: Cursor 0.45.17 में 64KB file पर 55 edits लागू करने में काफ़ी समय लगा
- Sonnet 3.7 को 128KB से बड़ी files संपादित करने में कठिनाई होती है (200K token context window सीमा)
- सुधार के उपाय
- file size छोटा रखें → LLM अपने-आप import आदि संभाल सकता है
-
Example
- Sonnet 3.7 ने 471KB की Python file में एक छोटी test class को move करने की कोशिश की
- बदलाव छोटा था, लेकिन Cursor patcher उस edit को लागू नहीं कर पाया
- Sonnet 3.7 ने 471KB की Python file में एक छोटी test class को move करने की कोशिश की
सीमाओं को पहचानें (Know Your Limits)
- जब tools की कमी हो या क्षमता की सीमा आ जाए, तो समस्या को पहचानना और मदद मांगना ज़रूरी है
- Sonnet 3.7 अपनी सीमाओं को पहचानने में कमजोर है
- स्पष्ट prompt देने पर यह सीमाओं को पहचान सकता है → किसी खास विषय में hallucination होने पर warning सेट करना ज़रूरी है
- समस्याएँ
- Sonnet 3.7 गलत तरीके से मान लेता है कि वह shell command चला सकता है
- अगर shell command उपलब्ध न हो, तो यह रैंडम shell script बनाने की कोशिश कर सकता है → environment को नुकसान पहुंचने का जोखिम
- यह "X चलाऊँगा" कहने के बाद पूरी तरह अलग Y के लिए call बना सकता है
- Sonnet 3.7 गलत तरीके से मान लेता है कि वह shell command चला सकता है
- सुधार के तरीके
- prompt बदलें या केवल इच्छित काम करने वाला dedicated tool दें
- किसी specific tool को देने पर बेकार के shell call रोके जा सकते हैं
- prompt बदलें या केवल इच्छित काम करने वाला dedicated tool दें
-
Example
- Sonnet 3.7 ने file execute permission देने के दौरान गलत shell script बनाने की कोशिश की
- command error आने के बाद गलत fix की कोशिश बार-बार होती रही
- Sonnet 3.7 ने file execute permission देने के दौरान गलत shell script बनाने की कोशिश की
दस्तावेज़ पढ़ें (Read the Docs)
- किसी नए framework या library को सीखते समय tutorial code बदलकर छोटे काम किए जा सकते हैं
- लेकिन आखिर में पूरे काम करने के तरीके को समझने के लिए दस्तावेज़ शुरू से अंत तक पढ़ना ज़रूरी है
- LLM के फायदे
- लोकप्रिय framework अक्सर pretraining में शामिल होते हैं, इसलिए इनके ज़्यादातर इस्तेमाल इसे याद रहते हैं
- लेकिन niche tools या knowledge cutoff के बाद आए tools में hallucination हो सकती है
- Sonnet web search को support नहीं करता → दस्तावेज़ manually देने पड़ते हैं
- Cursor में URL देने पर वह अपने-आप context में शामिल हो सकता है
-
Example
- जब LLM से Python function calling के लिए YAML लिखने को कहा गया, तो उसने गलत config बनाया
- दस्तावेज़ देने के बाद उसने सही fix किया और output format भी बेहतर हुआ
- जब LLM से Python function calling के लिए YAML लिखने को कहा गया, तो उसने गलत config बनाया
संस्कृति रणनीति पर भारी पड़ती है (Culture Eats Strategy)
- टीम की संस्कृति इस बात पर निर्णायक असर डालती है कि strategy कितनी अच्छी तरह लागू होगी
- LLM पहले से सीखे गए style और context window के आधार पर code बनाता है
- जो library या style context में बार-बार दिखते हैं, उन्हें यह प्राथमिकता देता है
- अगर स्पष्ट निर्देश न हों, तो यह default style लागू करता है
- LLM style बदलने की रणनीतियाँ
- Cursor rules बदलना (prompt बदलना)
- मौजूदा code style को मनचाहे रूप में refactor करना → इससे अगले token prediction पर असर पड़ता है
- codebase का आकार prompt से ज़्यादा असर डालता है → इसलिए codebase बदलना मूल समाधान है
-
Example
- Sonnet 3.7 Python में synchronous code को प्राथमिकता देता है
- asynchronous code generation के लिए मौजूदा ज़्यादातर code को async में port करने के बाद सफलता मिली
- Sonnet 3.7 Python में synchronous code को प्राथमिकता देता है
वॉकिंग स्केलेटन (Walking Skeleton)
- वॉकिंग स्केलेटन न्यूनतम end-to-end system लागू करने की एक strategy है
- भले यह परफेक्ट न हो, पहले पूरे system को चलने लायक बनाया जाता है और फिर details सुधारी जाती हैं
- LLM coding के दौर में पूरे system को तेजी से बनाना और आसान हो गया है
- system काम करने लगे तो अगला कदम साफ़ हो जाता है → इसलिए जल्दी working state तक पहुँचना महत्वपूर्ण है
- LLM अपने लिखे code को खुद इस्तेमाल नहीं कर सकता, इसलिए working state हासिल करना महत्वपूर्ण है
तीसरा नियम (Rule of Three)
- एक ही code की नकल दो बार तक स्वीकार्य है, लेकिन तीसरी बार नकल होने पर refactoring ज़रूरी है
- यह DRY(Don't Repeat Yourself) सिद्धांत का बेहतर संस्करण है
- इससे duplication हटाने का सही समय स्पष्ट होता है → तीसरी नकल पर refactoring करें
- LLM की समस्याएँ
- LLM में duplicate code बनाने की प्रवृत्ति होती है
- अगर prompt के बिना बदलाव करने को कहें, तो यह अक्सर पूरे code को फिर से कॉपी करके उसी में बदलाव कर देता है
- duplication हटाना तभी होता है जब model खुद यह तय करे → इसलिए स्पष्ट निर्देश ज़रूरी हैं
- सुधार के तरीके
- साफ़ तौर पर duplication हटाने का निर्देश देना ज़रूरी है
- अगर मौजूदा code में बहुत duplication है, तो model उसी pattern को दोहराता रह सकता है
-
Example
- LLM से test code लिखवाने पर एक ही logic कई tests में दोहराया गया
- helper method बनाने का स्पष्ट निर्देश देने के बाद समस्या हल हुई
- agent mode
- LLM से test code लिखवाने पर एक ही logic कई tests में दोहराया गया
1 टिप्पणियां
Hacker News राय
LLM इंसानों से अलग तरीके से गलतियाँ करते हैं, और इन्हें पकड़ना मुश्किल होता है
अगर LLM को requirements नहीं पता हों, तो वह training data से सबसे संभावित जवाब भर देता है
software engineering में requirements को स्पष्ट करना महत्वपूर्ण है
LLM की coding क्षमता "बहुत स्मार्ट junior programmer" के स्तर की है
LLM बहुत ज़्यादा जवाब देने की कोशिश करते हैं
blog पर posts बढ़ने के साथ उन्हें व्यवस्थित करने की ज़रूरत है
LLM के साथ coding करते समय कुछ उपयोगी सलाह
LLM calculation और arithmetic में कमजोर हैं
human coders के साथ मिलाकर सोचने वाली बातें
एक मामला जिसमें तीन LLM ने ऐसा "bug" खोज लिया जो था ही नहीं