![]()
پچھلے سبق میں ایجنٹس کو کلاؤڈ میں اوپر بڑھایا گیا تھا۔ یہ انہیں ایک ہی مشین پر نیچے لے آتا ہے۔ آخر تک آپ کے پاس ایک کام کرنے والا انجینئرنگ اسسٹنٹ ہوگا جو دلیل دیتا ہے، ٹولز کو کال کرتا ہے، آپ کی فائلیں پڑھتا ہے، اور آپ کی دستاویزات تلاش کرتا ہے — بغیر کسی کلاؤڈ انفرنس کال کے۔
آپ یہ کیوں چاہیں گے؟ تین وجوہات جو حقیقی انجینئرنگ کام میں مسلسل سامنے آتی ہیں:
گرفت یہ ہے کہ آپ ایک جدید کلاؤڈ ماڈل کے بدلے ایک چھوٹے زبان ماڈل (SLM) کا تبادلہ کر رہے ہیں جو آپ کے CPU، GPU، یا NPU پر چل رہا ہے۔ یہ سبق ایسے ایجنٹس بنانے کے بارے میں ہے جو اس حد کے اندر اچھے ہوں بجائے اس کے کہ اس حد کو نظر انداز کریں۔
یہ سبق درج ذیل موضوعات کا احاطہ کرے گا:
اس سبق کو مکمل کرنے کے بعد، آپ جانیں گے کہ کیسے:
یہ سبق فرض کرتا ہے کہ آپ نے پہلے کے اسباق مکمل کر لیے ہیں اور آپ کو یہ چیزیں آتی ہیں:
آپ کو درج ذیل کی بھی ضرورت ہوگی:
requirements.txt، نیز foundry-local-sdk، openai، اور chromadb اس سبق کے لیے۔ایک فرنٹیئر کلاؤڈ ماڈل میں سینکڑوں اربوں پیرامیٹرز ہوتے ہیں اور اس کے پیچھے ایک ڈیٹا سینٹر ہوتا ہے۔ ایک SLM میں کچھ ارب پیرامیٹرز ہوتے ہیں اور اسے آپ کے لیپ ٹاپ کی RAM میں فٹ ہونا ہوتا ہے۔ یہ فرق واضح توقعات قائم کرتا ہے۔
SLM میں یہ چیزیں اچھی ہوتی ہیں:
SLM میں کمزوری یہ ہے:
لہذا مقامی ایجنٹس کے لیے جیتنے کی حکمت عملی یہ ہے: SLM کو آرکیسٹریٹ کرنے دیں، اور ٹولز کو بھاری کام کرنے دیں۔ ماڈل کو آپ کا کوڈ بیس جاننے کی ضرورت نہیں — اسے صرف یہ جاننے کی ضرورت ہے کہ read_file اور search_docs کب کال کرنا ہے۔ یہ براہ راست SLM کی طاقتوں سے جڑتا ہے۔
flowchart LR
U[ڈویلپر] --> A[مقامی SLM ایجنٹ]
A -->|فیصلہ کرتا ہے کون سا ٹول| T1[read_file]
A -->|فیصلہ کرتا ہے کون سا ٹول| T2[سرچ ڈاکس 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 # میک او ایس
# ایک 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 -->|اعلیٰ k ٹکڑے| A[قون ایجنٹ]
A --> Ans[مستند جواب]
یہ وہی Agentic RAG پیٹرن ہے جو سبق 5 میں تھا — واحد تبدیلی یہ ہے کہ ہر جزو آپ کی مشین پر چل رہا ہے۔
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 کھولیں اور اس پر کام کریں۔ آپ ایک مقامی انجینئرنگ اسسٹنٹ بنائیں گے جو مکمل طور پر آپ کے ورک سٹیشن پر چلتا ہے اور کر سکتا ہے:
کسی بھی موقع پر کلاؤڈ انفرنس استعمال نہیں ہوتی۔
اسسٹنٹ Foundry Local سے OpenAI مطابقت پذیر اینڈ پوائنٹ کے ذریعے جڑتا ہے، اس لیے ایجنٹ کوڈ کلاؤڈ سبقوں کی طرح ہی دکھائی دیتا ہے — صرف کلائنٹ بدلتا ہے:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# فاؤنڈری لوکل ماڈل کو دریافت کرتا ہے/ڈاؤن لوڈ کرتا ہے اور ہمیں ایک مقامی اینڈ پوائنٹ دیتا ہے۔
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. اس سبق میں مقامی ایجنٹ چلانے کے لیے حقیقی کم از کم ریم کی مقدار کیا ہے، اور زیادہ ریم سے کیا فائدہ ہوتا ہے؟
مقامی انجینئرنگ اسسٹنٹ کو اپنے منتخب کردہ چھوٹے پراجیکٹ کے لیے ایک مقامی دستاویزات کے جائزہ کار میں تبدیل کریں (اگر چاہیں تو اس ریپو کے سبق فولڈرز میں سے کوئی استعمال کریں)۔
آپ کی جمع کروائی:
حقیقی ڈاک/کوڈ فولڈر کو Chroma میں انڈیکس کریں (کم از کم پانچ فائلیں)۔
ایک find_todos ٹول شامل کریں جو پراجیکٹ میں TODO/FIXME تبصروں کو اسکین کرے اور انہیں فائل اور لائن نمبر کے ساتھ واپس کرے — بالکل ویسے ہی سینڈ باکس چیک کے ساتھ جیسا کہ read_file میں ہوتا ہے۔
پھر ایک مختصر پیراگراف لکھیں کہ آپ اس ریویور کے لیے کیا کلاؤڈ میں منتقل کریں گے اور کیا لوکل رکھیں گے، اور کیوں۔ آپ کی تشخیص اس بات پر ہوگی کہ آیا لوکل اجزاء صحیح طریقے سے جوڑے گئے ہیں اور آیا آپ کی سہ مرکب استدلال درست ہے — ماڈل کی کوالٹی پر نہیں۔
اس سبق میں آپ نے ایک ایجنٹ بنایا جو مکمل طور پر آپ کے اپنے مشین پر چلتا ہے:
یہ تعیناتی کا چکر مکمل کرتا ہے: سبق 16 نے ایجنٹس کو Microsoft Foundry میں وسیع کیا، اور یہ سبق انہیں ایک واحد ورک اسٹیشن پر سکالڈ کیا۔ اگلا سبق تعینات کردہ ایجنٹس کی سلامتی پر توجہ دیتا ہے۔
ڈس کلیمر: یہ دستاویز AI ترجمہ سروس Co-op Translator کے ذریعے ترجمہ کی گئی ہے۔ جبکہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنے مادری زبان میں مستند ماخذ سمجھی جائے گی۔ حساس معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم قبول نہیں کرتے۔