LLMs से गणित करवाना बंद करें
वे इसमें खराब हैं। यहाँ बताया गया है कि इसे कैसे ठीक करें।
भाषा मॉडलों के बारे में सबसे अजीब बात क्या है? वे क्वांटम यांत्रिकी समझा सकते हैं, कविता लिख सकते हैं, और आपके TypeScript को डीबग कर सकते हैं… लेकिन उनसे 18472 को 9347 से गुणा करने को कहें, तो अच्छा खासा मौका है कि वे आत्मविश्वास के साथ कुछ ऐसा जवाब देंगे जो हजारों से गलत होगा।
यह मुझे तब तक हैरान करता था, जब तक मुझे यह एहसास नहीं हुआ कि हम वास्तव में उनसे क्या करवा रहे हैं। हम एक पैटर्न-मैचिंग इंजन से कैलकुलेटर बनने की उम्मीद कर रहे हैं। यह ऐसा है जैसे किसी जिम्नास्ट से अपने चेकबुक का हिसाब संभालने को कहना, सिर्फ इसलिए कि वे “संतुलन” की अवधारणा समझते हैं।
सच्चाई यह है कि LLM कुछ भी गणना नहीं करते। जब आप GPT या Claude से पूछते हैं कि 2 + 2 कितना होता है, तो वे जोड़ नहीं रहे होते। वे भविष्यवाणी कर रहे होते हैं कि “2 + 2 =” के बाद “4” टोकन आने की सबसे अधिक संभावना है। ज्यादातर समय यह बढ़िया काम करता है, क्योंकि ये पैटर्न उनके ट्रेनिंग डेटा में मौजूद होते हैं। लेकिन साधारण अंकगणित से आगे बढ़कर बहु-चरणीय गणनाओं या उन संख्याओं की बात करें जो ट्रेनिंग में आम नहीं थीं, तो आप अनिवार्य रूप से पासा फेंक रहे हैं।
मैं हाल ही में इससे आमने-सामने टकराया, जब मैंने कुछ कोड की समीक्षा की जिसमें एक शीर्ष-स्तरीय मॉडल का उपयोग होम लोन की किश्तों की गणना के लिए किया गया था। मॉडल ने पूरे आत्मविश्वास के साथ जवाब दिया। वह $400/माह गलत भी था। यह उस तरह की गलती है जो मायने रखती है।
भले ही मॉडल तर्कशक्ति में बेहतर होते जा रहे हों (कहा जाता है कि GPT-5 सुधार दिखाता है), वे अभी भी प्रतीकात्मक गणना नहीं, बल्कि परिष्कृत पैटर्न मिलान कर रहे हैं। रचनात्मक कार्यों और प्राकृतिक भाषा कार्यों के लिए, यह प्रायिकता वाला स्वभाव ही उन्हें जादुई बनाता है। गणित के लिए? उतना नहीं।
इसे वास्तव में क्या हल करता है?
जवाब यह नहीं है कि होशियार मॉडलों का इंतज़ार किया जाए। जवाब यह है कि मॉडल को इस काम के लिए सही टूल दिया जाए।
इस बारे में सोचें कि अगर आप एक गैर-AI सिस्टम बना रहे होते तो इस समस्या को कैसे हल करते। आप कस्टम गणित तर्क नहीं लिखते, आप एक लाइब्रेरी की ओर बढ़ते। वही सिद्धांत यहाँ भी लागू होता है, बस अब हम LLM को सिखा रहे हैं कि उस लाइब्रेरी का उपयोग कब और कैसे करना है।
आधुनिक AI SDK में टूल कॉलिंग हमें मॉडल को संरचित फ़ंक्शन सौंपने देती है जिन्हें वह लागू कर सकता है। LLM को यह नाटक करने के लिए मजबूर करने के बजाय कि उसे गणित आता है, हम उसे कुछ ऐसा देते हैं जो वास्तव में करता है: एक प्रतीकात्मक गणित इंजन।
मैं इस काम के लिए AI SDK v5 और v6 का उपयोग कर रहा हूँ, CortexJS Compute Engine के साथ। SDK ऑर्केस्ट्रेशन और टूल राउटिंग संभालता है, जबकि CortexJS बुनियादी अंकगणित से लेकर कैलकुलस तक सब कुछ संभालता है। यह आश्चर्यजनक रूप से साफ़ चिंताओं का पृथक्करण है।
bun add ai @ai-sdk/anthropic @cortex-js/compute-engine zodगणित टूल बनाना
इम्प्लीमेंटेशन आपकी उम्मीद से ज्यादा सीधा है। हम जो बना रहे हैं वह LLM की प्राकृतिक भाषा समझ और वास्तविक गणितीय गणना के बीच एक पुल है।
import { generateText, stepCountIs, tool } from 'ai';import { ComputeEngine } from '@cortex-js/compute-engine';import { z } from 'zod';
// Initialize the engine onceconst ce = new ComputeEngine();
const mathTool = tool({ description: 'Evaluate mathematical expressions and solve equations with guaranteed accuracy. MUST be used for all mathematical operations to verify correctness - do not attempt mental math. Supports arithmetic, algebra, calculus, and complex operations. Can process multiple expressions at once.', parameters: z.object({ expressions: z.array(z.string()).describe( 'Array of mathematical expressions in LaTeX or plain notation, e.g. ["2 + 2", "\\frac{x^2 + 1}{x - 1}", "\\int x^2 dx"]' ), }), execute: async ({ expressions }) => { // Process all expressions in parallel (or detailed batch) return expressions.map(expression => { try { const result = ce.parse(expression).evaluate(); return { expression, result: result.toString(), latex: result.latex, }; } catch (error) { return { expression, error: (error as Error).message }; } }); },});इसके बारे में कुछ बातें ध्यान देने योग्य हैं:
विवरण (description) भारी काम कर रहा है। “MUST be used” भाषा आक्रामक लग सकती है, लेकिन मेरे अनुभव में, मॉडल के साथ स्पष्ट होना कि टूल का उपयोग कब करना है, कभी-कभी काम करने और लगातार काम करने के बीच का अंतर है। इसे टूल-स्तरीय प्रॉम्प्ट इंजीनियरिंग मानें।
expressions सरणी के माध्यम से बैच प्रोसेसिंग उससे ज्यादा मायने रखती है जितना आप सोचते हैं। प्रत्येक मॉडल कॉल में विलंबता (latency) होती है। यदि आप समीकरणों के सिस्टम को हल कर रहे हैं या बहु-चरणीय गणित कर रहे हैं, तो उन्हें अलग-अलग प्रोसेस करने से उपयोगकर्ता अनुभव भयानक हो जाता है। बैचिंग का मतलब है दस समस्याओं को हल करने के लिए एक राउंड-ट्रिप।
केवल eval() के बजाय एक प्रतीकात्मक इंजन का उपयोग करने (कृपया eval() का उपयोग न करें) से हमें वास्तविक गणितीय समझ मिलती है। इंजन इरादे का विश्लेषण करता है, LaTeX फ़ॉर्मेटिंग संभालता है, और अवकलज तथा समाकलन के साथ काम कर सकता है। हम केवल गणना नहीं कर रहे हैं, हम गणित कर रहे हैं।
त्रुटि हैंडलिंग प्रति एक्सप्रेशन स्कोप्ड है। यदि एक गणना विफल होती है, तो हम वह त्रुटि लौटाते हैं लेकिन बाकी के साथ आगे बढ़ते हैं। यह मॉडल को यह देखने देता है कि क्या काम किया और क्या नहीं, जो अगले चरण में संभावित रूप से स्वयं-सुधार की अनुमति देता है।
इसे काम में लगाना
चलिए इस पर कुछ ऐसा फेंकते हैं जो आमतौर पर एक कच्चे मॉडल को हैलुसिनेट करवा देगा:
import { anthropic } from '@ai-sdk/anthropic';
const { text } = await generateText({ model: anthropic('claude-sonnet-4-5'), prompt: 'Calculate 18472 × 9347, divide by 127, then take the square root of the result.', tools: { mathTool }, stopWhen: stepCountIs(5), // Allow up to five model/tool steps});
console.log(text);मॉडल गणित देखता है, पहचानता है कि उसे सटीकता की आवश्यकता है, टूल को कॉल करता है, सटीक परिणाम प्राप्त करता है, और फिर इसे प्राकृतिक भाषा में समझाता है। प्रत्येक घटक वही कर रहा है जो वह सबसे अच्छा करता है।
बुनियादी अंकगणित से आगे
चूंकि हम एक प्रतीकात्मक इंजन का उपयोग कर रहे हैं, यह दृष्टिकोण उन चीजों को संभाल सकता है जिन्हें साधारण कैलकुलेटर टूल नहीं छू सकते।
बीजीय समीकरण हल करने हैं? “इन समीकरणों को हल करें: 3x + 7 = 22 और 2y - 5 = 13” ठीक काम करता है।
कैलकुलस चाहिए? “x^3 + 2x^2 का अवकलज ज्ञात करें और x = 2 पर उसका मान निकालें” बस एक और टूल कॉल है।
LaTeX सहायता विशेष रूप से उपयोगी है यदि आप शैक्षिक ऐप बना रहे हैं। इंजन स्वाभाविक रूप से LaTeX इनपुट को समझता है और रेंडरिंग के लिए फ़ॉर्मेट किए गए परिणाम लौटा सकता है। किसी अतिरिक्त पार्सिंग की आवश्यकता नहीं।
बड़ी तस्वीर
मुझे लगता है कि यह पैटर्न सिर्फ गणित से परे मायने रखता है। हम वास्तव में क्या कर रहे हैं यह LLM की सीमाओं को स्वीकार करना है, जबकि उनकी ताकत का लाभ उठा रहे हैं। वे इरादे को समझने, प्राकृतिक भाषा को पार्स करने और वर्कफ़्लो को ऑर्केस्ट्रेट करने में अविश्वसनीय हैं। वे कैलकुलेटर या डेटाबेस या फ़ाइल सिस्टम नहीं हैं।
हर बार जब हम LLM को कुछ निश्चित (deterministic) करने के लिए मजबूर करते हैं, तो हम उसके स्वभाव से लड़ रहे हैं। लेकिन जब हम उस प्राकृतिक भाषा समझ को विशेष टूल्स के साथ जोड़ते हैं जो निश्चित भागों को संभालते हैं? तब चीजें दिलचस्प हो जाती हैं।
गणित टूल केवल एक उदाहरण है। वही सिद्धांत दिनांतर हेरफेर, वित्तीय गणनाओं, छवि प्रसंस्करण, डेटाबेस क्वेरीज़ पर लागू होता है… जहाँ कहीं भी रचनात्मकता से ज्यादा सटीकता मायने रखती है। मॉडल को समझने दें कि उपयोगकर्ता क्या चाहता है, फिर वास्तविक काम को उस चीज़ को सौंप दें जो उस काम के लिए बना है।
यह AI के साथ निर्माण के बारे में हमारी सोच में एक बदलाव है। “क्या मॉडल यह कर सकता है?” नहीं, बल्कि “क्या मॉडल इसका ऑर्केस्ट्रेशन कर सकता है?” वाक्यांश में छोटा अंतर, विश्वसनीयता में महत्वपूर्ण अंतर।