یونٹ 9 / 11

AI ایجنٹس اور ٹول کا استعمال

فائدہ:

  • کسی ایجنٹ کی 'ماڈل + ٹولز + لوپ' کے طور پر تعریف کرنا اور یہ فیصلہ کرنا کہ اس کی کب ضرورت ہو۔
  • نام، تفصیل اور input_schema کے ساتھ ٹول کی تعریف لکھنا
  • ٹول_استعمال اور ٹول_ریزلٹ لوپ کے بہاؤ اور غلطی سے نمٹنے کی نگرانی کرنا

اب تک، ماڈل نے ہمیشہ ایک کام کیا ہے: ٹیکسٹ ان پٹ وصول کریں، ٹیکسٹ جوابات تیار کریں۔ لیکن حقیقی کام میں اکثر متن سے زیادہ کی ضرورت ہوتی ہے۔ حساب کتاب کرنا، ڈیٹا بیس سے استفسار کرنا، API کو کال کرنا، موجودہ زر مبادلہ کی شرح معلوم کرنا۔ ماڈل یہ چیزیں خود نہیں کر سکتی — لیکن وہ فیصلہ کر سکتی ہے کہ انہیں کب کرنے کی ضرورت ہے اور کسی سے ان کو کرنے کے لیے کہہ سکتی ہے۔ یہ وہی ہے جو آلے کا استعمال ماڈل دیتا ہے، اور یہ AI ایجنٹوں کی بنیاد ہے. اس یونٹ میں، ہم سیکھیں گے کہ ایجنٹ کیا ہوتا ہے، ٹول کی تعریف کیسے کی جاتی ہے، اور ٹول_استعمال لوپ کیسے کام کرتا ہے۔

ایجنٹ کیا ہے؟ ماڈل + ٹولز + لوپ

ایک AI ایجنٹ تین حصوں پر مشتمل ہوتا ہے: ماڈل (دماغ جو فیصلہ کرتا ہے)، ٹولز (فنکشنز جن کو ماڈل کال کر سکتا ہے: موسم، ڈیٹا بیس استفسار، ای میل بھیجیں)، اور لوپ (لوپ؛ ماڈل ٹول کو کال کرتا ہے، نتیجہ حاصل کرتا ہے، دوبارہ فیصلہ کرتا ہے کہ کیا کرنا ہے، وغیرہ)۔

اہم امتیاز: واحد پیٹرن کال ایجنٹ نہیں ہے۔ ایجنٹ ایک ایسا عمل ہے جس میں ماڈل قدم بہ قدم آگے بڑھتا ہے، ہر قدم پر ٹول کے نتائج کی بنیاد پر اگلے اقدام کا انتخاب کرتا ہے۔ "انسان کی طرح سوچو، اپنے ہاتھوں کا استعمال کرو، نتیجہ دیکھو، دوبارہ سوچو۔"

ایک اہم حقیقت: ماڈل خود گاڑی نہیں چلاتا۔ ماڈل صرف یہ کہتا ہے کہ "میں ان ان پٹ کے ساتھ اس ٹول کو کال کرنا چاہتا ہوں"۔ آپ کی ایپلیکیشن (جسے ہارنس کہا جاتا ہے) ٹول چلاتا ہے اور نتیجہ ماڈل کو لوٹاتا ہے۔ یہ سیکورٹی کے لیے ضروری ہے: ماڈل آپ کے سسٹم کو براہ راست نہیں چھوتا ہے۔ ہر عمل آپ کے اختیار میں ہے۔

مشورہ: ایجنٹ کے ساتھ ہر مسئلہ حل کرنے کی کوشش نہ کریں۔ ایجنٹ تاخیر، اخراجات اور غلطیوں کے خطرے کو بڑھاتا ہے۔ پہلے پوچھیں: "کیا یہ ایک کال یا ایک مقررہ ورک فلو سے حل ہو جائے گا؟" اگر جواب ہاں میں ہے تو کسی ایجنٹ کی ضرورت نہیں ہے۔ ایجنٹ کھلے عام کاموں کے لیے ہے جہاں قدموں کا پہلے سے علم نہیں ہو سکتا۔

