Providence
Python

Providence

पुनर्गठित प्रोविडेंटिया नेटवर्क।

image

प्रोविडेन्सिया नेटवर्क एक डैन्गो-आधारित बैकएंड है जो गूगल के जेमिनी मॉडल, एक नेटिव C++ को-प्रोसेसर, और थॉट ग्राफ़ के वैकल्पिक विज़ुअलाइज़ेशन के साथ मल्टी-ब्रांच रीज़निंग का समन्वय करता है। यह दस्तावेज़ वर्तमान आर्किटेक्चर का सारांश देता है और सिस्टम को स्थानीय रूप से बनाने और चलाने के लिए आवश्यक कमांड प्रदान करता है।

https://www.promptingguide.ai/techniques/tot

 याओ एट अल. (2023) और लॉन्ग (2023)

हाल ही में प्रस्तावित ट्री ऑफ थॉट्स (ToT), एक ऐसा फ्रेमवर्क है जो चेन-ऑफ-थॉट प्रॉम्प्टिंग को सामान्यीकृत करता है और उन विचारों पर अन्वेषण को प्रोत्साहित करता है जो भाषा मॉडल के साथ सामान्य समस्या समाधान के लिए मध्यवर्ती चरणों के रूप में काम करते हैं।

ToT विचारों का एक ट्री बनाए रखता है, जहाँ विचार सुसंगत भाषा अनुक्रमों का प्रतिनिधित्व करते हैं जो किसी समस्या को हल करने की दिशा में मध्यवर्ती चरणों के रूप में काम करते हैं। यह दृष्टिकोण एक एलएम (LM) को एक जानबूझकर की गई तर्क प्रक्रिया के माध्यम से किसी समस्या को हल करने की दिशा में किए गए मध्यवर्ती विचारों के माध्यम से अपनी प्रगति का स्वयं मूल्यांकन करने में सक्षम बनाता है। विचारों को उत्पन्न करने और मूल्यांकन करने की एलएम (LM) की क्षमता को फिर लुकअहेड और बैकट्रैकिंग के साथ विचारों की व्यवस्थित खोज को सक्षम करने के लिए खोज एल्गोरिदम (जैसे, ब्रेथ-फर्स्ट सर्च और डेप्थ-फर्स्ट सर्च) के साथ जोड़ा जाता है।

सिस्टम आर्किटेक्चर

उच्च-स्तरीय डेटा प्रवाह

