بچهها، اگه با پایتون کار کرده باشین، حتما میدونین که این زبان بهصورت داینامیک عدادش رو تعریف میکنه، یعنی لازم نیست بگین این متغیر دقیقا چه نوعیه (مثلاً int یا str یا لیست یا اینا). این خیلی زندگی رو راحتتر میکنه، ولی همین موضوع، وقتی میخواین بفهمین که برنامه دقیقاً با چه نوع دادههایی داره کار میکنه، دردسرسازه!
این وسط، هوش مصنوعیها، مخصوصا LLMها (یعنی Large Language Models، همون مدلهای هوشمندی که کلی متن و برنامهنویسی بلد هستن و میتونن چیزهای جدید تولید کنن) کمکم دارن تو درک کدهای پایتون خیلی پیشرفت میکنن. اما مسئله اینجاست که تا حالا درست بررسی نشده بود که این مدلها چقدر میتونن نوع دادهها رو بهدرستی پیشبینی کنن، مخصوصا تو پروژههای بزرگ و بینوعنویسی مثل اکثر پروژههای پایتون!
حالا بچههای یه تیم تحقیقاتی باحال اومدن یه ابزار درست کردن به اسم TypyBench. این همجور که از اسمش میاد (نوعبندی با نیمکت آزمایشی! 😂)، قراره مدلهای هوش مصنوعی رو تو حدس زدن نوع متغیرها و بازبینی کل کد پایتون به چالش بکشه.
دو تا معیار جذاب هم ساختن براش:
- TypeSim: این یکی میاد شباهت معنایی بین اون چیزی که مدل AI حدس زده و نوع واقعیای که برنامهنویس تو ذهنش داشته یا تو کد استفاده کرده رو میسنجه. مثلا اگه مدل بزنه “لیست عدد”، درحالیکه واقعی “آرایه اعداد” بوده، هنوز بهش امتیاز نسبتا خوبی میده—میگه «آفرین تقریباً درست بودی»!
- TypeCheck: این یکی میاد چک میکنه که نوع دادهها تو کل پروژه بهم بخورن. یعنی ببینه آیا مدل تونسته یه سیستم منسجم و بیتناقض از نوعها تو کد بسازه یا نه. چون خیلی مهمه که تو کل پروژه همهچیز سر جاش باشه.
این تیم اومدن ۵۰ تا ریپوزیتوری (repository یعنی پروژه برنامهنویسی که تو گیتهاب و جاهای دیگه ذخیره میشه) با کیفیت بالا از پایتون جمع کردن و این مدلهای هوش مصنوعی تازهکار رو فرستادن سراغشون!
نتیجه چی شد؟ خب، مدلها تونستن تو معیار TypeSim خوب عمل کنن، یعنی معمولاً تونستن نوع دادهها رو تا حد زیادی درست حدس بزنن. اما وای به وقتی که نوع دادهها پیچیده میشد! مثلاً وقتی یه دیکشنری بود توش لیست بود توش یه آبجکت دیگه بود (همون type های تودرتو—یعنی nested types)، مدلها کم آوردن.
تازه، تو بخش TypeCheck حسابی گاف دادن: نتونستن تو کل پروژه هماهنگی خوبی بین نوعها ایجاد کنن. معلوم شد این مدلها ممکنه تو یه خط درست حدس بزنن، ولی سه خط جلوتر خراب کاری کنن و نوعش رو با یه چیز بیربط قاطی کنن!
پس پیام تحقیق اینه: «وقتشه تمرکز کمتر روی شبیهسازی نوع و بیشتر روی منسجمسازی کل پروژه باشه.» یعنی به جای اینکه فقط بگیم مدل تونست خوب حدس بزنه یا نه، باید ببینیم آخه اصلاً تونسته یه پروژه سالم و هماهنگ بسازه یا نه.
به خاطر همین، TypyBench الان یه پایه خوبی برای تحقیقات آینده علت شده و کلی سرنخ داده که چطور میتونیم مدلها رو بهتر کنیم، مخصوصاً تو شرایطی که نوع دادهها یه کم عجیب میشن!
ضمناً کدها و دیتای این پروژه هم مجانی توی گیتهاب هست و بچههایی که میخوان بیشتر سرک بکشن، از این آدرس میتونن دانلود کنن: https://github.com/typybench/typybench
خلاصه، اگه دنبال اینی بدونی هوش مصنوعی چطور داره تو خوندن و درک برنامههای پایتون پیشرفت میکنه، یا اینکه چطور میتونیم کمکش کنیم خطاهای نوعگذاریشو کمتر کنه، حتما یه سر به TypyBench بزن!
منبع: +