پرش به محتوای اصلی
OpenAI

۲۷ مهر ۱۴۰۵

مقالاتتحقیق

پیشرفت کدنویسی در زبان‌های برنامه‌نویسی کم‌منبع

در حال بارگذاری…

تازه‌ترین پیشرفت‌های مدل‌های ما، توانایی آن‌ها را در ساخت و مهاجرت نرم‌افزار به زبان‌های برنامه‌نویسی کم‌منبع مانند COBOL، Fortran و Visual Basic افزایش داده است. در مقایسه با زبان‌هایی مانند Python و JavaScript، کد و مستندات کمتری از این زبان‌ها برای یادگیری مدل‌ها در دسترس است؛ بااین‌حال، این زبان‌ها زیربنای زیرساخت‌های حیاتی و خدمات ضروری در سراسر جهان هستند. COBOL زیربنای⁠(در یک پنجره جدید باز می‌شود) بیش از ۴۰٪ از سامانه‌های بانکداری آنلاین، ۸۰٪ از تراکنش‌های حضوری کارت‌های اعتباری و ۹۵٪ از تراکنش‌های خودپرداز است، درحالی‌که Fortran در پیش‌بینی هوا⁠(در یک پنجره جدید باز می‌شود) و تحلیل ایمنی راکتورهای هسته‌ای⁠(در یک پنجره جدید باز می‌شود) کاربرد دارد. بهبود توانایی هوش مصنوعی در کار با این زبان‌ها می‌تواند به تیم‌ها کمک کند نرم‌افزارهایی را که خدمات ضروری به آن‌ها وابسته‌اند، نگهداری و نوسازی کنند.

این تلاش بر اساس بازخورد توسعه‌دهندگان و مشتریان سازمانی پیش می‌رود که به ما گفته‌اند مدل‌های کدنویسی اغلب در کار با این زبان‌ها مشکل دارند. نگهداری و نوسازی این نرم‌افزارها ممکن است دشوار باشد: شاید مستندات ناقص باشند، توسعه‌دهندگان اولیه شرکت را ترک کرده باشند و قواعد مهم کسب‌وکار فقط در کد ثبت شده باشند. تیم‌ها، چه در حال رفع اشکال باشند و چه در حال مهاجرت به زبانی دیگر، باید رفتارهایی را که سامانه‌هایشان به آن وابسته‌اند حفظ کنند.

برای سنجش پیشرفت، دو ارزیابی طراحی کردیم. MultiLangBench می‌سنجد که آیا یک مدل می‌تواند در هر یک از ۲۰ زبان برنامه‌نویسی مختلف، یک موتور پایگاه دادهٔ سازگار با SQLite را از صفر بسازد یا نه. ارزیابی مهاجرت COBOL ما می‌سنجد که آیا یک مدل می‌تواند برنامه‌های موجود را با حفظ رفتارشان به زبانی دیگر منتقل کند یا نه. این دو ارزیابی در کنار هم، دو مهارت مکمل را می‌سنجند: ساخت نرم‌افزار جدید و حفظ عملکرد نرم‌افزار موجود.

تازه‌ترین مدل‌های ما در هر دو ارزیابی بهبود چشمگیری نشان می‌دهند و دقت بسیار بالاتری را با هزینهٔ کمتر ارائه می‌کنند.

در MultiLangBench، میانگین نرخ قبولی GPT‑6 Astra در آزمون‌های ۲۰ زبان برنامه‌نویسی به ۸۷٫۴٪ می‌رسد، درحالی‌که این رقم برای GPT‑5.6 Sol برابر با ۲۶٫۸٪ بود. این بهبود در همهٔ زبان‌های آزموده‌شده دیده می‌شود. GPT‑6 Luna نیز از GPT‑5.6 Sol بهتر عمل می‌کند و با هزینهٔ تخمینی API حدود ۷۸٪ کمتر، به نرخ ۴۰٫۳٪ می‌رسد.

در ارزیابی مهاجرت COBOL ما، GPT‑6.1 Sol با تلاش پایین برای استدلال به دقت ۸۶٫۶٪ می‌رسد، درحالی‌که دقت GPT‑5.6 Sol فقط ۵٫۴٪ است؛ هزینهٔ آن نیز ۳۹٪ کمتر است. با تلاش بیشتر برای استدلال، دقت به ۹۷٫۹٪ می‌رسد و به سقف این ارزیابی نزدیک می‌شود.

