من یک زبان برنامه نویسی ساختم که LLM ها نمی توانند از آن استفاده کنند
آدرس مقاله: https://blog.picheta.me/post/killswitch-lang/ آدرس نظرات: https://news.ycombinator.com/item?id=50135762 امتیاز: 173 # نظرات: 121
کد نوشتن احتمالا چیزی است که LLM ها بیش از همه از آنها برتری داشته اند. اما چه مقدار از توانایی آنها در نوشتن کد به دلیل درک آنها از آن است در مقابل فقط یادآوری تکه کدهایی که در مجموعه داده آموزشی یا پنجره زمینه آنها وجود داشت؟
این چیزی است که من تصمیم گرفتم به آن پاسخ دهم. برای انجام این کار، تصمیم گرفتم یک زبان برنامه نویسی طراحی و پیاده سازی کنم که اگرچه برای انسان ها قابل استفاده است، اما برای LLM ها و عوامل برنامه نویسی تا حد امکان دشوار باشد.
به نظر من آزمایش توانایی یک LLM برای درک و نوشتن کد به زبان برنامه نویسی که قبلا هرگز ندیده بود، شروع خوبی بود. اما من همچنین می خواستم ویژگی هایی را در زبان اضافه کنم که از نقاط ضعف LLM سوء استفاده می کند. به عنوان مثال، مشکل ظاهری آنها در شمارش حروف، ریل های محافظ ایمنی بیش از حد مشتاق آنها و تمایل آنها به پیروی از دستورات.
KillSwitch یک زبان برنامه نویسی باطنی است که برای رقیب LLM ها و عوامل برنامه نویسی طراحی شده است. این امر را به روش های مختلف به دست می آورد، به عنوان مثال:
اساسا KillSwitch یک زبان تفسیری مبتنی بر پشته است که تنها دارای مجموعه محدودی از ساختارها شامل توابع، متغیرها و دستورات if است. بنابراین این جنبههای آن باید برای هر LLM (و انسانی) کاملا آشنا باشد. قطعا می توان ایجاد یک الگوی زبان برنامه نویسی کاملا متفاوت را تصور کرد که می تواند LLM ها را حتی بیشتر گیج کند. اما به عنوان اولین تلاش، این یک رویکرد خوب به نظر می رسید.
مثال بالا یک اسکریپت کامل KillSwitch را نشان نمی دهد، بلکه تنها یک قطعه کوچک از آن را نشان می دهد. این به طور خاص نشان می دهد که چگونه رشته "Hello World" را روی پشته فشار دهید. اگر میخواهید یک نمونه کامل Hello World را ببینید، https://killswitch-lang.org را بررسی کنید.
مفسر و مشخصات زبان KillSwitch منبع باز هستند و در GitHub در دسترس هستند. اگر می خواهید در مورد زبان بیشتر بدانید، حتما آنها را بررسی کنید.
بنابراین، KillSwitch چقدر در جلوگیری از خواندن، نوشتن و درک آن توسط LLM ها و عوامل برنامه نویسی موفق است؟ من مجموعه ای از وظایف را طراحی کردم تا بفهمم. من مدلهای اصلی LLM و مهارهای عامل کدنویسی را در برابر این وظایف محک زدم. نتایج بسیار جالب هستند و یک لیدربرد مفید برای مدل های LLM ارائه می دهند.
نمودار در تصویر بالا و جدول امتیازات مدل را میتوانید در https://bench.killswitch-lang.org/ مشاهده کنید.
Claude's Opus بهترین عملکرد را دارد، اگرچه Opus 5.5 نیست، بلکه Opus 5 است که این کار را انجام می دهد. به نظر نمی رسد که این تفاوت شانسی باشد، Opus 5 در تفسیر مشخصات بهتر است. برخی از مدلها مانند Fable 5.1 و Gemini 4 Argon به دلیل نردههای ایمنی بسیار حساس عملکرد ضعیفی دارند. بهترین مدل وزن باز MiMo-V2.6-Pro است.
بهترین مدل دارای امتیاز 66.8 است. بنابراین آیا این ثابت می کند که LLM ها می توانند کد را "درک" کنند؟ من استدلال می کنم که پاسخ به این "نه" است.
تا کنون، وظایفی که به عنوان بخشی از این معیارها ارائه شده اند، نسبتا ساده هستند. آنها مواردی مانند "پیاده سازی hello world"، "توضیح دهید که این اسکریپت چه خروجی خواهد داشت" (برای یک اسکریپت که حداکثر دو عدد را چاپ می کند) و "یک اسکریپت موجود را تغییر دهید که درجه سانتیگراد را به فارنهایت تبدیل می کند، تا تبدیل معکوس را انجام دهد." قابل توجه است که آنها می توانند این کارها را برای زبان جدیدی که برای گیج کردن آنها ساخته شده است حل کنند، اما این یک سیگنال واضح نیست که آنها می توانند زبان را بفهمند. در عین حال، نمیتوانم از خود بپرسم که زبان حتی دشوارتر چه چیزی را نشان میدهد.
در حال حاضر مشتاقم ببینم مدلهایی که به زودی منتشر میشوند چقدر خوب از عهده مجموعه وظایف فعلی بر میآیند، و اگر همه آنها را با موفقیت انجام دهند، برنامهریزی میکنم مجموعه وظایف دیگری را طراحی کنم که پیچیدهتر باشد.
اگر هیچ چیز دیگری نباشد، تشویق کننده است که عملکرد مدل در این مجموعه ساده از وظایف با سایر معیارهای مدل موجود در ارتباط است.
متن اصلی (انگلیسی)
I built a programming language that LLMs can't use
Article URL: https://blog.picheta.me/post/killswitch-lang/ Comments URL: https://news.ycombinator.com/item?id=50135762 Points: 173 # Comments: 121