![]()
पिछला पाठ एजेंट्स को क्लाउड में बढ़ाता था। यह इसे एक मशीन पर लाता है। अंत तक आपके पास एक कार्यशील इंजीनियरिंग सहायक होगा जो तर्क करता है, टूल कॉल करता है, आपकी फाइलें पढ़ता है, और आपकी डॉक्यूमेंटेशन खोजता है — बिना कोई क्लाउड इन्फेरेंस कॉल के।
आप ऐसा क्यों चाहेंगे? तीन कारण जो वास्तविक इंजीनियरिंग कार्य में बार-बार आते हैं:
पकड़ यह है कि आप एक फ्रंटियर क्लाउड मॉडल के बदले में एक स्मॉल लैंग्वेज मॉडल (SLM) चला रहे हैं जो आपके CPU, GPU, या NPU पर चलता है। यह पाठ उन एजेंट्स को बनाने के बारे में है जो इस प्रतिबंध के भीतर अच्छे हैं बजाय इसके कि वे इस प्रतिबंध को अनदेखा करें।
यह पाठ कवर करेगा:
इस पाठ को पूरा करने के बाद आप जानेंगे कि कैसे:
यह पाठ मानता है कि आपने पूर्व के पाठ पूरे कर लिए हैं और आप सहज हैं:
आपको चाहिए:
requirements.txt, साथ ही इस पाठ के लिए foundry-local-sdk, openai, और chromadb।एक फ्रंटियर क्लाउड मॉडल के सैकड़ों अरब पैरामीटर्स होते हैं और इसके पीछे एक डेटा सेंटर होता है। एक SLM में सिर्फ कुछ अरब पैरामीटर्स होते हैं और इसे आपके लैपटॉप की RAM में फिट होना होता है। यह अंतर स्पष्ट अपेक्षाएँ निर्धारित करता है।
SLMs अच्छी हैं:
SLMs कमजोर हैं:
इसलिए स्थानीय एजेंट्स के लिए विजेता रणनीति है: SLM को संचालन करने दें, और टूल्स को भारी काम करने दें। मॉडल को आपके कोडबेस को जानने की ज़रूरत नहीं है — इसे तब पता होना चाहिए जब read_file और search_docs कॉल करना है। यह सीधे SLM की ताकत को बढ़ाता है।
flowchart LR
U[डेवलपर] --> A[लोकल SLM एजेंट]
A -->|कौन सा टूल चुने| T1[read_file]
A -->|कौन सा टूल चुने| T2[search_docs RAG]
A -->|कौन सा टूल चुने| T3[analyze_code]
T1 --> A
T2 --> A
T3 --> A
A --> R[उत्तर, पूरी तरह से डिवाइस पर]
Microsoft Foundry Local एक हल्का रनटाइम है जो मॉडल को पूरी तरह आपकी मशीन पर डाउनलोड, प्रबंधित, और परोसता है। हमारे लिए इसका सबसे महत्वपूर्ण फीचर यह है कि यह एक OpenAI-संगत HTTP एंडपॉइंट एक्सपोज़ करता है — जिसका मतलब है कि OpenAI SDK और Microsoft Agent Framework का OpenAI क्लाइंट इसे केवल base_url बदलकर उपयोग कर सकते हैं। एजेंट बनाना जो आपने सीखा है वह सीधे ट्रांसफर होता है; केवल एंडपॉइंट क्लाउड से localhost पर स्थानांतरित होता है।
Foundry Local आपके हार्डवेयर के लिए मॉडल का सबसे अच्छा बिल्ड अपने आप चुनता है — CPU बिल्ड, CUDA/GPU बिल्ड, या NPU बिल्ड — ताकि आपको मशीन के हिसाब से मैन्युअली ऑप्टिमाइज न करना पड़े।
Foundry Local इंस्टॉल करें (अपने OS के लिए डॉक्यूमेंटेशन देखें), फिर पुष्टि करें कि यह काम करता है:
# इंस्टॉल करें (उदाहरण; अपने प्लेटफ़ॉर्म के लिए डॉक्स का पालन करें)
winget install Microsoft.FoundryLocal # विंडोज
# brew install microsoft/foundrylocal/foundrylocal # macOS
# एक Qwen मॉडल डाउनलोड करें और चलाएं, फिर स्थानीय सेवा शुरू करें
foundry model run qwen2.5-7b-instruct
foundry service status
सेवा चालू होने के बाद आपके पास एक स्थानीय, OpenAI-संगत एंडपॉइंट होता है (आमतौर पर http://localhost:PORT/v1)। नोटबुक foundry-local-sdk का उपयोग करके एंडपॉइंट को अपने आप खोजती है, इसलिए आपको पोर्ट हार्ड-कोड करने की जरूरत नहीं है।
एक एजेंट तब ही एजेंट होता है जब यह टूल्स कॉल कर सके। कई SLMs चैट कर सकते हैं लेकिन भरोसेमंद, संरचित टूल कॉल नहीं बनाते। Qwen मॉडल फंक्शन कॉलिंग के लिए प्रशिक्षित हैं और लगातार अच्छे टूल-कॉल स्ट्रक्चर उत्पन्न करते हैं — यही वह चीज है जो एक स्थानीय चैट मॉडल को स्थानीय एजेंट बनाती है।
फ्लो वही मानक टूल-कॉलिंग लूप है जिसे आप पहले से जानते हैं, बस यह डिवाइस पर चलता है:
sequenceDiagram
participant U as उपयोगकर्ता
participant A as क्वेन एजेंट (स्थानीय)
participant T as स्थानीय उपकरण
U->>A: "auth.py क्या करता है?"
A->>A: निर्णय लें: read_file कॉल करें
A->>T: read_file("auth.py")
T-->>A: फ़ाइल सामग्री
A->>A: सामग्री पर तर्क करें
A-->>U: व्याख्या
डॉक्यूमेंटेशन खोज वह जगह है जहां स्थानीय एजेंट अपना मूल्य बनाते हैं। यह उम्मीद करने के बजाय कि SLM ने आपके फ्रेमवर्क के डॉक्यूमेंट्स याद कर लिए हैं, आप उन डॉक्यूमेंट्स को एक स्थानीय वेक्टर डेटाबेस में एम्बेड कर देते हैं और एजेंट को संबंधित हिस्से माँग पर पुनः प्राप्त करने देते हैं।
हम उपयोग करते हैं Chroma, एक एम्बेडेड वेक्टर स्टोर जो बिना सर्वर के प्रोसेस के अंदर चलता है। पाइपलाइन पूरी तरह स्थानीय है: स्थानीय एम्बेडिंग मॉडल → स्थानीय वेक्टर्स → स्थानीय पुनः प्राप्ति → स्थानीय SLM।
flowchart TB
D[आपके दस्तावेज़ / कोड] --> E[लोकल एम्बेडिंग मॉडल]
E --> V[(क्रोमा वेक्टर DB - डिस्क पर)]
Q[एजेंट क्वेरी] --> QE[क्वेरी को लोकली एम्बेड करें]
QE --> V
V -->|शीर्ष-k चंक्स| A[क्वेन एजेंट]
A --> Ans[आधारभूत उत्तर]
यह वही एजेंटिक RAG पैटर्न है जो पाठ 5 में था — केवल बदलाव यह है कि हर घटक आपकी मशीन पर चलता है।
MCP एक ट्रांसपोर्ट है, क्लाउड सेवा नहीं। एक MCP सर्वर स्थानीय प्रक्रिया के रूप में stdio पर चल सकता है, जो आपके एजेंट को मानक प्रोटोकॉल के माध्यम से टूल एक्सपोज़ करता है। यह आपको बढ़ते MCP सर्वर इकोसिस्टम — फ़ाइल सिस्टम एक्सेस, गिट ऑपरेशन, डेटाबेस क्वेरीज — पूरी तरह ऑफलाइन पुनः उपयोग करने देता है।
सुरक्षा की स्थिति क्लाउड से अलग है लेकिन अनुपस्थित नहीं है: एक स्थानीय MCP सर्वर आपके उपयोगकर्ता की अनुमति के साथ चलता है, इसलिए इसे केवल आवश्यक चीज़ों तक सीमित रखें (जैसे किसी प्रोजेक्ट डायरेक्टरी तक, आपके पूरे होम फ़ोल्डर तक नहीं) और इसके आउटपुट को इनपुट के रूप में मान कर मान्यता करें।
स्थानीय-प्रथम का मतलब केवल स्थानीय नहीं होता। परिपक्व सिस्टम संवेदनशीलता और कठिनाई के अनुसार मार्गदर्शन करते हैं:
| स्थिति | जहां चलता है |
|---|---|
| संवेदनशील कोड/डेटा, या ऑफलाइन | स्थानीय SLM |
| सरल, सीमित कार्य | स्थानीय SLM (सस्ता, तेज़) |
| गैर-संवेदनशील डेटा पर कठिन मल्टी-हॉप तर्क | क्लाउड मॉडल |
| आउटेज के दौरान सब कुछ | स्थानीय SLM (ग्रेसफुल डिग्रेडेशन) |
यह पाठ 16 के मॉडल राउटिंग विचार की तरह है — सिवाय इसके कि अब एक “मॉडल” आपकी अपनी मशीन है। एक मजबूत डिज़ाइन तब स्थानीय पर गिरता है जब क्लाउड उपलब्ध नहीं होता, ताकि एजेंट सीधे विफल होने के बजाय गुणवत्ता में गिरावट लाए।
flowchart LR
Q[अनुरोध] --> S{संवेदनशील या ऑफलाइन?}
S -->|हाँ| L[स्थानीय SLM]
S -->|नहीं| C{गहन विचार-विमर्श की आवश्यकता है?}
C -->|नहीं| L
C -->|हाँ| Cloud[क्लाउड मॉडल]
L --> Out[प्रतिक्रिया]
Cloud --> Out
code_samples/17-local-agent-foundry-local.ipynb खोलें और इसे पूरा करें। आप एक स्थानीय इंजीनियरिंग सहायक बनाएंगे जो पूरी तरह आपकी कार्यस्थान मशीन पर चलता है और निम्न कर सकता है:
किसी भी बिंदु पर क्लाउड इन्फेरेंस उपयोग नहीं किया जाता।
सहायक OpenAI-संगत एंडपॉइंट के माध्यम से Foundry Local से जुड़ता है, इसलिए एजेंट कोड लगभग क्लाउड पाठों के समान दिखता है — केवल क्लाइंट बदलता है:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local मॉडल को खोजता/डाउनलोड करता है और हमें एक स्थानीय एंडपॉइंट देता है।
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key एक स्थानीय प्लेसहोल्डर है।
टूल सामान्य पायथन फंक्शन हैं जो प्रोजेक्ट डायरेक्टरी तक सीमित हैं:
def read_file(path: str) -> str:
\"\"\"Read a file, but only inside the sandboxed project directory.\"\"\"
full = (PROJECT_ROOT / path).resolve()
if PROJECT_ROOT not in full.parents and full != PROJECT_ROOT:
return \"Access denied: path is outside the project directory.\"
return full.read_text(encoding=\"utf-8\")
सैंडबॉक्स चेक पर ध्यान दें — यहां तक कि स्थानीय भी, एक ऐसा टूल जो मनमाने पथ पढ़ता है वह जोखिम भरा है। नोटबुक हर टूल को एक प्रोजेक्ट रूट तक सीमित रखता है।
असाइनमेंट पर जाने से पहले अपनी समझ का परीक्षण करें।
1. क्लाउड की बजाय स्थानीय रूप से एजेंट चलाने के दो ठोस कारण बताएं।
2. स्थानीय एजेंट में SLM और इसके टूल्स के बीच श्रम का अनुशंसित विभाजन क्या है, और क्यों?
3. Foundry Local के साथ क्लाउड एजेंट कोड को पुनः उपयोग क्यों संभव है?
4. हम विशिष्ट रूप से Qwen फंक्शन-कॉलिंग मॉडल क्यों उपयोग करते हैं बजाय किसी भी SLM के?
5. स्थानीय RAG पाइपलाइन में कौन से घटक मशीन पर चलते हैं?
6. एक स्थानीय MCP सर्वर आपकी मशीन पर चलता है। क्या यह अपने आप सुरक्षित हो जाता है? फिर भी आपको कौन सावधानी बरतनी चाहिए?
7. एक समझदारी भरा हाइब्रिड राउटिंग नियम बताएं जिसमें एक स्थानीय मॉडल शामिल हो।
8. इस पाठ में स्थानीय एजेंट चलाने के लिए वास्तविक न्यूनतम RAM कितना है, और अधिक RAM आपको क्या देता है?
स्थानीय इंजीनियरिंग सहायक को एक स्थानीय डॉक्यूमेंटेशन समीक्षक में विस्तार दें अपने पसंदीदा छोटे प्रोजेक्ट के लिए (यदि चाहें तो इस रिपॉजिटरी के पाठ फ़ोल्डर्स में से एक का उपयोग करें)।
आपकी प्रस्तुति में शामिल होना चाहिए:
एक find_todos टूल जोड़ें जो प्रोजेक्ट में TODO/FIXME टिप्पणियों को स्कैन करता है और उन्हें फाइल और लाइन नंबर के साथ लौटाता है — read_file जैसा सैंडबॉक्स चेक बनाए रखते हुए।
फिर एक छोटा पैराग्राफ लिखें कि आप इस समीक्षक के लिए क्लाउड में क्या ले जाएंगे और स्थानीय क्या रखेंगे, और क्यों। आपका मूल्यांकन इस बात पर होगा कि क्या स्थानीय घटक सही तरीके से जुड़े हुए हैं और क्या आपकी हाइब्रिड तर्कसंगतता ठोस है — मॉडल गुणवत्ता पर नहीं।
इस पाठ में आपने एक ऐसा एजेंट बनाया है जो पूरी तरह से आपकी अपनी मशीन पर चलता है:
यह तैनाती चक्र को पूरा करता है: पाठ 16 ने एजेंट्स को Microsoft Foundry में स्केल किया, और इस पाठ ने उन्हें एक ही वर्कस्टेशन पर छोटा किया। अगला पाठ तैनात एजेंट्स को सुरक्षित रखने की ओर जाता है।
स्केलेबल एजेंट्स को तैनात करना
अस्वीकरण: इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा Co-op Translator का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।