در مجموع، این نتایج نشان می‌دهند مدل‌های ما در کار با طیف گسترده‌ای از زبان‌های برنامه‌نویسی به‌طور چشمگیری بهتر می‌شوند و هم‌زمان از نظر هزینه نیز به‌صرفه‌تر می‌شوند.

۱. ساخت SQLite از صفر (MultiLangBench)

MultiLangBench از مدل می‌خواهد یک موتور پایگاه دادهٔ سازگار با SQLite را به زبان برنامه‌نویسی مشخصی بسازد. مدل باید مجموعهٔ کد را سازمان‌دهی کند، وضعیت را مدیریت کند، خطاها را رسیدگی کند و در عین حفظ عملکرد موجود، قابلیت‌های جدیدی اضافه کند.

برای مقایسهٔ پیاده‌سازی‌ها در زبان‌های مختلف، از فایل‌های پایگاه داده به‌عنوان رابط مشترک استفاده می‌کنیم. برنامهٔ تحت آزمون یک پایگاه دادهٔ اولیه و یک پرس‌وجوی SQL دریافت می‌کند و سپس پایگاه دادهٔ تغییریافته را تولید می‌کند. از پیاده‌سازی مرجع SQLite استفاده می‌کنیم تا بررسی کنیم آیا پایگاه دادهٔ حاصل، محتوای مورد انتظار را دارد یا نه. به این ترتیب می‌توانیم بدون توجه به زبانی که موتور با آن ساخته شده، آزمون‌های یکسانی را اجرا کنیم.

آزمون‌هایی از مجموعهٔ آزمون موجود SQLite را با این قالب تطبیق دادیم. این ارزیابی می‌سنجد که مدل در یک جلسهٔ طولانی کدنویسی چه میزان قابلیتِ درست‌کارکننده می‌تواند بسازد و هم نرخ قبولی در آزمون‌ها و هم هزینهٔ API را گزارش می‌کند.

با حداکثر تلاش برای استدلال، میانگین نرخ قبولی GPT‑6 Astra در آزمون‌های این ۲۰ زبان به ۸۷٫۴٪ می‌رسد، درحالی‌که این رقم برای GPT‑5.6 Sol برابر با ۲۶٫۸٪ بود. این بهبود در همهٔ زبان‌های آزموده‌شده دیده می‌شود، از جمله COBOL (از ۱۰٫۹٪ به ۷۲٫۱٪)، OCaml (از ۲۵٫۶٪ به ۸۵٫۸٪)، Fortran (از ۲۱٫۴٪ به ۸۳٫۵٪) و Visual Basic (از ۲۷٫۵٪ به ۸۹٫۴٪). Astra در ۱۹ زبان از این ۲۰ زبان امتیازی بالاتر از ۸۳٪ می‌گیرد و COBOL با امتیاز ۷۲٪ همچنان دشوارترین زبان است.

GPT‑6 Luna گزینه‌ای کم‌هزینه‌تر است که آن هم در همهٔ زبان‌های آزموده‌شده بهتر از GPT‑5.6 Sol عمل می‌کند. با حداکثر تلاش برای استدلال، میانگین نرخ قبولی آن در آزمون‌ها به ۴۰٫۳٪ می‌رسد. این بهبودها شامل COBOL (از ۱۰٫۹٪ به ۱۷٫۱٪)، OCaml (از ۲۵٫۶٪ به ۳۴٫۱٪)، Fortran (از ۲۱٫۴٪ به ۳۱٫۴٪) و Visual Basic (از ۲۷٫۵٪ به ۴۱٫۶٪) می‌شود. این بهبودها با میانگین هزینهٔ تخمینی API برابر با ۰٫۷۷ دلار برای هر نمونه به دست می‌آید؛ در مقایسه با ۳٫۴۸ دلار برای GPT‑5.6 Sol، یعنی حدود ۷۸٪ کمتر.

محیط ارزیابی و مجموعهٔ آزمون MultiLangBench را همراه با نتایج هر زبان در GitHub⁠(در یک پنجره جدید باز می‌شود) منتشر می‌کنیم. توسعه‌دهندگان می‌توانند بررسی کنند که این ارزیابی چه چیزهایی را می‌سنجد، عملکرد مدل‌ها را در زبان‌های مورد استفادهٔ خود مرور کنند و کاستی‌های مهم برای کار خود را شناسایی کنند.