ٹول کی تعریف: نام، تفصیل، input_schema

ماڈل میں ٹول متعارف کرانے کے لیے، آپ تین چیزیں دیتے ہیں:

  • نام: گاڑی کی شناخت، جیسے get_weather
  • تفصیل: ٹول کیا کرتا ہے اور اسے کب کال کرنا ہے۔ یہ سب سے اہم علاقہ ہے جو ماڈل کو صحیح وقت پر صحیح ٹول کا انتخاب کرنے کی اجازت دیتا ہے۔ نہ صرف "کیا کرتا ہے" لکھیں بلکہ "جب کال کریں" بھی لکھیں۔
  • input_schema (input schema): JSON اسکیما جو اس بات کی وضاحت کرتا ہے کہ ٹول کو کن پیرامیٹرز کی توقع ہے، کس قسم میں۔

# گاڑی کی تعریف (تصوراتی — JSON سکیما){ "نام": "get_order_status"، "description": "کسی آرڈر کی موجودہ شپنگ سٹیٹس کو بازیافت کرتا ہے۔ جب صارف پوچھے کہ آرڈر نمبر کہاں ہے یا یہ کب آئے گا۔"، "input_schema": { "type": "object", "properties": "description": "description": "description": {{} "آرڈر نمبر، جیسے SP-1024"} }، "ضرورت": ["order_no"] }}

اچھے ٹول کی تفصیل کے لیے اصول: واضح اور جامع نام، "کب استعمال کرنا ہے" کے ساتھ وضاحت، ہر پیرامیٹر کے لیے تفصیل، درکار ضروری کو شامل کرنا۔ گاڑیوں کی تعداد پر توجہ مرکوز رکھیں؛ اسی طرح کی گاڑیوں کے درجنوں ماڈلز حیران کن ہیں۔

علاقہ

یہ کیا کرتا ہے؟

اچھی مثال

بری مثال

نام

گاڑی کی شناخت

آرڈر_سٹیٹس_گیٹیر

لانا

تفصیل

یہ کیا کرتا ہے + کب کال کرنا ہے۔

"کارگو کی حیثیت لوٹاتا ہے؛ جب صارف پوچھے کہ آرڈر کہاں ہے تو کال کریں"

"ڈیٹا لاتا ہے"

input_schema

پیرامیٹر کی قسم اور ضرورت

{order_no: string, annotated}

کوئی خاکہ/کوئی تفصیل نہیں۔

ٹول_استعمال → ٹول_ریزلٹ لوپ

سائیکل اس طرح کام کرتا ہے، مرحلہ وار:

  1. آپ صارف کے سوال + ٹول کی تفصیل ماڈل کو بھیجتے ہیں۔
  2. ماڈل یا تو براہ راست جواب دیتا ہے یا ایک ٹول_استعمال بلاک بناتا ہے: "order_no=SP-1024 کے ساتھ آرڈر_ڈورمو_گیٹیر کو کال کریں۔"
  3. آپ کی ایپلی کیشن دراصل ٹول چلاتی ہے (ڈیٹا بیس سے استفسار کرتی ہے)۔
  4. آپ نتیجہ ماڈل کو ٹول_رزلٹ کے بطور واپس بھیجتے ہیں۔
  5. اس نتیجے کے ساتھ، ماڈل یا تو حتمی جواب تیار کرتا ہے یا کسی اور ٹول کو کال کرتا ہے۔ سائیکل اس وقت تک جاری رہتا ہے جب تک کہ ماڈل یہ نہ کہے کہ "میرا کام ہو گیا ہے۔"

# ایجنٹ لوپ (تصوراتی) پیغامات = [صارف_سوال] جب کہ سچ ہے: جواب = model.uret(messages, tools=tool_definitions) if response.tur == "tool_use": result = harness.run(response.tool_name, response.entries) # APPLICATION میسجز چلاتا ہے، اور # حتمی نتیجہ (آخری نتیجہ) واپسی کا ٹول += رزلٹ واپسی: ردعمل لوپ ختم

جدید SDKs ٹول رنر پیش کرتے ہیں جو آپ کے لیے اس لوپ کو چلاتے ہیں۔ آپ صرف ٹول کے افعال لکھتے ہیں۔ لیکن یہ بالکل وہی ہے جو پردے کے پیچھے ہو رہا ہے۔

خرابی کا انتظام

ٹولز ناکام ہو سکتے ہیں: آرڈر نہیں ملا، API کا وقت ختم، ان پٹ غلط ہے۔ اگر آپ ٹول نہیں چلا سکتے ہیں، تو ماڈل میں خرابی کو بطور وضاحتی ٹول_رزلٹ ("خرابی: آرڈر نمبر SP-9999 نہیں ملا") اور غلطی کا جھنڈا لوٹائیں۔ ماڈل اسے دیکھ سکتا ہے اور صارف کو نرمی سے سمجھا سکتا ہے، یا کوئی اور طریقہ آزما سکتا ہے۔ غلطی کو نہ نگلیں اور خالی نتائج واپس کریں؛ ماڈل کو معلوم ہونا چاہیے کہ کیا غلط ہوا ہے۔

کمزور/مضبوط گاڑی کی تفصیل

کمزور (غیر معینہ اسم، کوئی "جب"):

نام: "ڈیٹا"، وضاحت: "ڈیٹا لاتا ہے"# ماڈل کو نہیں معلوم کہ کب اور کیسے کال کرنی ہے۔ یہ یا تو بالکل کال نہیں کرتا یا غلط کال کرتا ہے۔

مضبوط (خالص نام + جب + پیرامیٹر کی تفصیل):

name: "musteri_bakiyesi_getir"تفصیل: "کسی گاہک کا کرنٹ اکاؤنٹ بیلنس لوٹاتا ہے۔ جب صارف ڈیبٹ، کریڈٹ یا بیلنس مانگے تو کال کریں۔ ادائیگی نہیں کرتا۔"input_schema: {custeri_id: string ("customer ID")}# ماڈل صحیح وقت پر کال کرتا ہے، اس کی صحیح حد کے ساتھ، جانیں۔

تین چھوٹے کیسز

کیس 1 - غیر ضروری ایجنٹ۔ ایک ٹیم نے ملٹی ٹول ایجنٹ کے ساتھ "متن کا خلاصہ" کاروبار بنایا۔ ہر ریکپ میں 4 ماڈل کالز اور 9 سیکنڈ لگتے ہیں۔ جاب دراصل ون کال جاب تھی۔ جب ہم نے ایجنٹ کو ہٹا دیا اور اسے ایک ہی کال پر کم کیا تو وقت کم ہو کر 1.5 سیکنڈ رہ گیا اور لاگت ایک چوتھائی رہ گئی۔ سبق: جب واقعی ضروری ہو ایجنٹ کا استعمال کریں۔

کیس 2 - کمزور وضاحت، غلط کال۔ سپورٹ ایجنٹ میں، بیلنس سوال اور شپنگ سوال دونوں میں ماڈل کی طرف سے تصادفی طور پر fetch نامی ایک غیر واضح ٹول بلایا گیا۔ جب گاڑیوں کو بیلنس_گیٹیر اور cargo_durumu_getir میں تقسیم کیا گیا تھا اور "کال کب" کی وضاحتیں شامل کی گئی تھیں، گاڑیوں کا غلط انتخاب 50 مثالوں میں سے 18 سے کم ہو کر 1 ہو گیا۔

کیس 3 - غلطی نگل گئی۔ آرڈر نہ ملنے پر ایک ایجنٹ خالی نتائج واپس کر رہا تھا۔ ماڈل نے اس کو "آرڈر ڈیلیور کر دیا گیا" سے تعبیر کیا اور گاہک کو گمراہ کیا۔ جب غلطی کا پیغام tool_result ("آرڈر نہیں ملا") پر واضح طور پر لکھا جاتا ہے، تو ماڈل صحیح طور پر کہتا ہے "مجھے یہ نمبر نہیں مل سکا، کیا آپ اسے چیک کر سکتے ہیں؟" وہ کہنے لگا.

عام غلطیاں

  • ہر چیز کو ایجنٹ کی طرف موڑنا: اگرچہ ایک کال کافی ہے، ایجنٹ لاگت اور تاخیر کا اضافہ کرتا ہے۔
  • گاڑی کی مبہم تفصیل: ماڈل نہیں جانتا کہ کب کال کرنی ہے۔ غلط انتخاب کرتا ہے.
  • یہ سوچ کر کہ ماڈل گاڑی چلاتا ہے: ہارنس گاڑی چلاتا ہے۔ ماڈل صرف چاہتا ہے.
  • غلطی کو نگلنا: ماڈل کو معلوم ہونا چاہیے کہ کیا غلط ہوا ہے۔ غلطی کو اوپن ٹول_رزلٹ کے طور پر دیں۔
  • بہت ساری ایک جیسی گاڑیاں: ماڈل الجھن میں پڑ جاتا ہے۔ ٹول سیٹ کو فوکسڈ اور کم سے کم رکھیں۔
توجہ: صرف اس وجہ سے کہ ماڈل کہتا ہے "وہ گاڑی کو کال کریں" کا مطلب یہ نہیں ہے کہ کارروائی کی جائے۔ تباہ کن ٹولز (ڈیلیٹ، چیک آؤٹ، ای میل) پر آپ کی ایپلیکیشن کو آنکھیں بند کرکے کال پر عمل نہیں کرنا چاہیے — یہ اگلے یونٹ میں سیکیورٹی کے موضوع کا بنیادی حصہ ہے۔

خلاصہ میں

  • ایجنٹ = ماڈل (فیصلہ) + ٹولز (فنکشن) + لوپ (کال ٹول، نتیجہ حاصل کریں، دوبارہ فیصلہ کریں)۔
  • واحد پیٹرن کال ایک ایجنٹ نہیں ہے؛ ایجنٹ ایک مرحلہ وار عمل ہے۔
  • ماڈل گاڑی نہیں چلاتا۔ آپ کی ایپلیکیشن چلتی ہے (ہارنس) اور نتیجہ ٹول_رزلٹ کے بطور لوٹاتی ہے۔
  • ٹول کی شناخت نام، تفصیل (خاص طور پر "جب کال کریں")، اور input_schema سے کی جاتی ہے۔
  • لوپ ٹول_استعمال کے طور پر جاری رہتا ہے غلطیوں کی واضح طور پر ماڈل کو اطلاع دی جاتی ہے۔

درخواست کا کام

اپنے کاروبار سے 3 ٹولز ڈیزائن کریں جو ایجنٹ کو دیے جاسکتے ہیں۔ (1) ہر ایک کے لیے نام، تفصیل "کال کب" کے ساتھ لکھیں، اور ان پٹ_سکیما۔ کم از کم ایک کو غیر تباہ کن پڑھنے کا آلہ بننے دیں اور ایک حساب کتاب۔ (2) ایک حقیقت پسندانہ صارف سوال کا انتخاب کریں اور دستی طور پر مرحلہ وار لکھیں (ایک لوپ میں) ان میں سے کون سا ٹولز ماڈل کس ان پٹ کے ساتھ کال کرے گا اور ٹول_رزلٹ آنے کے بعد یہ کیا کرے گا۔ (3) ایک منظر نامہ ترتیب دیں جس میں ایک ٹول ناکام ہو جائے اور دکھائیں کہ غلطی کا پیغام ماڈل میں کیسے واپس آئے گا۔

چیک لسٹ

  • میں ایجنٹ کو "ماڈل + ٹولز + لوپ" کے طور پر بیان کرسکتا ہوں اور فیصلہ کرسکتا ہوں کہ اس کی ضرورت کب ہے۔
  • میں جانتا ہوں کہ ہارنس گاڑی چلاتا ہے، ماڈل صرف یہ چاہتا ہے۔
  • میں [ ] نام، تفصیل ("کال کب") اور input_schema کے ساتھ گاڑی کی ٹھوس تفصیل لکھ سکتا ہوں۔
  • میں [ ] tool_use → tool_result سائیکل مرحلہ وار پیروی کر سکتا ہوں۔
  • [ ] میں ٹول کی غلطیوں کو ماڈل کو اوپن ٹول_رزلٹ کے بطور رپورٹ کرتا ہوں۔