𝗢𝗹𝗹𝗮𝗺𝗮 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲𝗱 𝗢𝘂𝘁𝗽𝘂𝘁𝘀 𝗜𝗻 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲
مقامی LLMs کو چلانے سے اکثر JSON parsing کی غلطیاں ہوتی ہیں۔ آپ ماڈل کو صرف JSON واپس کرنے کا کہتے ہیں، لیکن وہ پھر بھی markdown fences یا اضافی متن شامل کر دیتا ہے۔ اس سے آپ کا کوڈ ٹوٹ جاتا ہے۔
Ollama 0.3.0 سے، آپ format parameter کا استعمال کرتے ہوئے اسے ٹھیک کر سکتے ہیں۔ یہ ماڈل کو JSON schema پر عمل کرنے پر مجبور کرتا ہے۔ اس سے ماڈل کے لیے اضافی متن یا markdown شامل کرنا جسمانی طور پر ناممکن ہو جاتا ہے۔
میں نے اسے Gemma4 اور Ollama 0.30.7 کے ساتھ آزمایا ہے۔ نتائج درج ذیل ہیں۔
The Problem with Natural Text
ماڈلز گفتگو کے لیے تربیت یافتہ ہوتے ہیں۔ وہ کہنا چاہتے ہیں کہ "یہ رہا آپ کا JSON"۔ سخت پرامپٹس کے باوجود، وہ اکثر جوابات کو code blocks میں لپیٹ دیتے ہیں۔ جب Python کا json.loads() ان بلاکس سے ٹکراتا ہے تو وہ فیل ہو جاتا ہے۔
The Speed Advantage format parameter کا استعمال کرنا بہت زیادہ تیز ہے۔
- بغیر اسٹرکچرڈ آؤٹ پٹ کے: 32 سیکنڈ
- اسٹرکچرڈ آؤٹ پٹ کے ساتھ: 5 سیکنڈ
یہ 6.4x رفتار میں بہتری ہے۔ ماڈل متن کو فارمیٹ کرنے کا فیصلہ کرنے میں وقت ضائع نہیں کرتا۔ یہ صرف وہی tokens تیار کرتا ہے جو آپ کے schema کے مطابق ہوں۔
Using Pydantic for Type Safety آپ کو ہاتھ سے JSON schemas لکھنے کی ضرورت نہیں ہے۔ انہیں خودکار طور پر تیار کرنے کے لیے Pydantic models کا استعمال کریں۔
- اپنا Pydantic model ڈیفائن کریں۔
- schema بنانے کے لیے
model_json_schema()کا استعمال کریں۔ - اس schema کو Ollama کو پاس کریں۔
- ڈیٹا کو ایک ساتھ parse اور validate کرنے کے لیے
model_validate_json()کا استعمال کریں۔
یہ طریقہ کار AI agents کے لیے بہترین ہے۔ آپ اسے یہ فیصلہ کرنے کے لیے استعمال کر سکتے ہیں کہ ایجنٹ کو اگلا کون سا ٹول کال کرنا چاہیے۔ اگر ماڈل کسی ایسے ٹول کا نام ایجاد کرنے کی کوشش کرتا ہے جو موجود نہیں ہے، تو Pydantic اسے فوری طور پر پکڑ لیتا ہے۔
Current Limitations
- چھوٹے ماڈلز میں گہرائی تک موجود (deeply nested) schemas کبھی کبھی خالی arrays واپس کر سکتے ہیں۔
- Optional fields null کے بجائے خالی اسٹرنگز (empty strings) واپس کر سکتے ہیں۔
- بڑے schemas آپ کے context window کا زیادہ حصہ استعمال کرتے ہیں۔
Best Practices
- چھوٹے ماڈلز کے لیے سادہ extraction کا استعمال کریں۔
- validation اور ایجنٹ ٹول سلیکشن کے لیے Pydantic کا استعمال کریں۔
- پیچیدہ اور nested ڈیٹا کے لیے بڑے ماڈلز کا استعمال کریں۔
- جب Pydantic validation error دے تو retry logic شامل کریں۔
اپنے پرامپٹس کے کام کرنے کی امید لگانا چھوڑ دیں۔ اپنے مقامی LLM pipelines کو قابل اعتماد بنانے کے لیے اسٹرکچرڈ آؤٹ پٹس کا استعمال کریں۔
Optional learning community: https://t.me/GyaanSetuAi