۲. مهاجرت یک مجموعه‌کد COBOL

ارزیابی دوم ما از مدل‌ها می‌خواهد برنامه‌های COBOL را با حفظ عملکرد هر برنامه به C++، Java، Kotlin، Python یا Rust منتقل کنند.

مهاجرت موفق مستلزم درک هم منطق کسب‌وکار برنامه و هم رفتارهای خاص زبان COBOL است. برنامه‌های COBOL اغلب تراکنش‌های مالی و سوابق کسب‌وکار را پردازش می‌کنند؛ در این موارد، جزئیاتی مانند قواعد گرد کردن اعداد و نحوهٔ برخورد با رکوردهای مفقود، بازتاب‌دهندهٔ الزامات کسب‌وکار هستند. برای مثال، در محاسبات ممیز ثابتِ COBOL، رقم‌های اعشاری اضافی حذف می‌شوند، مگر اینکه گرد کردن به‌صراحت درخواست شده باشد. نسخهٔ بازنویسی‌شده‌ای که به‌جای حذف این رقم‌ها، مقادیر را گرد کند، ممکن است بدون خطا اجرا شود اما نتایج مالی متفاوتی تولید کند.

برای سنجش حفظ این رفتارها، مدل‌هایمان را با آزمون‌های پنهانی ارزیابی می‌کنیم که در آن‌ها خروجی‌های قابل مشاهده باید بایت‌به‌بایت یکسان باشند. مهاجرت تنها زمانی موفق محسوب می‌شود که همهٔ آزمون‌ها با موفقیت پشت سر گذاشته شوند. چنین قابلیت‌هایی برای حفظ رفتار نرم‌افزار، به تیم‌هایی که سامانه‌های قدیمی را نگهداری و نوسازی می‌کنند کمک می‌کند؛ بااین‌حال، به‌کارگیری آن‌ها در نرم‌افزارهای عملیاتی همچنان به بازبینی متخصصان و آزمون بر اساس قواعد کسب‌وکار و وابستگی‌های سامانه نیاز دارد.

در این ارزیابی، GPT‑6.1 Sol با تلاش پایین برای استدلال به دقت ۸۶٫۶٪ می‌رسد، درحالی‌که دقت GPT‑5.6 Sol با همین تنظیم ۵٫۴٪ است؛ هزینهٔ API آن نیز تنها ۶۱٪ هزینهٔ GPT‑5.6 Sol است. با تلاش بیشتر برای استدلال، دقت به ۹۷٫۹٪ می‌رسد و به سقف این ارزیابی نزدیک می‌شود. این نتایج ارزیابی نشان‌دهندهٔ پیشرفت به‌سوی مهاجرت دقیق‌تر و مقرون‌به‌صرفه‌تر کد برای تیم‌هایی است که نرم‌افزارهای زیربنای کسب‌وکارشان را نوسازی می‌کنند.

ارتقای قابلیت‌ها برای نرم‌افزارهای سازمانی

این ارزیابی‌ها، در کنار بازخورد مستقیم توسعه‌دهندگان و مشتریان سازمانی، به ما کمک می‌کنند ببینیم مدل‌هایمان در چه زمینه‌هایی بهتر می‌شوند و در کجا هنوز کاستی دارند.

هدف ما این است که به مدل‌ها کمک کنیم مهارت‌های مهندسی نرم‌افزار را در زبان‌های بیشتری به کار بگیرند: درک محل‌های نگهداری کد ناآشنا، برنامه‌ریزی تغییرات، استفاده از ابزارهای ساخت، اجرای آزمون‌ها و اشکال‌زدایی.

می‌توانید تازه‌ترین مدل‌های ما را از طریق API، برای کارهای کدنویسی به زبان‌های مورد استفادهٔ تیمتان امتحان کنید. بازخورد شما دربارهٔ اینکه چه چیزهایی خوب کار می‌کنند، مدل‌ها در کجا مشکل دارند و در گام بعدی باید بر کدام زبان‌ها یا گردش‌های کاری تمرکز کنیم، به آموزش و ارزیابی مدل‌ها جهت می‌دهد تا بهتر از نرم‌افزارهایی که به آن‌ها وابسته‌اید پشتیبانی کنند.