من فضلك تسجيل الدخول أو تسجيل لتفعل ذلك.

AutoCodeRover: تحسين البرنامج المستقل

ورقة آركايف

👋 نظرة عامة

يعد AutoCodeRover أسلوبًا مؤتمتًا بالكامل لحل مشكلات GitHub (إصلاح الأخطاء وإضافة الميزات) حيث يتم دمج LLMs مع إمكانات التحليل وتصحيح الأخطاء لتحديد أولويات مواقع التصحيح مما يؤدي في النهاية إلى التصحيح.

على سوي-مقاعد البدلاء لايت، والذي يتكون من 300 مشكلة حقيقية في GitHub، يقوم AutoCodeRover بحل ~22% من المشكلات، وتحسين الفعالية الحالية لمهندسي برمجيات الذكاء الاصطناعي.

يعمل AutoCodeRover على مرحلتين:

  • 🔎 استرجاع السياق: يتم تزويد LLM بواجهات برمجة التطبيقات للبحث عن التعليمات البرمجية للتنقل في قاعدة التعليمات البرمجية وجمع السياق ذي الصلة.
  • 💊 إنشاء التصحيح: يحاول ماجستير إدارة الأعمال كتابة التصحيح بناءً على السياق المسترجع.

✨ أبرز

يتمتع AutoCodeRover بميزتين فريدتين:

  • واجهات برمجة التطبيقات للبحث عن التعليمات البرمجية هي هيكل البرنامج على علم. بدلاً من البحث في الملفات عن طريق مطابقة السلسلة العادية، يبحث AutoCodeRover عن سياق التعليمات البرمجية ذات الصلة (الطرق/الفئات) في شجرة بناء الجملة المجردة.
  • عند توفر مجموعة اختبار، يمكن لـ AutoCodeRover الاستفادة من حالات الاختبار لتحقيق معدل إصلاح أعلى، من خلال إجراء توطين الخطأ الإحصائي.

🗎ورقة arXiv

AutoCodeRover: تحسين البرنامج المستقل [arXiv 2404.05427]

للإشارة إلى أعمالنا، يرجى ذكر وذكر:

@misc{zhang2024autocoderover,      title={AutoCodeRover: Autonomous Program Improvement},      author={Yuntong Zhang and Haifeng Ruan and Zhiyu Fan and Abhik Roychoudhury},      year={2024},      eprint={2404.05427},      archivePrefix={arXiv},      primaryClass={cs.SE}}

✔️ مثال: إصدار جانغو رقم 32347

على سبيل المثال، نجح AutoCodeRover في حل المشكلة #32347 جانجو. شاهد الفيديو التجريبي للعملية الكاملة:

acr-final.mp4

🚀 الإعداد والتشغيل

نوصي بتشغيل AutoCodeRover في حاوية Docker. أولاً، قم ببناء وبدء تشغيل صورة عامل الإرساء:

docker build -f Dockerfile -t acr .docker run -it acr

في حاوية عامل الإرساء، قم بتعيين OPENAI_KEY env فار لك مفتاح OpenAI:

export OPENAI_KEY=xx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

قم بإعداد مهمة واحدة أو أكثر في SWE-bench

في حاوية عامل الإرساء، نحتاج أولاً إلى إعداد المهام التي سيتم تشغيلها في SWE-bench (على سبيل المثال، django__django-11133). يمكن العثور على قائمة بجميع المهام في conf/swe_lite_tasks.txt.

يجب وضع المهام في ملف، واحدة في كل سطر:

ثم قم بإعداد هذه المهام عن طريق تشغيل:

cd /opt/SWE-benchconda activate swe-benchpython harness/run_setup.py --log_dir logs --testbed testbed --result_dir setup_result --subset_file tasks.txt

بمجرد الانتهاء من إعداد هذه المهمة، سيتم طباعة السطرين التاليين:

setup_map is saved to setup_result/setup_map.jsontasks_map is saved to setup_result/tasks_map.json

ال testbed سيحتوي الدليل الآن على الكود المصدري المستنسخ للمشروع المستهدف. سيتم أيضًا إنشاء بيئة كوندا لمثيل المهمة هذا.

إذا كنت تريد إعداد مهام متعددة معًا، فقم بإدخال معرفاتها tasks.txt واتبع نفس الخطوات.

تشغيل مهمة واحدة

قبل تشغيل المهمة (django__django-11133 هنا)، تأكد من إعداده كما هو مذكور فوق.

cd /opt/auto-code-roverconda activate auto-code-roverPYTHONPATH=. python app/main.py --enable-layered --model gpt-4-0125-preview --setup-map ../SWE-bench/setup_result/setup_map.json --tasks-map ../SWE-bench/setup_result/tasks_map.json --output-dir output --task django__django-11133

يمكن بعد ذلك العثور على مخرجات التشغيل في output/. على سبيل المثال، تم إنشاء التصحيح لـ django__django-11133 يمكن العثور عليها في مكان مثل هذا: output/applicable_patch/django__django-11133_yyyy-MM-dd_HH-mm-ss/extracted_patch_1.diff (سيختلف حقل التاريخ والوقت في اسم الدليل اعتمادًا على وقت تشغيل التجربة).

تشغيل مهام متعددة

أولاً، ضع معرفات جميع المهام المطلوب تشغيلها في ملف، واحدة في كل سطر. لنفترض أن هذا الملف هو tasks.txt، يمكن تشغيل المهام بها

PYTHONPATH=. python app/main.py --enable-layered --model gpt-4-0125-preview --setup-map ../SWE-bench/setup_result/setup_map.json --tasks-map ../SWE-bench/setup_result/tasks_map.json --output-dir output --task-list-file tasks.txt

ملحوظة: تأكد من أن المهام في tasks.txt تم إعدادها جميعًا في مقعد SWE. انظر الخطوات فوق.

باستخدام ملف التكوين

وبدلاً من ذلك، يمكن استخدام ملف التكوين لتحديد جميع المعلمات والمهام المطلوب تشغيلها. يرى conf/vanilla-lite.conf على سبيل المثال. انظر أيضا تجربة.md للحصول على تفاصيل العناصر الموجودة في ملف conf. يمكن استخدام ملف التكوين من خلال:

python scripts/run.py conf/vanilla-lite.conf

تكرار التجربة

يرجى الرجوع إلى تجربة.md للحصول على معلومات حول تكرار التجربة.

✉️ جهات الاتصال

ولأي استفسار مرحبا بكم في فتح الموضوع.

وبدلاً من ذلك، اتصل بنا على: {yuntong,hruan,zhiyufan}@comp.nus.edu.sg.

شكر وتقدير

تم دعم هذا العمل جزئيًا من قبل وزارة التعليم السنغافورية (MoE) من المستوى 3 منحة “إصلاح البرنامج الآلي”، MOE-MOET32021-0001.

اقرأ أكثر

تطرح Google شبكة Find My Device الجديدة لأجهزة Android
يقول إيلون ماسك إن منشوراته أدت إلى "إضعاف X ماليًا" أكثر من مساعدتها

Reactions

0
0
0
0
0
0
بالفعل كان رد فعل لهذا المنصب.

ردود الفعل