
Unreal Agent کیا ہے؟
Unreal Agent، Unreal Labs کی جانب سے فراہم کردہ async-first ایجنٹ ہارنس ہے۔ یہ ان پٹس قبول کرنے، سیشن ہسٹری برقرار رکھنے، ماڈل کا context تیار کرنے، LLM turns کو مربوط کرنے، tool calls کا ترجمہ کرنے، اور پائیدار غیر ہم وقتی آپریشنز بھیجنے کے لیے قابلِ ترکیب انفراسٹرکچر فراہم کرتا ہے۔
یہ پروجیکٹ ہم وقتی coordination کو غیر ہم وقتی execution سے الگ کرتا ہے۔ Tool translators ماڈل کی تیار کردہ درخواستوں کی توثیق کرتے ہیں اور I/O کیے بغیر قابلِ سیریلائز operation descriptions تیار کرتے ہیں۔ اس کے بعد operation manager committed operations کو coordinator کے event loop سے باہر execute کرتا ہے۔
ریپوزٹری کا ڈھانچہ
ریپوزٹری تین بنیادی حصوں میں منظم ہے:
harness/: دوبارہ قابلِ استعمال agent harness library۔cmd/: library کے ساتھ بنائے گئے executables۔benchmarks/: پروجیکٹ کی جانچ کے لیے benchmark runners۔
فریم ورک کو کسی دوسری application میں شامل کرتے وقت harness/ سے آغاز کریں۔ ٹھوس executable entry points کے لیے cmd/ کا جائزہ لیں، اور runtime behavior کا معائنہ یا پیمائش کرنے کے لیے benchmarks/ استعمال کریں۔
بنیادی تصورات
Inputs اور Inbox
ایک input ایسا event ہے جس میں caller کی فراہم کردہ عالمی طور پر منفرد شناخت شامل ہوتی ہے۔ اگر event دوبارہ deliver کیا جائے تو یہ شناخت تبدیل نہیں ہونی چاہیے۔
Session inbox بیرونی، کنٹرول، اور crash inputs کی in-memory deduplication کے لیے ان شناختوں کا استعمال کرتا ہے۔ یہ idempotency session-scoped اور volatile ہے، اس لیے callers کو پھر بھی مستقل IDs فراہم کرنی چاہییں۔
{
"id": "globally-unique-and-stable-id",
"type": "external-input",
"payload": "Example request"
}یہ شکل Unreal Agent کی دستاویزی API type کے بجائے ایک تصوراتی مثال ہے۔ اہم تقاضا input ID کا مستحکم اور عالمی طور پر منفرد ہونا ہے۔
Sessions
Session ایک append-only، محفوظ کی گئی history ہے۔ Sessions کو resume اور fork کیا جا سکتا ہے، جس سے application موجودہ کام جاری رکھ سکتی ہے یا اصل sequence کو دوبارہ لکھے بغیر سابقہ history سے نئی شاخ بنا سکتی ہے۔
Session store canonical history اور operation state کا مالک ہوتا ہے۔ یہ کسی tool call کی translation status کو اس translation سے تیار ہونے والی operations کے ساتھ بھی جوہری طور پر ریکارڈ کرتا ہے۔
LLM Turns
LLM turn ایک منطقی model request کے گرد coordinator کے زیرِ انتظام sequence ہے۔ Coordinator منظور شدہ inputs کو محفوظ کرتا ہے، turn تیار کرتا ہے، tool translators resolve کرتا ہے، نتیجے میں بننے والے کام کو ریکارڈ کرتا ہے، اور committed operations dispatch کرتا ہے۔
Tools، Translators، اور Operations
Tool ایک schema کو translator کے ساتھ ملاتا ہے۔ جب model کوئی tool call تیار کرتا ہے تو translator اس کی توثیق کرکے اسے ایک یا زیادہ operations میں تبدیل کرتا ہے۔
Tool translator coordinator کے event loop پر ہم وقتی طور پر چلتا ہے۔ اسے I/O نہیں کرنا چاہیے اور نہ ہی loop کو معطل کرنا چاہیے۔
Translation کے نتیجے کو tool call status کہا جاتا ہے۔ اس میں یا تو validation error ہوتا ہے یا submitted operations کے references ہوتے ہیں۔ یہ status ان operations کی execution state سے الگ ہوتا ہے۔
Operation غیر ہم وقتی کام کی قابلِ سیریلائز، versioned description ہے۔ Translators کام کی وضاحت کرتے ہیں؛ operation manager اسے انجام دیتا ہے۔
اہم اجزا
- Session inbox: volatile، session-scoped input idempotency فراہم کرتا ہے۔
- Coordinator: منظور شدہ inputs محفوظ کرتا ہے، LLM turns کا انتظام کرتا ہے، tool translators resolve کرتا ہے، اور committed operations dispatch کرتا ہے۔
- Session store: canonical session history اور operation state محفوظ کرتا ہے، recovery اور forks کو support کرتا ہے، اور tool-call status کو operations کے ساتھ جوہری طور پر ریکارڈ کرتا ہے۔
- Context builder: model input کو memory میں assemble کرتا ہے اور حذف، مختصر، یا compact کیے گئے content کی اطلاع دیتا ہے۔ یہ I/O نہیں کرتا اور اس کی persistence dependencies نہیں ہیں۔
- LLM adapter: تیار کردہ input کو model provider کو بھیجتا ہے اور normalized completed response واپس کرتا ہے۔ یہ authentication، cancellation، اور provider errors کا ذمہ دار ہے۔
- Tool registry: Bash، ViewImage، اور skill-use tools کی definitions اور translators کا مالک ہوتا ہے، جبکہ host کے منتخب کردہ set کو ظاہر کرتا ہے۔
- Tool translator: calls کی توثیق کرتا ہے، statuses اور operations تیار کرتا ہے، اور recorded statuses اور تیار شدہ operation output کو model کے لیے format کرتا ہے۔
- Operation manager: durable operations کے لیے actor runtime فراہم کرتا ہے۔ مقامی implementation کو تبدیل کیا جا سکتا ہے۔
تنصیب اور سیٹ اپ
README میں package manager، کسی مخصوص زبان کی installation command، یا مستحکم public API کی وضاحت نہیں کی گئی۔ اس لیے setup کا آغاز کسی فرضی package command کے بجائے repository کے local checkout اور اس کے build metadata سے ہونا چاہیے۔
- Unreal Agent repository کو clone یا download کریں۔
- Repository root کھولیں اور supported toolchain کے لیے اس کی build اور dependency files کا معائنہ کریں۔
- Repository میں configured tooling استعمال کرتے ہوئے
harness/کے تحت library کو build یا install کریں۔ - Harness components کو compose کرنے والی executable examples کے لیے
cmd/کا معائنہ کریں۔ - Core project کامیابی سے build ہونے کے بعد ہی
benchmarks/استعمال کریں۔
cd <unreal-agent-repository>
# Inspect the library, executable, and benchmark directories.
ls harness
ls cmd
ls benchmarksHost application کو اپنے منتخب provider کے لیے configured LLM adapter کی بھی ضرورت ہوگی۔ Authentication، cancellation behavior، اور provider-specific error handling اسی adapter میں شامل ہونے چاہییں۔
بنیادی استعمال: ایک Agent Request کو Follow کرنا
چونکہ README ٹھوس constructor یا method names شائع نہیں کرتی، اس لیے usage سمجھنے کا محفوظ ترین طریقہ documented component flow کو follow کرنا ہے۔
- سیشن بنائیں یا دوبارہ شروع کریں۔ سیشن اسٹور محفوظ شدہ تاریخچہ اور بحالی کی سہولت فراہم کرتا ہے۔
- مستحکم ID کے ساتھ ان پٹ جمع کریں۔ اسی منطقی ایونٹ کو دوبارہ فراہم کرتے وقت وہی ID استعمال کریں۔
- سیشن ان باکس کے ذریعے نقل کو ختم کریں۔ فعال سیشن کے اندر نفاذ کے رویے کے مطابق ان باکس دہرائے گئے ان پٹس کو مسترد یا نظر انداز کرتا ہے۔
- قبول شدہ ان پٹ محفوظ کریں۔ کوآرڈی نیٹر اسے سیشن کے بنیادی صرف اضافہ ہونے والے تاریخچے میں ریکارڈ کرتا ہے۔
- ماڈل کا سیاق و سباق بنائیں۔ سیاق و سباق بنانے والا میموری میں ماڈل ان پٹ تیار کرتا ہے اور ایسے مواد کی اطلاع دیتا ہے جسے اس نے خارج، مختصر یا یکجا کیا ہو۔
- LLM ٹرن چلائیں۔ LLM اڈاپٹر تیار کردہ ان پٹ فراہم کنندہ کو بھیجتا ہے اور معمول پر لایا گیا مکمل جواب واپس کرتا ہے۔
- ٹول کالز حل کریں۔ کوآرڈی نیٹر رجسٹری کے ذریعے ہر اجازت یافتہ ٹول تلاش کرتا ہے۔
- ہم وقت ترجمہ کریں۔ منتخب مترجم کال کی توثیق کرتا ہے اور توثیقی خرابی یا قابل تسلسل آپریشنز تیار کرتا ہے۔
- ایٹمی طور پر کمٹ کریں۔ سیشن اسٹور ٹول کال کی حالت اور آپریشنز کو ایک ساتھ ریکارڈ کرتا ہے۔
- غیر ہم وقت ترسیل کریں۔ آپریشن مینیجر کمٹ کیے گئے آپریشنز چلاتا ہے اور ان کی عمل درآمد کی حالت کو ترجمے کی حالت سے الگ ٹریک کرتا ہے۔
- نتائج کو ماڈل کے لیے فارمیٹ کریں۔ مترجم ریکارڈ شدہ کال کی حالت کو تیار کردہ آپریشن آؤٹ پٹ کے ساتھ ملا کر ماڈل کے لیے نتیجہ تیار کرتا ہے۔
ٹول کال لائف سائیکل کی مثال
مستحکم ID کے ساتھ ان پٹ
-> ان باکس میں نقل کا خاتمہ
-> محفوظ شدہ سیشن ایونٹ
-> سیاق و سباق کی تیاری
-> معمول پر لایا گیا LLM جواب
-> ٹول رجسٹری کی تلاش
-> ہم وقت توثیق اور ترجمہ
-> ایٹمی حالت اور آپریشن کمٹ
-> غیر ہم وقت آپریشن کا نفاذ
-> ماڈل کے لیے نتیجے کی فارمیٹنگاگر توثیق ناکام ہو جائے تو مترجم آپریشنز تیار کرنے کے بجائے توثیقی خرابی ریکارڈ کرتا ہے۔ اگر توثیق کامیاب ہو، تو حالت جمع کرائے گئے آپریشنز کا حوالہ دیتی ہے، جبکہ آپریشن مینیجر آزادانہ طور پر ٹریک کرتا ہے کہ یہ آپریشنز زیر التوا، جاری، مکمل یا اپنے نفاذ کے مطابق کسی اور حالت میں ہیں۔
ٹولز کا انتخاب
ٹول رجسٹری Bash، ViewImage اور اسکل کے استعمال کے لیے تعریفوں اور مترجمین کی مالک ہے۔ میزبان منتخب کرتا ہے کہ ان میں سے کون سے ٹولز فراہم کیے جائیں۔
کسی مخصوص تعیناتی کے لیے صرف مطلوبہ صلاحیتیں فراہم کریں۔ README اجازت یا سینڈ باکسنگ کی پالیسیوں کی وضاحت نہیں کرتا، اس لیے ان امور کو میزبان ماحول اور آپریشن کے نفاذ کی تہہ میں سنبھالا جانا چاہیے۔
ہارنس کو وسعت دینا
Unreal Agent کے اجزا قابل ترکیب ہونے کے لیے بنائے گئے ہیں۔ انٹرفیس پر مبنی اجزا کے متبادل نفاذ استعمال کیے جا سکتے ہیں، بشرطیکہ وہ دستاویزی ذمہ داریوں اور مستقل شرائط کو برقرار رکھیں۔
ٹول مترجم نافذ کرنا
حسب ضرورت مترجم کو اس ترتیب کی پیروی کرنی چاہیے:
- ماڈل کے تیار کردہ دلائل کی ٹول کی اسکیما کے خلاف توثیق کریں۔
- درخواست غیر معتبر ہونے پر توثیقی خرابی واپس کریں۔
- درخواست معتبر ہونے پر ایک یا زیادہ قابل تسلسل، ورژن شدہ آپریشن کی وضاحتیں بنائیں۔
- جمع کرائے گئے آپریشنز کا حوالہ دینے والی حالت واپس کریں۔
- ایسی فارمیٹنگ منطق فراہم کریں جو ریکارڈ شدہ حالت اور تیار کردہ آپریشن آؤٹ پٹ کو ماڈل کے لیے نتیجے میں تبدیل کرے۔
ترجمے کو متعین اور تیز رکھیں۔ مترجم کے اندر نیٹ ورک درخواستیں نہ بھیجیں، فائلوں تک رسائی نہ کریں، ذیلی عملوں کا انتظار نہ کریں اور نہ ہی کوئی دوسرا I/O انجام دیں۔
آپریشن مینیجر تبدیل کرنا
مقامی آپریشن مینیجر قابل تبدیلی ہے۔ ایک دستاویزی توسیع پراکسی مینیجر ہے جو آپریشنز کو سیریلائز کرتا ہے اور انہیں ایک دور دراز سینڈ باکس عمل کے اندر چلنے والے دوسرے مقامی آپریشن مینیجر کو بھیجتا ہے۔
یہ ڈیزائن کوآرڈی نیٹر اور مترجمین کو توثیق اور پائیدار ارادے پر مرکوز رکھتا ہے، جبکہ نفاذ کو الگ تھلگ ماحول میں انجام دینے کی اجازت دیتا ہے۔
اسٹوریج نافذ کرنا
متبادل سیشن اسٹورز کو سیریلائزیشن، ورژننگ، بحالی کے رویے، اور ٹول کال کی حالت اور تیار کردہ آپریشنز کے درمیان ایٹمی تعلق برقرار رکھنا ہوگا۔
پروجیکٹ کا مقصد سیشنز کے لیے پسماندہ مطابقت برقرار رکھنا ہے۔ اگر سیشن کا ورژن غیر معاون ہو، تو اسے دوبارہ شروع کرنا ڈیٹا کو خاموشی سے غلط پڑھنے کے بجائے واضح خرابی کے ساتھ ناکام ہونا چاہیے۔
اعلیٰ درجے کی تجاویز
- ان پٹ آئی ڈیز کالر کی حد پر بنائیں۔ آئی ڈی کو اسے پیدا کرنے والے ایونٹ کے ساتھ محفوظ کریں تاکہ دوبارہ کوششوں اور دوبارہ ترسیل کے دوران بھی وہی شناخت برقرار رہے۔
- ان باکس ڈی ڈپلیکیشن کو مستقل تاریخ سے خلط ملط نہ کریں۔ ان باکس عارضی اور سیشن تک محدود ہوتا ہے، جبکہ سیشن اسٹور بنیادی ایونٹس کو مستقل محفوظ رکھتا ہے۔
- ترجمہ کاروں کو خالص اور ہم وقت رکھیں۔ درخواستوں کو آپریشنز میں تبدیل کریں، کام براہِ راست انجام نہ دیں۔
- ہر آپریشن فارمیٹ کا ورژن بنائیں۔ آپریشنز انہیں بنانے والے پراسیس سے زیادہ عرصے تک موجود رہ سکتے ہیں یا پراسیس اور سینڈ باکس کی حدود عبور کر سکتے ہیں۔
- ایٹامک کمٹس برقرار رکھیں۔ کامیاب ٹول کال کا اسٹیٹس اس کے آپریشنز کے بغیر ریکارڈ کرنے سے کریش کے بعد سیشن غیر مستقل حالت میں جا سکتا ہے۔
- ترجمہ اور عمل درآمد کو الگ الگ ٹریک کریں۔ ایک درست کال ایسا کمٹ شدہ آپریشن پیدا کر سکتی ہے جو ابھی مکمل نہ ہوا ہو۔
- کانٹیکسٹ بلڈر کا میٹا ڈیٹا استعمال کریں۔ نگرانی کریں کہ کیا چھوڑا، مختصر، یا کمپیکٹ کیا گیا، تاکہ ماڈل کے رویے کی تشخیص کی جا سکے۔
- پرووائیڈر سے متعلق امور کو مرکزی رکھیں۔ اسناد، منسوخی، اور پرووائیڈر کی خرابیوں کو LLM اڈاپٹر کے اندر رکھیں۔
- تجربات کے لیے سیشنز فورک کریں۔ فورک ماخذ سیشن کی صرف اضافی تاریخ برقرار رکھتے ہوئے مختلف تسلسل آزما سکتا ہے۔
- تنہائی کے لیے پراکسی آپریشن مینیجر استعمال کریں۔ سیریلائز کیے گئے آپریشنز کو کسی ریموٹ سینڈ باکس کے اندر موجود رن ٹائم تک بھیجا جا سکتا ہے، جبکہ ہم وقت ترجمہ وہیں منتقل کرنے کی ضرورت نہیں رہتی۔
اہم مستقل اصول
ایکسٹینشنز کو درج ذیل ضمانتیں برقرار رکھنی چاہییں:
- سیشن اسٹور کی اشیا سیریلائز کے قابل رہیں۔
- اسٹوریج فارمیٹ کا ورژن برقرار رہے۔
- غیر معاون سیشن ورژنز واضح ریزیوم ایررز پیدا کریں۔
- آپریشنز سیریلائز کے قابل اور ورژن شدہ رہیں۔
- کانٹیکسٹ کی تیاری میں کوئی I/O نہ ہو اور یہ کسی پائیداری کے انحصار کو قبول نہ کرے۔
- ٹول ترجمہ میں کوئی I/O نہ ہو اور یہ کوآرڈینیٹر کے ایونٹ لوپ کو کبھی معطل نہ کرے۔
نتیجہ
Unreal Agent ایسے ایجنٹس کے لیے ایک ماڈیولر بنیاد فراہم کرتا ہے جنہیں مستقل سیشنز، ڈی ڈپلیکیٹ شدہ ان پٹس، مربوط LLM ٹرنز، توثیق شدہ ٹول کالز، اور مستقل غیر ہم وقت کام کی ضرورت ہوتی ہے۔ اس کا بنیادی ڈیزائن اصول ہم وقت ترجمے اور غیر ہم وقت عمل درآمد کے درمیان واضح حد ہے۔ موجودہ ایگزیکیوٹ ایبلز سے آغاز کریں، دستاویزی ایونٹ فلو کی پیروی کریں، اور اجزا کو تبدیل یا توسیع دیتے وقت سیریلائزیشن، ورژننگ، اور ایٹامیسٹی برقرار رکھیں۔
