OSM کے لیے ایک لوکل AI ایجنٹ بنانا

میں نے ایک لوکل AI ایجنٹ بنانے میں 21 دن صرف کیے۔ یہ قدرتی زبان (natural language) کو OSM فلٹر JSON میں تبدیل کرتا ہے۔

میں چاہتا تھا کہ یہ مکمل طور پر ایک لوکل GPU پر چلے۔ کوئی API کالز نہیں۔ کوئی پرائیویسی خطرات نہیں۔ کوئی ریٹ لمٹس (rate limits) نہیں۔

یہاں بتایا گیا ہے کہ میں نے اسے کیسے بنایا اور میں نے کیا سیکھا۔

آرکیٹیکچر

میں نے ماڈل کو سیاق و سباق (context) فراہم کرنے کے لیے ایک RAG پائپ لائن کا استعمال کیا۔

• ایمبیڈنگز: میں نے OSM ٹیگ کی تفصیلات کو ویکٹرز میں تبدیل کرنے کے لیے bge-small-en-v1.5 کا استعمال کیا۔ • ڈیٹا بیس: میں نے ان ایمبیڈنگز کو SQLite میں محفوظ کیا۔ • ریٹریول: جب آپ کوئی سوال پوچھتے ہیں، تو سسٹم سب سے زیادہ متعلقہ OSM ٹیگز اور فلٹر کی مثالیں تلاش کرتا ہے۔ • جنریشن: LLM آپ کی کوئری اور حاصل کردہ مثالوں کو موصول کرتا ہے تاکہ JSON تیار کر سکے۔

ناکامیاں

اسے بنانا آسان نہیں تھا۔ مجھے کئی مشکلات کا سامنا کرنا پڑا۔

• اسٹاپ ٹوکن بگ: میرے پہلے تجربات کے نتائج خالی آئے۔ ماڈل نے JSON سے پہلے ایک خالی لائن شامل کر دی۔ اس سے میرا اسٹاپ ٹوکن متحرک ہو گیا اور آؤٹ پٹ ادھورا رہ گیا۔ اسے ٹھیک کرنے کے لیے مجھے اسٹاپ ٹوکن کو ہٹانا پڑا۔ • اندھا دھند کاپی کرنا: LLM اکثر مثالوں کو ڈھالنے کے بجائے بالکل ویسا ہی کاپی کر دیتا تھا۔ میں نے پرامپٹس کو دوبارہ لکھا تاکہ ماڈل نئے فلٹرز تیار کرنے پر مجبور ہو۔ • ڈومین کی الجھن: ماڈل سمندری (maritime) ٹیگز کو زمینی (land) ٹیگز کے ساتھ خلط ملط کر دیتا تھا۔ میں نے متعلقہ ٹیگز کو فلٹر کرنے کے لیے ایک ویلیڈیشن مرحلہ شامل کیا۔

اسباق

• اسٹاپ ٹوکنز سے بچیں: جب تک آپ کو یقین نہ ہو، انہیں استعمال نہ کریں۔ یہ اکثر آپ کے آؤٹ پٹ کو خراب کر دیتے ہیں۔ • ڈیٹا کا معیار سب سے اہم ہے: خام JSON اسٹرنگز کے بجائے قدرتی زبان کے جملوں کی ایمبیڈنگ کرنا زیادہ بہتر کام کرتا ہے۔ • لوپ ہی جادو ہے: میں نے ایک سادہ لوپ شامل کیا۔ اگر کوئی فلٹر صفر نتائج دیتا ہے، تو ایجنٹ درخواست کو وسیع کرتا ہے اور دوبارہ کوشش کرتا ہے۔ یہ ایک جامد (static) ٹول کو ایک موافق (adaptive) سسٹم میں بدل دیتا ہے۔

نتیجہ

یہ سسٹم 8 GB VRAM سے کم والے ایک سنگل GPU پر چلتا ہے۔ یہ زیادہ تر سادہ سوالات کو سنبھال لیتا ہے اور ناکامی کی صورت میں خود کو ڈھال لیتا ہے۔ پیچیدہ نفی (negation) اور ٹیگ کی ترکیب (synthesis) پر ابھی مزید کام کی ضرورت ہے، لیکن بنیادی ڈھانچہ کام کر رہا ہے۔

آپ اپنے جیو اسپیشل (geospatial) ورک فلو میں ٹیگ کی ابہام (ambiguity) کو کیسے سنبھالتے ہیں؟

ماخذ: https://dev.to/gisfromscratch/building-a-local-ai-agent-for-osm-21-days-of-iteration-2fc4

اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi