بعد عام من ذلك، أظهرت
منذ ذلك الحين، أطلقت Open AI، Anthropic، و Google إصدارات تحسن من نموذجها وتظهر لاعبين جدد مثل Deepseek و xAI.
المبادئ
هناك معيارين متوازيين موجودين لـ LLMs لتقييم قدراتهم في التدوين.
هذا أدى إلى خلق معيار جديد، مما يسمح للمقارنة المباشرة بين الماجستير في إدارة البكالوريوس.
التصميم المقارن
إن الفكرة هي التعبير عن الأفعال البشرية عند حل المشكلات الفلكية ولكن استخدام LLM لإدخال الكود:
- تحميل وصف المشكلة.
- Create a prompt from the description.
- Generate code with the LLM.
- Submit the code for validation.
- Await results.
يجب أن يتم تنفيذ هذه الخطوات لكل مشكلة في مجموعة الاختبارات لدينا و لكل LLM. لأغراض البساطة ، هناك محاولة واحدة فقط لبرنامج LLM كتابة رمز على كل مشكلة ، دون أي ردود الفعل لتكرار تحسين الحل.
Why Leetcode؟
أثبتت Leetcode أنه خيار جيد لتقييم المقارنة لعدة أسباب:
- تستخدم مشاكل Leetcode في المقابلات الحقيقية للموظفين في مهام مهندس البرمجيات.
- الطلاب في علوم الكمبيوتر يتعلمون كيفية حل مشاكل مماثلة خلال دراستهم.
- هناك قاضي على الانترنت الذي يمكن أن يحدد ما إذا كان الحل صحيح في ثوان.
- تعزيز العديد من اللغات البرمجية المعروفة.
- تعزيز أداء المستخدم البشري على هذه المشكلة أيضا متاح.
كيف يعمل Leetcode
إذا لم تتمكن من التعامل مع البرمجة المنافسة أو حل التحديات الفلكية، إليك تفسيرًا قصيرًا.
عندما يقدم مجموعة من الأرقام الكاملة وأهداف الأرقام الكاملة، يعود الأرقام من الأرقام التالية إلى الأرقام التي تصل إلى الأرقام المطلوبة.عندما تقرر أن كل إرسال سيكون له حل واحد فقط، ولا يمكنك استخدام نفس العناصر مرتين.على سبيل المثال، إذا كان هناك مجموعة من الأرقام الكاملة والهدف من الأرقام الكاملة، فستعود الأرقام من الأرقام اثنين بحيث تصل إلى الأرقام الكاملة. يمكنك أن تقرر أن كل إرسال سيكون له حل واحد فقط، ولا يمكنك استخدام نفس العناصر مرتين.لابد من كتابة جزء من الكود الذي يلغي هذا المشكلة، ولابد من البدء في "القطع" - وظيفة غير متوفية، مع اسم وأغراض معينة، ولكن جسم غامض:
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: # الكود هنا
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: # رمزك هنا
في العادة ، يتم تقديم العديد من العينات من الدخول والخروج (محاضرات الاختبار) في وصف:
تدفق: عدد = [2,7,11,15], الهدف = 9 تدفق: [0,1]
Input: nums = [2,7,11,15], target = 9 Output: [0,1]
قد يكون لديك مشكلة عشرات الحالات الاختبارية المتاحة فقط للمرشح عبر الإنترنت. يتم حل المشكلة (أو يعتبر الحل واجبًا) إذا و فقط إذا أدى الكود إلى إنتاج النتائج المتوقعة لجميع الحالات الاختبارية في حدود معقولة من الزمن والذكاء.كل مشكلة لها "معدل قبول" ، وهو نسبة الحلول المقبولة التي يتم تقديمها من قبل مستخدمي Leetcode.
لقد تم اختراع هذه القواعد من قبل Leetcode، وقد تم استخدامها عموما في مباريات علم الحاسوب لفترة طويلة.
مجموعة البيانات
كما هو الحال في المرتبة السابقة، كنت أريد القيام بتطوير LLM على مجموعة من المشاكل:
- المشاكل "المعروفة" لا تظهر إلا منذ فترة طويلة ولكن أيضا تستخدم في كثير من الأحيان لمناقشة البرمجيات - وبالتالي ، فإن الحلول متوفرة على نطاق واسع.
- المشاكل "المعروفة" التي تم نشرها مؤخرًا ، ولم يكن من المرجح أن تلاحظ حلولها من قبل LLMs المختبرة.
المشاكل "المعروفة" ليست فقط تم نشرها منذ فترة طويلة ولكنها أيضا تستخدم في كثير من الأحيان لمناقشة البرمجيات - وبالتالي، فإن الحلول متاحة على نطاق واسع. المشاكل "لا ترى" التي تم نشرها مؤخرًا، وخلقها لم يكن من المرجح أن يتم الاحتفاظ بها من قبل LLMs المختبرة. على الرغم من أن معظم المشكلات لديها توصيات نصيحة وتتطلب فقط توسيع وظيفة معينة باستخدام الكود ، إلا أن بعضها مختلف.بعضها يتطلب تنفيذ رابط ، أي توسيع العديد من الوظائف في مشكلة واحدة.
Leetcode يوفر ثلاث قائمة المشاكل: "Leetcode 75"، و "تصنيفات 150 أفضل"، "تصنيفات 75 جيدة"، و "تصنيفات 100 جيدة"."المؤتمر السادس""Leetcode 75""Top 100 Likes"
لقد اخترت 99 من أكثر المشاكل التي تم نشرها في الآونة الأخيرة: 33 سهلة، 33 متوسطة، و 33 صعبة.تحدد السبب الأخير بناءً على هوية المشاكل، والتي هي متزايدة.بعد أن Leetcode لا يظهر تاريخ نشر المشاكل، يمكن أن يتم تقسيمها من التعليقات والمناقشات.أول هذه المشاكل "المشاكل التي تم نشرها في الآونة الأخيرة قد تم نشرها في منتصف نوفمبر 2024.
مستوى الصعوبة هو شخصيًا تمامًا، وبإرادة المدونين.
لقد لم أتمكن من تقييم عدد المشكلات لكل صعوبة أو مجموعة من البيانات.
مجموعة المشكلة
مجموعة المشكلات
مجموعة المشكلات
غير معروف
الطبيعة
الشخصية
المعروفة لا أعرف
(23 مارس 2019)
لا أعرف
(23 مارس 2019)
لا أعرف
(23 مارس 2019)
مجموع
133
99
مجموع
مجموع
مجموع 133
133
99
99
كيفية
41
33
الطريقة
الطريقة
أسهل 41
41
33
33
مستوى
78
33
معدل
معدل
معدل 78
78
33
33
كبير
14
33
الصعب
الصعب
الصعب 14
14
33
33
معدل قبول المستخدمين Leetcode
53.44%
37.05%
معدل قبول المستخدمين Leetcode
معدل قبول المستخدمين Leetcode
معدل قبول المستخدمين Leetcode 53.44%
53.44%
53.44% 37,05%
37,05%
37,05%لقد تم الحصول على بيانات المشكلات والتسريبات من الكود باستخدام أداة المقارنة التي تم نشرها على Github: https://github.com/whisk/leetgptsolver
https://github.com/whisk/leetgptsolver https://github.com/whisk/leetgptsolver
على سبيل المثال، خيار اللغة و إنتاج الكود
لقد تم تصميم معيار المقارنة بهذه الطريقة: LLM يحاول فقط إنتاج الكود دون أي معلومات مسبقة عن المشكلة (أو أي مشكلات أخرى) وبدون معرفة حالات اختبارها، باستثناء تلك التي كانت في وصف نفسها.
أنا استخدم نفس الإشارة لكل LLM و كل مشكلة:
السلام عليكم، هذه هي مقابلة التدوين. ستحصل علي: * بيان مشكلة (بما في ذلك حالات اختبار النماذج إذا كان متاحاً). * رسالة رقمية (بما في ذلك رسائل وظائف ثابتة). يرجى كتابة حلولك في لغة البرمجة {language}. يجب عليك: * حل المشكلة بالكامل والواقع. * إرسال جميع حالات اختبار النماذج المتوفرة: {snippet} متطلبات مهمة: * لا تغيّر أي رسائل وظيفة أو أسماء أو أسماء الطريقة المتوفرة إذا لم تكن مخصصة. * اتبع الممارسات الجيدة في التدوين (لغة واضحة، هيكل قابل للتعرف، الاستخدام المناسب من خصائص اللغات). هنا بيان المشكلة: {السلام عليكم، هذه هي مقابلة التدوين. ستحصل على: * بيان مشكلة (بما في ذلك حالات اختبار النماذج إذا كان متاحاً). * رسالة رقمية (بما في ذلك رسائل وظائف ثابتة). يرجى كتابة حلولك في لغة البرمجة {language}. يجب أن يكون رمزك: * حل المشكلة بالكامل والواقع. * إرسال جميع حالات اختبار النماذج المتوفرة: {snippet} متطلبات مهمة: * لا تغيّر أي رسائل مخصصة أو أسماء الطبقة أو أسماء الطريقة. * اتبع الممارسات الجيدة في التدوين (الطبيعة البسيطة، والتكوين المقرّب، الاستخدام المناسب من ميزات اللغات). هنا بيان المشكلة: {question} هناتصنيف الدعوة "تصنيف" مع ChatGPT4 من المشروع الأول ، ولكن دون تنفيذ أي تقنيات "التصنيف".
لقد تم إزالة وصف المشكلة من علامات HTML قبل استخدامها في الملف.
لغة البرمجة التي اخترت Python (إصدار 3).
تم طلب LLM من إرسال الكود فقط دون أي نص مسبق، ولكن هذا لم يكن صحيحًا في العديد من الحالات.
النماذج والخصائص
تصدر النماذج المستخدمة في النماذج في جدول أدناه، مع جميع الميزات غير المحددة المحددة.
الشركة
الشركة
الشركة التصميم
الطريقة
التصميم مجلة معلومات
على سبيل المثال
على سبيل المثال تاريخ تقسيم المعرفة "الخيرية"
"الخيرية"
"العدالة" الطرق
الخطوط الجوية
القواعد أمراض القلب
مادة 3-7-sonnet-20250219
نوفمبر 2024
لا
درجة الحرارة = 0.0 max_tokens = 4096
أمراض القلب
أمراض القلب
مصطلح 3-7-sonnet-20250219
صورة 3-7-sonnet-20250219
على 3-7-sonnet-20250219 أكتوبر 2024
أكتوبر 2024
لا
لا
الطول = 0.0 max_tokens = 4096
الطاقة = 0.0 max_tokens = 4096
مقالات 3-7-sonnet-20250219 (بإمكان التفكير)
Nov 2024
Yes
temperature = 0.0 max_tokens = 16384 budget_tokens = 8192
تصنيف-3-7-sonnet-20250219 (بإمكان التفكير)
صورة 3-7-sonnet-20250219 (بإمكانية التفكير)
على 3-7-sonnet-20250219 (عندما تتمكن من التفكير) أكتوبر 2024
أكتوبر 2024
نعم
نعم
الطول = 0.0 max_tokens = 16384 budget_tokens = 8192
الطول = 0.0 max_tokens = 16384 budget_tokens = 8192
DeepSeek
deepseek-chat (DeepSeek-V3)
unknown
No
temperature = 0.0
متابعة
الطباعة
تقارير(DeepSeek-V3)
مشاهدات مشاهدات
تعليق فوركس(DeepSeek-V3) لا أعرف
لا أعرف
لا
لا
الطول = 0.0
الطاقة = 0.0
تقنيات التعلم العميق (DeepSeek-R1)
على سبيل المثال (DeepSeek-R1)
المعرفة العميقة (DeepSeek-R1) لا أعرف
لا أعرف
نعم
نعم
الطول = 0.0
الطاقة = 0.0
Google
p>p>
unknown
No
temperature = 0.0
جوجل
جوجل
تقنية الفيديو 2.0-flash-001
تقنيات الفيديو 2.0-flash-001
GEMINI-2.0-Flash-001 لا أعرف
لا أعرف
لا
لا
الطول = 0.0
temperature = 0.0
p>
unknown
No
temperature = 0.0
تقنيات الهواتف الذكية 2.0-pro-exp-02-05
تقنيات الهواتف الذكية 2.0-pro-exp-02-05
تقنية الهواتف الذكية 2.0-pro-exp-02-05 لا أعرف
لا أعرف
لا
لا
الطول = 0.0
الطاقة = 0.0
p>
unknown
Yes
temperature = 0.0
ترامب-2.5-pro-exp-03-25
تقنيات-2.5-pro-exp-03-25
GEMINI-2.5-pro-exp-03-25 لا أعرف
لا أعرف
نعم
نعم
الطول = 0.0
الطاقة = 0.0
xAI
grok-2-1212
17 يوليو 2024
لا
p>الصورة = 42
xAI
مصطلح
جوجل-212
جوجل-212
Grok-2-1212 17 يوليو 2024
حزيران/يونيو 2017
لا
لا
الشعر = 42
الشعر = 42
OpenAI
o1-2024-12-17
Oct 01, 2023
Yes
p>n=42
الخيارات الثنائية
الطباعة
o1-2024-12-17
o1-2024-12-17
o1-2024-12-17 أكتوبر 01, 2023
أكتوبر 01, 2017
نعم
نعم
الشعر = 42
الشعر = 42
o3-mini-2025-01-31
أكتوبر 01, 2023
Yes
seed = 42
o3-mini-2025-01-31
o3-mini-2025-01-31
o3-mini-2025-01-31 أكتوبر 01, 2023
أكتوبر 01, 2017
Yes
نعم
الشعر = 42
seed = 42
تطلع النتائج إلى أن تكون أكثر تعقيدا وتثبيتا، وبالتالي، استخدمت المواد مثل "الطول" أو "الشعير".
كل موعد إزالة المعرفة المعروفة أصغر من أقدم مشكلة في مجموعة البيانات المعروفة (نوفمبر 2024).
يستطيع بعض النماذج دعم الوضع "الكذب" أو "الكذب" حسب المعيار، في حين أنه بالنسبة إلى Claude 3.7 Sonnet يمكن إدخالها عن طريق إرسال المعايير.استخدام هذه الميزة يتم تحديدها في جدول.لا تم إدخال ميزات النماذج الأخرى (أو "أدوات") مثل البحث على شبكة الإنترنت، حتى لو تم دعمها.
النتائج
النتائج مختلفة جدًا بالنسبة لمشكلات "لا ترى" في اثنين من جوانبها:
- لدى جميع النماذج كانت نسبة قبولها أقل بالنسبة للمشاكل "لا ترى".هذه هي المرة الأكثر شيوعاً بالنسبة للمشاكل المتوسطة والأكبر صعوبة.
- لدى النماذج التي تمكنت من وضع "تفكير" أو "تفكير" انتجت نتائج أفضل في جميع المشاكل من جميع الصعوبات، على الرغم من أن الأرقام الحقيقية تختلف من النماذج إلى النماذج.
بالإضافة إلى جميع النماذج ، فإن معدل قبولها أقل بالنسبة للمشاكل "لا ترى".معدل قبول أقل بالنسبة لمشاكل "لا ترى" تتمكن النماذج مع وضع "تفكير" أو "تفكير" من إنتاج نتائج أفضل في جميع المشاكل من جميع الصعوبات، على الرغم من أن الأرقام الحقيقية تتلاشى من النماذج إلى النماذج. معدلات مع وضع "تفكير" أو "تفكير" تمكنت من إنتاج نتائج أفضلعلى سبيل المثال، يمكن تفسير معدلات قبول أعلى بكثير من المشكلات المعروفة بأن هذه المشكلات والحلول كانت جزءاً من مجموعات التدريب، وأن النماذج يجب أن تتكرر فقط حلًا صحيحًا معروفًا. ومع ذلك، فإن معدلات قبول المستخدمين للمشكلات المتوسطة والصارمة الجديدة أقل بكثير من المشكلات في مجموعات "المعروفة". هذه الحالة صعبة للتقييم، وهذا لا يعني بالضرورة أن المشكلات الجديدة هي "أكثر صعوبة".
جميع النماذج التي تمكنت من وضع "معالجة" تمكنت بشكل كبير من تحقيق أرباحها الأساسية. على سبيل المثال، تمكن بعضها من حل جزءاً كبيراً من المشاكل المتوسطة والأكبر - إنجاز غير ممكن منذ عام واحد فقط. يظهر O3-mini أفضل النتائج بين جميع النماذج "معالجة" - تمكنت من تحقيق أفضل من النماذج الأكثر تكلفة وأقل تعقيدا. O3-mini تم تدريبها بشكل خاص لتسوية مشاكل البرمجة المنافسة.أهم من ذلك، كان بعضهم قادرين على حل جزء كبير من المشاكل المتوسطة والصعبةلقد تم التدريب بشكل خاص لقد تم التدريب بشكل خاص
المفاهيم المستقبلية
لا يمكن ضمان أن مجموعات المشكلات "لا ترى" لم تشارك في بيانات التدريب من النماذج.للتغلب على هذا، قد نتناول إنشاء مشكلات جديدة فريدة من نوعها مصممة خصيصاً لمواصفات مستقبلية - بالطبع باستخدام LLMs.
وبالإضافة إلى ذلك، فإن استراتيجية أخرى هي استخدام لغات البرمجة الأقل استخداماً.هذه النهج قد تتطلب من LLMs لتصميم الحل بدلاً من "التسجيل" الكود المناسب المكتوب في Python.هذه الأفكار تحتاج إلى بحث إضافي، وأنا أعتقد أن شخصاً آخر أو أنا يمكن أن يغطيها.
الصفحات
https://github.com/whisk-on-solving-leetcode-problems">https://github.com/whisk-on-leetgptsolver https://hackernoon.com/testing-llms-on-solving-leetcode-problemsالنتائج الجذابة، وتحديد المشكلات، ويمكن العثور على رمز المصدر على GitHub: https://github.com/whisk/leetgptsolver https://github.com/whisk/leetgptsolver https://github.com/whisk/leetgptsolverتصنيفات مؤشري السابقين (2024): https://hackernoon.com/testing-llms-on-solving-leetcode-problems https://hackernoon.com/testing-llms-on-solving-leetcode-problems https://hackernoon.com/testing-llms-on-solving-leetcode-problems
تغطية الصورة التي تم إنشاؤها من قبل DALL·E.