![]()
اس کورس کے اب تک کے حصے میں، آپ نے ایسے ایجنٹس بنائے ہیں جو آپ کے لیپ ٹاپ پر، نوٹ بک کے اندر، az login اور چند ماحول کی متغیرات کے ذریعے چلتے ہیں۔ یہ سیکھنے کا بالکل صحیح طریقہ ہے۔ لیکن یہ صحیح طریقہ نہیں ہے کہ آپ ایک ایجنٹ چلائیں جس پر ہزاروں صارفین رات کے 3 بجے انحصار کرتے ہوں۔
یہ سبق “یہ میرے مشین پر کام کرتا ہے” اور “یہ پیداوار میں بھروسہ مند اور مناسب قیمت پر کام کرتا ہے” کے درمیان کے فرق کے بارے میں ہے۔ ہم اس فرق کو مائیکروسافٹ فاؤنڈری اور مائیکروسافٹ فاؤنڈری ایجنٹ سروس کے ذریعے ختم کرتے ہیں، اور ہم ایسا ایک حقیقی کسٹمر سپورٹ ایجنٹ بنا کر کرتے ہیں جس کے پاس آلات، بازیافت، یادداشت، جانچ، اور نگرانی ہوتے ہیں۔
یہ سبق درج ذیل موضوعات کا احاطہ کرے گا:
اس سبق کو مکمل کرنے کے بعد، آپ جان پائیں گے کہ کیسے:
یہ سبق فرض کرتا ہے کہ آپ نے پہلے کے اسباق مکمل کر لیے ہیں اور آپ ان سے واقف ہیں:
آپ کو یہ بھی ضرورت ہوگی:
az login)۔requirements.txt۔پروٹوٹائپ ایجنٹ اور پیداوار ایجنٹ کے درمیان بنیادی لوپ ایک جیسا ہوتا ہے — سوچنا، آلات کو کال کرنا، جواب دینا۔ جو چیز تبدیل ہوتی ہے وہ اس لوپ کے ارد گرد کی ہر چیز ہے۔ ماڈل شاید پیداوار ایجنٹ کا 20% ہو؛ باقی 80% آپریشنل ڈھانچہ ہے۔
| تشویش | پروٹوٹائپ | پیداوار |
|---|---|---|
| ہوسٹنگ | آپ کے نوٹ بک میں چلتا ہے | ہوسٹڈ سروس کی طرح چلتا ہے، ورژنڈ اور رول آؤٹ کیا جاتا ہے |
| شناخت | آپ کا az login ٹوکن |
منظم شناختی اور محدد RBAC |
| حالت | ان میموری، ری اسٹارٹ پر ختم ہو جاتی ہے | بیرونی (تھریڈ اسٹور، میموری سروس) |
| ناکامی | آپ ٹریس بیک دیکھتے ہیں | ری ٹرائز، فال بیکس، ڈیڈ لیٹر، الرٹس |
| لاگت | “یہ چند سینٹس ہے” | درخواست کے حساب سے ٹریک، روٹنگ، کیشنگ، بجٹ بندی |
| معیار | آپ خود آؤٹ پٹ دیکھتے ہیں | ہر ریلیز سے پہلے خودکار جانچ کی جاتی ہے |
| اعتماد | آپ ہر ایکشن کی منظوری دیتے ہیں | پالیسیاں + خطرناک اقدامات کے لیے انسانی شمولیت |
اس جدول کو ذہن میں رکھیں۔ نیچے ہر سیکشن ان قطاروں میں سے ایک کے مطابق ہے۔
آپ تین پیٹرن استعمال کریں گے، اکثر مل کر۔
ایجنٹ آبجیکٹ آپ کی ایپلیکیشن پراسیس کے اندر رہتا ہے۔ آپ کا کوڈ ماڈل فراہم کنندہ کو براہ راست کال کرتا ہے؛ منطقی لوپ آپ کی سروس میں چلتا ہے۔ یہی کچھ ہر پچھلے سبق میں ہوا ہے۔
ایجنٹ کو مائیکروسافٹ فاؤنڈری میں ایک وسیلہ کے طور پر رجسٹر کیا جاتا ہے۔ فاؤنڈری منطقی لوپ کی میزبانی کرتا ہے، تھریڈز محفوظ کرتا ہے، مواد کی حفاظت اور RBAC نافذ کرتا ہے، اور ایجنٹ کو فاؤنڈری پورٹل میں نظر آتا ہے۔ آپ کی ایپ ایک پتلا کلائنٹ بن جاتی ہے جو تھریڈز بناتی ہے اور جوابات پڑھتی ہے۔
متعدد ایجنٹس (اور آلات) کو گراف میں کمپوز کیا جاتا ہے جس میں واضح کنٹرول فلو ہوتا ہے — تسلسل کے مراحل، شاخیں، انسانی منظوری کے نودز، اور دیرپا چیک پوائنٹس جو رکتے اور دوبارہ شروع ہو سکتے ہیں۔ یہ مائیکروسافٹ ایجنٹ فریم ورک کی ورک فلو صلاحیت ہے جو تعیناتی کے پیمانے پر لاگو ہوتی ہے۔
flowchart TB
subgraph P1[کلائنٹ-میزبان]
A1[آپ کی ایپ کا عمل] --> M1[ماڈل فراہم کنندہ]
end
subgraph P2[میزبان ایجنٹ]
A2[پتلا کلائنٹ] --> F2[فاؤنڈری ایجنٹ سروس]
F2 --> M2[ماڈل + آلات + تھریڈ اسٹور]
end
subgraph P3[ایجنٹ ورک فلو]
A3[آرکیسٹریٹر] --> S1[ٹریاج ایجنٹ]
S1 --> S2[ریزولوور ایجنٹ]
S2 --> H[انسانی منظوری نوڈ]
H --> S3[ایکشن ایجنٹ]
end
ایجنٹ کی تعیناتی ایک بار کا push نہیں ہے۔ یہ ایک لوپ ہے، اور یہ بہت کچھ سوفٹ ویئر ریلیز سائیکل کی طرح لگتا ہے کیونکہ بالکل وہی ہے۔
flowchart LR
Create[تخلیق کریں / مصنف] --> Version[ورژن]
Version --> Evaluate[آف لائن جائزہ لیں]
Evaluate -->|دروازہ پاس کرتا ہے| Deploy[میزبان پر تعینات کریں]
Evaluate -->|دروازہ ناکام ہوتا ہے| Create
Deploy --> Observe[آن لائن مشاہدہ کریں]
Observe --> Improve[ناکامیاں جمع کریں]
Improve --> Create
Deploy --> Retire[پرانا ورژن ریٹائر کریں]
کلیدی خیال، سبق 10 سے لیا گیا: آف لائن جانچ ایک گیٹ ہے، ایک بعد کی چیز نہیں۔ نیا ایجنٹ ورژن آپ کے جانچ کے معیار پر پورا نہیں اترتا تو شپ نہیں ہوتا۔ آن لائن مشاہدہ کاری اصلی دنیا کی ناکامیوں کو آپ کے آف لائن ٹیسٹ سیٹ میں واپس بھیجتی ہے۔ یہ پورا لوپ ہے۔
ایجنٹ اسکیل کرنا سٹیٹ لیس ویب API سے مختلف ہے، کیونکہ ہر درخواست میں کئی مہنگے ماڈل اور آلات کال ہو سکتی ہیں۔ چار تکنیک زیادہ تر بوجھ اٹھاتی ہیں۔
سٹیٹ لیس درخواست کی ہینڈلنگ۔ آپ کے پراسیس میموری میں صارف کی کوئی حالت نہ رکھیں۔ گفتگو کے تھریڈز کو فاؤنڈری تھریڈ اسٹور یا میموری سروس میں محفوظ کریں تاکہ کوئی بھی انسٹینس کسی بھی درخواست کو ہینڈل کر سکے۔ یہ آپ کو افقی اسکیلنگ کی اجازت دیتا ہے — انسٹینسز شامل کریں، کوئی چپکے ہوئے سیشن نہیں۔
ماڈل روٹنگ۔ ہر درخواست کو آپ کے سب سے قابل اور مہنگے ماڈل کی ضرورت نہیں ہوتی۔ سادہ درخواستوں کو — نیت کی درجہ بندی، مختصر حقائق کے جواب — ایک چھوٹے، تیز ماڈل کو بھیجیں، اور بڑے ماڈل کو اصلی منطق کے لیے محفوظ رکھیں۔ فاؤنڈری کا ماڈل روٹر آپ کے لیے یہ کر سکتا ہے، یا آپ خود ایک ہلکا پھلکا کلاسفائر بنا سکتے ہیں۔ آپ لیب میں خود اس کام کی تعمیر کریں گے۔
جواب کیشنگ۔ بہت سے سپورٹ کے سوالات قریب یا مکمل یکساں ہیں (“میں اپنا پاس ورڈ کیسے ری سیٹ کروں؟”)۔ عام سوالات کے جوابات کیش کریں اور انہیں ماڈل کو استعمال کیے بغیر فراہم کریں۔ حتیٰ کہ معتدل کیش ہٹ ریٹ بھی لاگت اور تاخیر کم کر دیتا ہے۔
ہم وقت سازی اور بیک پریشر۔ ماڈل فراہم کنندہ کی ریٹ لمٹس ہوتی ہیں۔ اپنی ہم وقت سازی کو محدود کریں، ایکسپونینشیئل بیک آف کے ساتھ ری ٹرائز استعمال کریں، اور مہذب انداز میں ناکام ہوں (کتار بند “ہم اس پر کام کر رہے ہیں” جواب 500 سے بہتر ہے)۔
flowchart LR
Q[صارف کی استعلام] --> C{کیا کیش ہٹ ہوا؟}
C -->|جی ہاں| R[کیش کیا گیا جواب واپس کریں]
C -->|نہیں| Router{پیچیدگی؟}
Router -->|آسان| SLM[چھوٹا ماڈل]
Router -->|پیچیدہ| LLM[بڑا ماڈل]
SLM --> Out[جواب]
LLM --> Out
Out --> Store[کیش + ٹریس]
آپ وہ نہیں چلا سکتے جو آپ نہیں دیکھ سکتے۔ سبق 10 میں ذکر شدہ مائیکروسافٹ ایجنٹ فریم ورک قدرتی طور پر اوپن ٹیلی میٹری ٹریسس جاری کرتا ہے — ہر ماڈل کال، ٹول انووکیشن، اور آرکیسٹریشن قدم ایک سپین بن جاتا ہے۔ پیداوار میں آپ ان سپینز کو مائیکروسافٹ فاؤنڈری (یا کسی بھی OTel مطابقت رکھنے والے بیک اینڈ) کو برآمد کرتے ہیں تاکہ آپ:
from agent_framework.observability import get_tracer
tracer = get_tracer()
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("customer.tier", "enterprise")
span.set_attribute("routed.model", "gpt-5-nano")
# ایجنٹ کے نفاذ کو خود بخود اس اسپین کے اندر ٹریس کیا جاتا ہے
customer.tier اور routed.model جیسے ایٹریبیوٹس دیوار سی ٹریسس کو جوابدہ سوالات میں تبدیل کرتے ہیں (“کیا انٹرپرائز صارفین کو چھوٹے ماڈل کی طرف بہت زیادہ روٹ کیا جا رہا ہے؟”)۔
پیداوار کے ایجنٹس میں لاگت ٹوکنز سے غالب ہوتی ہے۔ تین طریقے، اثر کے لحاظ سے ترتیب دیے گئے:
جانچ کے گیٹس اور لاگت کی کنٹرول ایک ہی اصول کے دو پہلو ہیں: جانچ آپ کو معیار کی کم سے کم حد بتاتی ہے، روٹنگ اور کیشنگ آپ کو اس حد کی لاگت کے قریب رکھتی ہے۔
حکمرانی۔ ہوسٹڈ ایجنٹس فاؤنڈری کے RBAC، مواد کی حفاظت، اور آڈٹ لاگنگ وراثت میں لیتے ہیں۔ ہر ایجنٹ کو کم از کم ضروری مراعات کے ساتھ منظم شناختی دیں — علم کے ذخیرے تک صرف پڑھنے کی رسائی، ٹکٹنگ API تک محدود رسائی، اور کچھ نہیں۔
انسانی منظوری۔ کچھ اقدامات براہ راست خودکار نہیں کیے جا سکتے — رقم کی واپسی، اکاؤنٹ کی حذف کاری، قانونی ٹیم کو بڑھانا۔ مائیکروسافٹ ایجنٹ فریم ورک منظوری مطلوبہ آلات کی حمایت کرتا ہے: ایجنٹ کارروائی تجویز کرتا ہے، عمل معطل ہو جاتا ہے، انسان منظوری دیتا یا مسترد کرتا ہے، اور ورک فلو دوبارہ شروع ہوتا ہے۔ آپ نے سبق 6 میں یہ بنیادیات دیکھی تھیں؛ یہاں آپ اسے تعینات کرتے ہیں۔
پیداوار میں MCP۔ MCP آپ کے ایجنٹ کو معیاری انٹرفیس کے ذریعے بیرونی آلات استعمال کرنے دیتا ہے۔ پیداوار میں، ہر MCP سرور کو غیر معتبر حد کے طور پر تصور کریں: سرور کا ورژن طے کریں، اسے محدود شناخت کے ساتھ چلائیں، آؤٹ پٹ کی تصدیق کریں، اور کبھی بھی اس کے سامنے راز ظاہر نہ کریں۔ MCP سرور ایک انحصار ہے، اور انحصارات کو پیچ، آڈٹ، اور ریٹ لمٹ کیا جاتا ہے۔
flowchart TB
subgraph Dev[ترقیاتی فن تعمیر]
D1[نوٹ بک] --> D2[ایجنٹ فریم ورک]
D2 --> D3[ماڈل فراہم کنندہ]
D2 --> D4[مقامی آلات]
end
subgraph Deploy[تعیناتی کا فن تعمیر]
E1[CI پائپ لائن] --> E2[جانچ کا دروازہ]
E2 -->|پاس| E3[فاؤنڈری ایجنٹ سروس]
E3 --> E4[ورژن شدہ ہوسٹڈ ایجنٹ]
end
subgraph Run[رن ٹائم فن تعمیر]
F1[کلائنٹ ایپ] --> F2[ہوسٹڈ ایجنٹ]
F2 --> F3[ماڈل روٹر]
F2 --> F4[Azure AI سرچ RAG]
F2 --> F5[میموری سروس]
F2 --> F6[MCP آلات]
F2 --> F7[OTel -> فاؤنڈری ٹریسنگ]
F2 --> F8[انسانی منظوری]
end
یہ تین خاکے — ترقی، تعیناتی، رن ٹائم — ایک ہی ایجنٹ کی زندگی کے تین مراحل ہیں۔ اگلی لیب آپ کو اسے بنانے کے عمل سے گزاریگی۔
کھولیں code_samples/16-python-agent-framework.ipynb اور اسے شروع سے آخر تک مکمل کریں۔ آپ ایک Contoso کسٹمر سپورٹ ایجنٹ تیار کریں گے جس میں ہر پیداوار کی تشویش شامل ہو گی:
نوٹ بک اس طرح منظم ہے کہ ہر پیداوار کی تشویش خود مختار، چلنے والا سیکشن ہے۔ اس کا مرکز روٹنگ پلس کیشنگ درخواست ہینڈلر ہے:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. جب ممکن ہو کیش سے فراہم کریں۔
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. لاگت کو کنٹرول کرنے کے لیے پیچیدگی کے لحاظ سے راستہ منتخب کریں۔
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. مشاہدے کے لیے ایجنٹ کو ٹریس اسپین کے اندر چلائیں۔
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("routed.model", model)
span.set_attribute("customer.id", customer_id)
response = await support_agent.run(query, model=model)
# 4. کیش کریں اور واپس کریں۔
response_cache.set(normalize(query), response.text)
return response.text
وہ جانچ گیٹ جو ریلیز کی نگہبانی کرتا ہے، کچھ یوں دکھتا ہے:
async def evaluation_gate(agent, test_cases, threshold: float = 0.8) -> bool:
passed = 0
for case in test_cases:
result = await agent.run(case["input"])
if score_response(result.text, case["expected"]) >= 0.8:
passed += 1
pass_rate = passed / len(test_cases)
print(f"Evaluation pass rate: {pass_rate:.0%} (gate: {threshold:.0%})")
return pass_rate >= threshold # صرف اس صورت میں تعینات کریں جب گیٹ پاس ہو جائے
ہر لائن پڑھیں — نوٹ بک بنیادیات کو جان بوجھ کر چھوٹا رکھتی ہے تاکہ کچھ بھی فریم ورک کال کے پیچھے نہ چھپے۔
اوپر دیا ہوا جانچ گیٹ آف لائن آپ کے ایجنٹ آبجیکٹ کے خلاف چلتا ہے۔ جب ایجنٹ کو ہوسٹڈ ایجنٹ کے طور پر تعینات کیا جاتا ہے، تو آپ کو ایک مزید، اور بھی سستا چیک کرنا ہوتا ہے: کیا تعینات اینڈپوائنٹ حقیقت میں جواب دے رہا ہے؟
“کامیابی سے” تعیناتی صرف یہ ثابت کرتی ہے کہ کنٹرول پلین نے تعریف قبول کر لی ہے — یہ نہیں دکھاتی کہ ایجنٹ جواب دے رہا ہے۔ کوئی لاپتہ انحصار، خراب ماڈل روٹنگ، یا ایک میعاد ختم کنکشن ایسا سبز تعینات چھوڑ سکتا ہے جو کچھ واپس نہیں دیتا۔ ایک اسموک ٹیسٹ یہ سیکنڈوں میں پکڑ لیتا ہے، ہر تعیناتی پر، مکمل جانچ کی لاگت کے بغیر۔
یہ ذخیرہ ایک تیار شدہ اسموک ٹیسٹ پائپ لائن کے ساتھ بھیجا جاتا ہے جو AI Smoke Test گٹ ہب ایکشن پر مبنی ہے:
tests/lesson-16-smoke-tests.json میں Contoso سپورٹ ایجنٹ کے لیے پرامپٹس اور اثبات (grounded پالیسی کے جوابات، آرڈر کی تلاش، موضوع پر رہنا، اور کثیر مرحلہ تھریڈ کی تسلسل) موجود ہیں۔ دیگر سبقوں کے ایجنٹس کے کیٹلاگز بھی اسی کے ساتھ ہوتے ہیں — دیکھیں tests/README.md۔.github/workflows/smoke-test.yml Azure OIDC کے ساتھ لاگ ان ہوتی ہے اور ہر پرامپٹ کو ایجنٹ کے Responses اینڈپوائنٹ پر POST کرتی ہے، کسی بھی اثبات میں ناکامی پر کام ناکام کر دیتی ہے۔- name: Smoke-test hosted agent
uses: JFolberth/ai-smoketest@v1
with:
project_endpoint: $
agent_name: ContosoSupportAgent
tests_file: tests/lesson-16-smoke-tests.json
اپنے ایجنٹ کے تعینات ہونے کے بعد Actions ٹیب سے اسے چلائیں، اپنے Foundry پروجیکٹ کا اینڈپوائنٹ اور ایجنٹ کا نام فراہم کرتے ہوئے۔ فیڈریٹڈ شناخت کو Foundry پروجیکٹ کے دائرہ کار میں Azure AI User رول کی ضرورت ہوتی ہے۔ تہوں کو ایک ہرم کے طور پر سوچیں: دھواں کے ٹیسٹ (پہنچنے کے قابل اور جواب دے رہے ہیں؟) ہر تعیناتی پر چلتے ہیں، آف لائن جائزہ (کیا شپ کرنے کے لیے کافی اچھا ہے؟) پرموشن سے پہلے چلتا ہے، اور آن لائن جائزہ (یہ حقیقی دنیا میں کیسا کر رہا ہے؟) مسلسل چلتا رہتا ہے۔
اسائنمنٹ پر جانے سے پہلے اپنی سمجھ کو آزمائیں۔
1. تقریباً پیداوار کے ایک ایجنٹ میں “ماڈل” کتنے فیصد ہوتا ہے، اور باقی کیا ہوتا ہے؟
2. آپ کب کلائنٹ ہوسٹڈ ایجنٹ کے بجائے ہوسٹڈ ایجنٹ کا انتخاب کریں گے؟
3. کیوں ایک اسکیل ایبل ایجنٹ کو اپنی پروسیس میموری میں بغیر حالت کا ہونا ضروری ہے؟
4. ماڈل روٹنگ کون سا مسئلہ حل کرتی ہے، اور یہ جائزے سے کیسے متعلق ہے؟
5. “ایوالویشن گیٹ” کیا ہے اور یہ لائف سائیکل میں کہاں آتا ہے؟
6. پیداوار میں MCP سرور کو غیر قابل اعتماد حد کے طور پر کیوں سمجھنا چاہیے؟
7. پیداوار کے ایجنٹ کی لاگت پر عام طور پر سب سے بڑا اثر ڈالنے والی واحد تبدیلی کون سی ہے، اور کیوں؟
8. span attributes جیسے customer.tier اور routed.model مشاہدہ پذیری میں کیا کردار ادا کرتے ہیں؟
لیب سے کسٹمر سپورٹ ایجنٹ لے کر اسے ایک مخصوص منظرنامے کے لیے مضبوط بنائیں: SaaS کمپنی کے لیے سبسکرپشن بلنگ سپورٹ ایجنٹ۔
آپ کی جمع کرائی گئی چیزوں میں شامل ہونا چاہیے:
get_subscription_status, get_invoice, اور issue_credit (50 ڈالر سے زائد کریڈٹس کو انسانی منظوری کی ضرورت ہوتی ہے)۔ایک مختصر پیراگراف (مارک ڈاؤن سیل میں) لکھیں جس میں وضاحت کریں کہ آپ نے کون سا ماڈل روٹنگ رول منتخب کیا اور آپ اسے حقیقی ٹریفک کے ساتھ کیسے تصدیق کریں گے۔ کوئی واحد درست جواب نہیں ہے — آپ کا جائزہ اس بات پر ہوگا کہ آیا پیداوار کے معاملات مربوط طریقے سے جڑے ہیں یا نہیں۔
اس سبق میں آپ نے Microsoft Foundry کے ساتھ ایک ایجنٹ کو پروٹوٹائپ سے پیداوار میں منتقل کیا:
اگلا سبق اس کے برعکس سفر کرے گا: ایجنٹوں کو کلاؤڈ میں اسکیل کرنے کی بجائے آپ انہیں ایک واحد ڈیولپر مشین پر لے کر آئیں گے اور مکمل طور پر لوکل چلائیں گے۔
کمپیوٹر یوز ایجنٹس (CUA) بنانا
ڈس کلیمر: یہ دستاویز AI ترجمہ سروس Co-op Translator کے ذریعے ترجمہ کی گئی ہے۔ جبکہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنے مادری زبان میں مستند ماخذ سمجھی جائے گی۔ حساس معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم قبول نہیں کرتے۔