![]()
मागील धडा एजंटना क्लाउडमध्ये स्टेप अप करायचा होता. हा धडा त्यांना एका मशीनवर डाउन आणतो. शेवटी तुमच्याकडे एक कार्यशील अभियांत्रिकी सहाय्यक असेल जो विचार करतो, साधने कॉल करतो, तुमची फाइल्स वाचतो आणि तुमची कागदपत्रे शोधतो — एकाही क्लाउड इन्फरन्स कॉलशिवाय.
तुम्हाला असे का हवे? प्रत्यक्ष अभियांत्रिकी कामात सतत येणाऱ्या तीन कारणे:
अडथळा असा की तुम्ही एका अग्रगण्य क्लाउड मॉडेलच्या बदल्यात लहान भाषा मॉडेल (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[फाइल वाचा]
A -->|कोणते साधन निवरते| T2[दस्तऐवज शोधा RAG]
A -->|कोणते साधन निवरते| T3[कोड विश्लेषण करा]
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 वापरून एंडपॉइंट आपोआप शोधतो, त्यामुळे तुम्हाला पोर्ट हार्ड-कोड करावे लागत नाही.
एजंट केवळ एजंट आहे जेव्हा तो साधने कॉल करू शकतो. अनेक SLM चॅट करू शकतात पण गैरविश्वसनीय, विकृत साधन कॉल तयार करतात. 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[(क्रोमा वेक्टर डेटाबेस - डिस्कवर)]
Q[एजंट क्वेरी] --> QE[क्वेरी स्थानिकरीत्या एम्बेड करा]
QE --> V
V -->|टॉप-के तुकडे| A[क्वेन एजंट]
A --> Ans[आधारित उत्तर]
हा धडा Lesson 5 मधून Agentic RAG पॅटर्न आहे — फक्त फरक असा की प्रत्येक घटक तुमच्या मशीनवर चालतो.
MCP ही सेवा नव्हे, एक ट्रान्सपोर्ट आहे. MCP सर्व्हर स्थानिक प्रक्रियेप्रमाणे stdio वर चालू होऊ शकतो, आणि एजंटला मानक प्रोटोकॉलद्वारे साधने उपलब्ध करतो. त्यामुळे तुम्ही वाढणाऱ्या MCP सर्व्हर इकोसिस्टमचा वापर करू शकतो — फाइलसिस्टम प्रवेश, Git क्रिया, डेटाबेस क्वेरी — पूर्णपणे ऑफलाइन.
सुरक्षा धोरण क्लाउडपेक्षा वेगळे आहे, पण अस्तित्वात आहे: स्थानिक 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 हा एक स्थानिक प्लेसहोल्डर आहे
साधने सामान्य Python फंक्शन्स आहेत ज्यांना एक प्रोजेक्ट डायरेक्टरीमध्ये मर्यादित केले आहे:
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. आपण फक्त कोणतेही SLM न वापरता विशेषतः Qwen फंक्शन कॉलिंग मॉडेल का वापरतो?
5. स्थानिक RAG पाईपलाइनमध्ये कोणते घटक मशीनवर चालतात?
6. स्थानिक MCP सर्व्हर तुमच्या मशीनवर चालतो. याचा अर्थ तो आपोआप सुरक्षित आहे का? कोणती काळजी तुम्हाला घ्यावी लागेल?
7. स्थानिक मॉडेलचा समावेश असलेले एक समजूतदार हायब्रिड मार्गक्रमण नियम वर्णन करा.
8. या धड्यात स्थानिक एजंट चालवण्यासाठी वास्तविक किमान RAM संख्या काय आहे आणि अधिक RAM काय देते?
स्थानिक अभियांत्रिकी सहाय्यकाचा विस्तार करा आणि एक लहान प्रोजेक्टसाठी स्थानिक दस्तऐवज पुनरावलोकक तयार करा (जर आवडल्यास या रिपॉची कोणतीही धडा फोल्डर वापरा).
तुमचा सबमिशन खालीलप्रमाणे असावा:
find_todos साधन जोडा जे प्रोजेक्टमधील TODO/FIXME टिप्पण्या स्कॅन करेल आणि फाइल व लाइन नंबरसह परत करेल — read_file प्रमाणेच सॅंडबॉक्स तपासणी राखून.
नंतर या पुनरावलोकनकर्त्यासाठी काय तुम्ही क्लाऊडवर हलवाल आणि काय स्थानिक ठेवाल यावर एक लहान परिच्छेद लिहा, आणि का. तुमचं मूल्यमापन स्थानिक घटक योग्यरित्या कनेक्ट आहेत की नाही आणि तुमचं संकरित तर्कशास्त्र योग्य आहे की नाही यावर होईल — मॉडेलच्या गुणवत्तेवर नाही.
या धड्यात तुम्ही एक एजंट तयार केला आहे जो पूर्णपणे तुमच्या स्वतःच्या मशीनवर चालतो:
हे वितरण चक्र पूर्ण करते: धडा 16 एजंट्सना Microsoft Foundry मध्ये स्केल केला, आणि हा धडा त्यांना एकच कार्यस्थानावर कमी करतो. पुढचा धडा तैनात एजंट्स सुरक्षित ठेवण्याकडे वळतो.
अस्वीकरण: हा दस्तऐवज AI भाषांतर सेवा Co-op Translator चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही.