SymbolicAI: LLM के लिए एक न्यूरो-सिंबॉलिक दृष्टिकोण
(github.com/ExtensityAI)- SymbolicAI एक न्यूरो-सिंबॉलिक प्रोग्रामिंग फ्रेमवर्क है, जो Python प्रोग्रामिंग और LLM को स्वाभाविक रूप से जोड़ता है
- मूल इकाई
Symbolऑब्जेक्ट के माध्यम से यह व्याकरणिक (syntactic) और अर्थगत (semantic) दोनों तरह की manipulation को सपोर्ट करता है - Contracts फीचर LLM की predictions पर data validation और automatic correction logic लागू करके reliability और robustness सुनिश्चित करता है
- विभिन्न बाहरी इंजन (OpenAI, Anthropic, huggingface आदि), web search, image generation और speech processing के साथ एकीकृत रूप से काम कर सकता है
- priority-आधारित configuration management system और मजबूत customization क्षमताएँ इसकी विशेषताएँ हैं
SymbolicAI: प्रोजेक्ट का अवलोकन और महत्व
- SymbolicAI एक न्यूरो-सिंबॉलिक (Neuro-Symbolic) लाइब्रेरी है, जो पारंपरिक Python प्रोग्रामिंग और अलग तरह के, programmable LLM (large language models) के संयोजन को स्वाभाविक रूप से सपोर्ट करती है
- modular design की वजह से extension, engine replacement, और tool integration आसानी से संभव है
- Local engine, web search, image generation जैसी विभिन्न tooling के साथ integration होने से यह experimental और practical दोनों तरह के उपयोगों के लिए उपयुक्त है
प्रमुख अवधारणाओं का परिचय
Primitives
-
Primitives मूल building blocks हैं, और इनमें सबसे मुख्य
Symbolऑब्जेक्ट है -
Symbolऑब्जेक्ट व्याकरणिक (syntactic) और अर्थगत (semantic) दोनों modes को सपोर्ट करता है- व्याकरणिक (syntactic): सामान्य Python value की तरह काम करता है और comparison, operation आदि के लिए सुरक्षित और तेज व्यवहार देता है
- अर्थगत (semantic): न्यूरो-सिंबॉलिक इंजन से जुड़कर अर्थ और संदर्भ को समझता है, और flexible semantic comparison/manipulation संभव बनाता है
-
व्याकरणिक मोड डिफ़ॉल्ट है, और सिर्फ़ तब अर्थगत processing में बदला जा सकता है जब इंजन-आधारित व्यवहार की ज़रूरत हो
अर्थगत/व्याकरणिक मोड बदलने के तरीके
- object बनाते समय
semantic=Trueविकल्प देना .sem(semantic),.syn(syntactic) properties से स्वतंत्र रूप से switch करना- semantic function call (
mapआदि) के दौरान अपने-आप semantic mode में बदलना
operations के उदाहरण
==: व्याकरणिक मोड में literal comparison, अर्थगत मोड में semantic equivalence (उदाहरण: 'Hi' == 'Hello' True)+,&,.startswith(),.choice(),.foreach(),.cluster(),.similarity()आदि- जटिल अर्थ-आधारित manipulation और logical chaining संभव है
Contracts
- LLM की अनिश्चितता को पूरक करने के लिए Design by Contract सिद्धांत अपनाया गया है
- data model और validation rules को decorator के रूप में निर्दिष्ट किया जा सकता है
- गलत input/output के लिए automatic error correction, retry, history accumulation जैसी कई reliability features उपलब्ध हैं
- Pydantic data models के साथ compatibility, field validation, automatic prompt generation, और error handling built-in हैं
Contract फीचर की मुख्य विशेषताएँ
- pre_remedy/post_remedy: input/output errors की automatic correction
- accumulate_errors: error history को input में शामिल करना
- remedy_retry_params: retry control parameters (attempt count, delay, backoff आदि) निर्दिष्ट करना
विस्तृत उदाहरण और अतिरिक्त जानकारी आधिकारिक दस्तावेज़ों और DeepWiki पेज पर देखी जा सकती है
बाहरी इंजन और फीचर विस्तारक्षमता
- वर्तमान में OpenAI, Anthropic सहित कई न्यूरो-सिंबॉलिक इंजन सपोर्ट करता है (API/local)
- {huggingface, llama.cpp} जैसे स्वयं के इंजनों को local में चलाया जा सकता है
- speech, image, web search जैसे अतिरिक्त इंजनों के साथ integration संभव है (अलग dependency packages की आवश्यकता)
- search, clustering, OCR, indexing जैसी production-grade ML/AI क्षमताएँ एकीकृत रूप से उपलब्ध कराता है
configuration प्रबंधन प्रणाली
priority-आधारित configuration file management
-
debug mode (project folder): development और testing के लिए
-
Python environment-विशिष्ट settings ({python_env}/.symai/)
-
global settings (~/.symai/): default/backup के लिए
-
इन तीन स्थानों में से उच्च priority वाली entries अपने-आप लागू होती हैं
प्रमुख configuration files
- symai.config.json: SymbolicAI के मुख्य options का प्रबंधन
- symsh.config.json, symserver.config.json: shell और server के लिए settings
configuration file के उदाहरण
- API Key, model name, engine type आदि को स्पष्ट रूप से निर्दिष्ट किया जा सकता है
SUPPORT_COMMUNITYoption के माध्यम से data collection के लिए consent दिया जा सकता है (research और quality improvement के उद्देश्य से)- user warnings को
SYMAI_WARNINGSenvironment variable से on/off किया जा सकता है
environment setup और testing
- ffmpeg (speech), chromedriver (web crawler) जैसे external packages की आवश्यकता होती है
- testing के लिए
pytestचलाया जा सकता है, और coverage checking भी समर्थित है
संदर्भ सामग्री और उपयोग गाइड
- DeepWiki और आधिकारिक GitBook में समृद्ध reference material और video tutorials उपलब्ध हैं
- Arxiv पर प्रकाशित paper में theory और framework का विस्तृत विवरण दिया गया है
- BSD-3-Clause license लागू है
निष्कर्ष
- SymbolicAI प्रतीकात्मक सिस्टम की स्पष्टता और neural network की लचीलेपन को जोड़कर LLM-आधारित reliability-केंद्रित services और experimental research के लिए बेहद उपयुक्त framework बनता है
- configuration, extensibility, और reliability पर केंद्रित इसका design, startup और IT professionals को कई तरह की application possibilities देता है
डेवलपर और कम्युनिटी सपोर्ट
- contribution resources, contact details, और support channels (email, website, Discord) खुले रूप से उपलब्ध हैं
1 टिप्पणियां
Hacker News टिप्पणियाँ
इस तरह का वूडू मैजिक सच में बहुत दिलचस्प है।
एक उदाहरण जो मुझे मजेदार लगा, वह है semantic map lambda का उपयोग,
उदाहरण के लिए अगर Symbols की एक सूची S हो, तो
S.map('सभी फलों को सब्ज़ियों में बदलो')कॉल करने पर सिर्फ फल सब्ज़ियों में बदलते हैं और बाकी वैसा ही रहता हैसाथ ही context के आधार पर parameter लेकर तुलना भी की जा सकती है। जैसे greeting context में
'Hello, good morning!'और'Hi there, good day!'का अर्थ समान है या नहीं, या politeness level के हिसाब से'Good morning, sir.'और'Hey, what’s up?'की तुलना भी संभव हैइसके अलावा bit operator की तरह semantics के आधार पर logical composition भी संभव है। bullet points की तरह rules और observations को
&से जोड़कर निष्कर्ष निकाला जा सकता हैinterpret()फ़ंक्शन काफ़ी powerful लगता हैOP से जानना चाहूँगा कि इस प्रोजेक्ट के लिए प्रेरणा क्या थी, इसे किन वास्तविक क्षेत्रों में लागू किया गया, और इसका सबसे पसंदीदा use case क्या है
Lotus नाम की python dataframe लाइब्रेरी की सिफारिश करता हूँ
इससे सभी मुख्य relational operations को आसानी से semantic रूप में extend करके इस्तेमाल किया जा सकता है
हर कॉल एक 'model' point बन जाता है, इसलिए बाद में machine learning की दिशा में बढ़ाना भी आसान होता है
snowflake जैसे cloud SQL भी धीरे-धीरे इसी दिशा में जाते लग रहे हैं
louie.ai में हमने इसी तरह का सिस्टम बनाया है। AI notebook, dashboard, API के ज़रिए (splunk, databricks, graph db आदि) डेटा को conversational तरीके से हैंडल करते हैं, और context के आधार पर symbolic + semantic operator अपने-आप पहचानते हैं
काम में यह सच में बहुत मददगार है
मेरा मुख्य use case यह है:
semantic map से splunk index से alerts लाना, suspicious चीज़ों पर flag लगाना, description भी जोड़ना,
फिर उसे semantic reduce से summarize करके natural language में report तक तैयार करना
सवाल कि गाजर को सेब के vegetable-conversion result के रूप में क्यों चुना गया
इसका जवाब बहुत लंबा हो जाएगा
प्रोजेक्ट 2022 के अंत से शुरू हुआ था, लेकिन हाल में बस models बेहतर हुए हैं; बुनियादी हिस्से GPT-3 के समय से ही मौजूद थे
हाल में आया DbC(Design by Contract) सच में अनोखा है
agents के मामले में जिन-जिन समस्याओं का सामना मैंने किया, उन सबको यह हल कर देता है। खासकर कई contracts को chain करने पर guardrails स्वाभाविक रूप से propagate हो जाते हैं, इसलिए यह बहुत असरदार है
लगभग सभी custom tools मैंने खुद implement किए हैं
उदाहरण के लिए OpenAI का web search अच्छा है, लेकिन उसमें customization कम है, इसलिए मैंने अपना deep research agent बनाकर इस्तेमाल किया है
पहले दिन के नतीजों का उदाहरण thread
मैं एक कंपनी चला रहा हूँ, और 3 contracts को जोड़कर e2e document generation automation भी बनाया है
demo PDF देखें
input prompt था,
“फ़ाइल में patterns का analysis करो, अलग-अलग prompt formats (XML, markdown आदि), flattery tendency, tool usage style, ethical guardrails, architectural peculiarities आदि की समग्र तुलना करके report बनाओ”
contracts को 2025 मार्च की इस पोस्ट में पेश किया था, और उसके बाद वे काफ़ी evolve हुए हैं, लेकिन मूल उद्देश्य और motivation वही है
semantic
==,+जैसे operators का इस्तेमाल कर पाना ऐसा लगता है जैसे नए ideas को खाद मिल रही होword embeddings के शुरुआती दौर में जब मैंने पहली बार conceptual algebra जैसा कुछ देखा था — जैसे
King - Man + Woman = Queen— वैसी ही excitement हो रही हैलेकिन यहाँ neural network और symbolic(logic) का integration, ज़्यादातर systems की तरह, अभी भी उथला या अलग-अलग है
संदर्भ
असली innovation तब संभव होगा जब आगे चलकर कहीं अधिक बुनियादी integration हो
हमारी कंपनी(Onton) में भी हम उसी दिशा में शोध कर रहे हैं
लक्ष्य हैं 1) पूरी तरह integrated representation (न symbolic/न deep learning), 2) कम noisy data में भी continual learning (forgetting नहीं), 3) math/symbolic operations में 100% reliability, 4) zero hallucination
अभी hot-glue तरीके से कई systems जोड़ना उपयोगी है, लेकिन integrated architecture पूरा खेल बदल सकता है
अच्छी explanation और examples वाले official code notebook और official paper PDF का लिंक साझा किया गया
कोड में error report (
correctness contractsमेंvalid_sizesdefined नहीं है)इस विषय पर राय देने और समर्थन करने वाले सभी लोगों का धन्यवाद
ऐसी प्रतिक्रिया की उम्मीद नहीं थी, और आप कभी भी mail/tweet के ज़रिए संपर्क कर सकते हैं
आप सबसे बात करके सच में बहुत अच्छा लगा
थोड़ा अफ़सोस है
'Symbolic AI' शब्द खुद पहले से ही स्पष्ट रूप से परिभाषित है
हो सकता है जल्द ही नाम बदल दूँ
paper में भी naming के कारण को footnote में डाला है, और प्रोजेक्ट का नाम foundational research को आगे बढ़ाने वाले Newell और Simon के प्रति सम्मान के रूप में रखा गया है
एक सवाल है
pricing policy कैसी है
क्या natural language operations वाली हर एक line के execution पर (और external API हो तो और भी) बार-बार LLM inference cost देनी पड़ती है
उदाहरण के लिए जब
symbolicफ़ंक्शन loop में बार-बार call हो रहा हो, तब भी क्या ऐसा ही होगाहाँ
उदाहरण के लिए openai API का उपयोग करने पर हर semantic operation पर openai call होता है और cost आती है
अगर llama.cpp आदि से local LLM खुद host करें, तो सिर्फ hosting cost होगी, अलग inference cost नहीं
कैश जैसी किसी चीज़ की तो निश्चित ही ज़रूरत पड़ेगी
उम्मीद नहीं थी, लेकिन अचानक यह इतना लोकप्रिय हो गया कि थोड़ा हैरान हूँ
मुझे तो सोना चाहिए था, लेकिन अभी sleep deprivation XP का उपयोग करते हुए बातचीत में लगातार हिस्सा ले रहा हूँ
functional programming(FP) की तरह हर Symbol एक pure value की तरह काम करता है
operations साफ़ और traceable flow में compose होते हैं
ambiguous stages पर model हस्तक्षेप करता है
FP के IO operations की तरह generative model calls को scoped side effects माना जाता है
सामान्य स्थिति में reasoning graph deterministic रहता है और ज़रूरत पड़ने पर ही model को delegate करता है
demo सच में कमाल का है
शुरुआत से ही इसे functional तरीके से design किया गया था
low level पर भी सब कुछ functional principles पर है, और अंदरूनी तौर पर भी
functional.pyयाcore.pyजैसे नाम हैंdecorators भी जगह-जगह इस्तेमाल हुए हैं, इसलिए refactoring/extension/bug management में बहुत मदद मिलती है
आजकल LLM पूरा code भी बना देते हैं,
तो Symbol जैसे context-carrying structure को python operator से आसानी से manipulate किया जा सके — इसमें
इंसान के हाथ से एक-एक चीज़ जाँचते हुए code लिखने की तुलना में क्या ताकत है, यह जानना चाहता हूँ
उदाहरण के लिए semantic transformation को इस तरह के syntax में सीधे किया जा सकता है, लेकिन क्या बस LLM से फलों की सूची को सब्ज़ियों में बदलने वाला program बनाने को कहना काफी नहीं होगा
मैं मूल फर्क समझना चाहता हूँ
अगर LLM से formal system generate कराया जाए, तो उसकी verification एक general-purpose system की तुलना में कहीं आसान होती है