क्लाइंट -> /speech/simple_response (Django REST व्यू)
 -> पाइथन थिंकिंगमैनेजर (speech/context_manager/ThinkingManager.py)
      -> C++ "Kievan Rus" थिंकर (speech/context_manager/Kievan Rus/*.cpp)
 -> Gemini API (HTTPS पर JSON)
 -> बाइनरी पेलोड (स्टेटस + संदर्भ + सारांश)
      -> पाइथन डेसीरियलाइज़र और ब्रांच एक्सपैंशन
 -> वैकल्पिक PNG ग्राफ़ (speech/context_manager/graphs/)
 -> Django प्रतिक्रिया टेक्स्ट

मुख्य घटक

  • Django REST एंडपॉइंट (speech/views.py)
    एक उपयोगकर्ता प्रॉम्प्ट स्वीकार करता है, एक ThinkingManager को इंस्टैंशिएट करता है, और एजेंट द्वारा लौटाए गए अंतिम निर्देश टेक्स्ट को अग्रेषित करता है।

  • पाइथन थिंकिंग मैनेजर (speech/context_manager/ThinkingManager.py)
    विचार वृक्ष को बनाए रखता है और वास्तुशिल्प नियमों को लागू करता है:

    • वर्तमान संदेश, शाखा लेबल, और पुनरावृत्ति मेटाडेटा के साथ नेटिव C++ हेल्पर को एक उप-प्रक्रिया के रूप में शुरू करता है।
    • बाइनरी प्रतिक्रिया (1 बाइट स्थिति, 4 बाइट लंबाई, UTF-8 पेलोड) का पार्स करता है और ContextStruct (Pydantic) के विरुद्ध JSON को मान्य करता है।
    • प्रति-शाखा probability_of_success, वृद्धिशील potential_score, possible_setbacks, और शाखा लेबल रिकॉर्ड करता है।
    • प्रति स्तर कम से कम दो शाखा अन्वेषणों की गारंटी देता है और एक संचयी संभावित स्कोर को एकत्र करता है।
    • एक टेक्स्टुअल ट्री उत्पन्न करता है और वैकल्पिक रूप से एक PNG डायग्राम रेंडर करता है (नीचे देखें)।
  • C++ "कीवन रस" थिंकर (speech/context_manager/Kievan Rus/)
    तर्क पार्सिंग, वातावरण लोडिंग, जेमिनी HTTP कॉल (libcurl), प्रॉम्प्ट निर्माण, और बाइनरी सीरियलाइज़ेशन के लिए हेडर/सोर्स में मॉड्यूलराइज़ किया गया है।

    • प्रक्रिया वातावरण या .env से जेमिनी एपीआई कुंजी पढ़ता है।
    • दो जेमिनी अनुरोध जारी करता है: एक संरचित विश्लेषण के लिए, एक वर्णनात्मक सारांश के लिए।
    • संरचित संदर्भ और सारांश को एक पोर्टेबल बाइनरी प्रारूप में एन्कोड करता है जिसका उपयोग पाइथन द्वारा किया जाता है।
    • रूट मेकफाइल लक्ष्य build-thinker मॉड्यूल (g++17, -lcurl) को फिर से संकलित करता है और सर्वर चलाते समय स्वचालित रूप से श्रृंखलाबद्ध हो जाता है।
  • ग्राफ़ रेंडरिंग (plotting/graphing.py)
    अंतिम थॉट ट्री को विज़ुअलाइज़ करने के लिए मैटप्लॉटलिब (एग बैकएंड) का उपयोग करता है। प्रत्येक नोड में शाखा लेबल, लपेटा हुआ योजना पाठ, संभाव्यताएँ, प्रति-चरण संभावित डेल्टा, संचयी संभावित, और "अंतिम" या "अफसोसजनक" राज्यों के लिए हाइलाइट्स शामिल होते हैं। छवियाँ speech/context_manager/graphs/ में सहेजी जाती हैं।

  • जेमिनी एजेंट (speech/gemini/agent.py)
    Google के genai क्लाइंट के चारों ओर एक हल्का रैपर। C++ मॉड्यूल विलंब-संवेदनशील तर्क के लिए इस कार्यक्षमता को दर्पण करता है।

शाखाकरण और स्कोरिंग अर्थ

  • थिंकिंग मैनेजर पेड़ की गहराई को सीमित (max_iterations = 8) रखता है, फिर भी यह सुनिश्चित करता है कि प्रत्येक नोड कम से कम दो लेबल वाली शाखाएं (जैसे, प्राथमिकता-A, प्राथमिकता-B) उत्पन्न करे, जब तक कि पुनरावृत्ति सीमा द्वारा सीमित न हो।
  • प्रत्येक शाखा में शामिल हैं:
    • probability_of_success[0.0, 1.0] तक सीमित फ्लोट।
    • potential_scorecumulative_potential में जोड़ा गया साइन्ड डेल्टा।
    • possible_setbacks — लॉग, कंसोल आउटपुट, और विज़ुअलाइज़ेशन में एम्बेड किया गया टेक्स्टual जोखिम मूल्यांकन।
  • डिबगिंग को आसान बनाने के लिए हर ब्रांच स्पॉन, संख्यात्मक मूल्यांकन, और ग्राफ़ रेंडरिंग चरण के लिए लॉग उत्पन्न किए जाते हैं।

सेटअप और उपयोग

पूर्वापेक्षाएँ

  • पाइथन 3 (एक वर्चुअलएनवी या कोन्डा वातावरण की अनुशंसा की जाती है)।
  • C++17 समर्थन और libcurl के लिए डेवलपमेंट हेडर के साथ g++
  • .env या प्रक्रिया वातावरण में रखी गई जेमिनी एपीआई कुंजी (GEMINI_API_KEY) तक पहुंच।
  • (वैकल्पिक) PNG ग्राफ़ जेनरेशन के लिए मैटप्लॉटलिब; इसके बिना सिस्टम एक चेतावनी लॉग करता है और प्लॉटिंग को छोड़ देता है।

वातावरण निर्माण

make update # conda/micromamba के माध्यम से environment.yml का उपयोग करता है

डिफ़ॉल्ट को ओवरराइड करें:

make update CONDA_ENV=my-env-name
make update ENV_FILE=envs/dev.yml
make update CONDA=~/.local/bin/micromamba

बिल्डिंग और रनिंग

make run # C++ थिंकर को फिर से कंपाइल करता है और फिर `python manage.py runserver` चलाता है

स्टैंडअलोन कंपाइलेशन (यदि आवश्यक हो):

make build-thinker # cd speech/context_manager/Kievan\ Rus && g++ ... -lcurl

सर्वर प्रोजेक्ट रूट पर .env की उम्मीद करता है, जब तक कि KIEVAN_RUS_ENV_PATH सेट न किया गया हो।

सामान्य मेक लक्ष्य

लक्ष्य विवरण
make run C++ हेल्पर बिल्ड करें और Django डेव सर्वर शुरू करें
make migrate माइग्रेशन चलाएँ (makemigrations + migrate)
make prepare environment.yml से Conda एनवायरनमेंट बनाएँ
make update प्रूनिंग के साथ Conda एनवायरनमेंट अपडेट/बनाएँ
make build-thinker C++ रीजनिंग मॉड्यूल को फिर से कंपाइल करें
make help उपलब्ध टारगेट की सूची दिखाएँ (यदि मेकफाइल में परिभाषित हैं)

किसी विशिष्ट इंटरप्रेटर को इंगित करने के लिए PY=... का उपयोग करें, या आवश्यकतानुसार DJANGO_SETTINGS_MODULE को ओवरराइड करें।


कॉन्फ़िगरेशन नोट्स

  • .env

    GEMINI_API_KEY=your-key
    # वैकल्पिक Django सेटिंग्स...
    
  • KIEVAN_RUS_ENV_PATH (एनवायरनमेंट वेरिएबल) C++ प्रक्रिया के लिए .env स्थान को ओवरराइड कर सकता है।

  • ग्राफ़ speech/context_manager/graphs/thought_graph_<root-id>.png में लिखे जाते हैं। अवशेषों को साफ़ करने के लिए निर्देशिका को हटा दें।


परीक्षण और डीबगिंग टिप्स

  • बाइनरी प्रोटोकॉल सख्त है; जेमिनी से खराब ढंग से बने जवाब (जैसे, text फ़ील्ड का गायब होना) स्पष्ट अपवाद उत्पन्न करते हैं जिन्हें पाइथन और C++ दोनों लेयर द्वारा लॉग किया जाता है।
  • शाखा निर्माण, संभाव्यता गणना, और ग्राफ़ रेंडरिंग सभी [ThinkingManager] उपसर्गों के माध्यम से विस्तृत प्रगति लॉग करते हैं। विकास के दौरान तर्क प्रक्रिया को ट्रैक करने के लिए Django कंसोल देखें।
  • यदि Matplotlib मौजूद नहीं है, तो सिस्टम PNG आउटपुट के बिना जारी रहता है लेकिन आयात विफलता को लॉग करता है।

रिपॉजिटरी लेआउट (चयनित)

speech/
├── context_manager/
│   ├── ThinkingManager.py     # पाइथन ऑर्केस्ट्रेटर
│   └── Kievan Rus/ # C++ नेटिव थिंकर (मॉड्यूलराइज़्ड सोर्स)
├── gemini/
│   └── agent.py # पाइथन जेमिनी क्लाइंट रैपर
plotting/
├── graphing.py # थॉट ट्रीज़ के लिए मैटप्लॉटलिब रेंडरर
README.md
Makefile

प्रोविडेंशिया नेटवर्क का बैकएंड पुनरावृत्तिशील प्रयोग के लिए डिज़ाइन किया गया है: प्रॉम्प्ट को अपडेट करें, स्कोरिंग ह्यूरिस्टिक्स को समायोजित करें, या आवश्यकतानुसार बाइनरी प्रारूप का विस्तार करें। make run C++ हेल्पर को सिंक में रखता है ताकि आप तर्क लॉजिक पर ध्यान केंद्रित कर सकें। हैप्पी हैकिंग!