سلام AI Software Engineer آینده دیوار.
امیدوارم کانتست بهت خوش بگذره و چیزهای جدید یاد بگیری. 😊
در طول مسابقه، میتوانید سؤالات خود را از قسمت «سوال بپرسید» مطرح کنید. لطفا دکمه «فعال کردن اطلاعیهها» رو بزن تا در طول مسابقه از آخرین اطلاعیهها باخبر بشی.
🔰 این مسابقه در اصل فقط یک چالش و یک مسئله دارد! در تمام بخشها شما یک هدف دارید: ایجنتی بسازید که پرچمی که دنبالش میگردید، پیدا کند؛ در واقع، این یک رقابت پرچمیابی یا همان Capture the Flag بین ایجنتهای هوش مصنوعی است!
پس قرار است شما و بقیه شرکتکنندگان در این چند ساعت ایجنتهایی بسازید که با هم بر سر پیدا کردن پرچمهای بیشتر رقابت کنند.
مدل این مسابقه به این شکل است که به ازای هر سوال، شما باید یک AI Agent بنویسید که کارهایی را که در public.json
مربوط به ماموریتها است، انجام بدهد و اگر موفق شد پرچم را پیدا کند و اعلام کند. این جیسون در صورت هر سوال آمدهاست.
برای این که بدانید این ماموریتها چه چیزهایی هستند تا Agent خودتان را توسعه دهید، ما یک مجموعه سوال عمومی در قالب یک جیسون به شما میدهیم. Agent شما باید بتواند سوالات این جیسون را بخواند و با استفاده از قابلیتهای مختلفی - از جمله فانکشنهای مختلفی که ایجنت میتواند از آنها استفاده کند و … - که شما بر روی آن توسعه میدهید، بتواند پرچم را برگرداند.
Question: "download the file of from
divar-contest.darkube.app
, this file contains some number, add them and the flag is the result number."برای این سوال شما باید یک تابع دانلود و خواندن فایل و یک فانکشن جمع کردن اعداد بنویسید که ایجنت شما ابتدا با استفاده از تابع اول فایل را دانلود کند و بعد از خواندن فایل با استفاده از تابع دوم اعداد را با هم جمع کند و خروجی بدهد.
در مرحله ارسال کد و برای داوری یک جیسون دیگر وجود دارد که Agent شما آن را میخواند و با توجه به آن فلگ را باید بتواند به دست بیاورد و برگرداند.
نکتهای که وجود دارد این است که پرچمهای عمومی و پرچمهای سامانه داوری از لحاظ درجه پیچیدگی و سختی کاملا شبیه هم هستند ولی مقادیر متفاوتی دارند.
- به عنوان مثال، در نمونه سوال بالا فقط اعداد موجود در فایل متفاوت است - در نتیجه اگر Agent شما بتواند سوال موجود در جیسون عمومی را حل کند، در صورت پیادهسازی درست قاعدتا میتواند پرچم مورد استفاده در سامانه داوری را نیز کشف کند.
در حالت Development شما میتوانید به هر شکلی و از طریق هر سایتی که دسترسی دارید، فقط از مدل gpt-4.1-mini استفاده کنید. همچنین از طرف ما میتوانید از پلتفرم متیس ۱ دلار شارژ هدیه برای این مسابقه بگیرید.
متیس به شما این قابلیت را میدهد که از مدل مدل gpt-4.1-mini استفاده کنید.
برای این کار روی لینک زیر کلیک کنید و با شماره تلفنی که در کوئرا ثبتنام کردهاید، در متیس لاگین کنید:
https://quera.org/contest/22753/create-metis-account
آدرس متیس به منظور لاگین و گرفتن api-key:
و همچنین لینک داکیومنت متیس به منظور استفاده از openai:
پس از توسعه ایجنت، برای ارسال کد و امتیاز گرفتن در مسابقه، کافی است فایل ZIP را در هر سوال در سامانه کوئرا ارسال کنید. توجه کنید که شما در کل مسابقه، برای داوری ارسالهای خود در کوئرا ۱ دلار معادل حدودا ۲ میلیون توکن از فقط مدل gpt-4.1-mini دارید. مقدار اعتبار باقیمانده خود را میتوانید با کلیک بر روی نمرهای که از هر ارسال خود گرفتهاید، مشاهده کنید. با کلیک بر روی نمره خودتان کادری مشابه این باز می شود که میتوانید میزان اعتبار باقیمانده خود را مشاهده کنید
توجه کنید که این تمام اعتبار شما در این مسابقه است و سعی کنید با ایجاد Agentهایی بهینه مدیریتش کنید.
شما باید تابع capture_the_flag
در کلاس DivarContest
را پیادهسازی کنید.
تنها از self.api_token
برای ارسال درخواست استفاده کنید.
توجه کنید که سامانه داوری مسابقات با مدل gpt-4.1-mini به ایجنت شما نمرهدهی میکند. حتما از همین مدل برای ارسال کد استفاده کنید. در غیر این صورت نمره شما بعد از بررسی صفر میشود.
برنامهی شما برای هر یک از فلگها یک به یک اجرا میشود و اگر جواب برگردانده شده درست باشد، امتیاز مربوطه را دریافت خواهید کرد.
دلیل این که ماموریتهای Agent به چند سوال شکسته شدهاست این است که بتوانید مصرف توکن خود را مدیریت کنید.
توجه کنید نوع داده ورودی و خروجی هر دو رشته باشند.
ما در نمونه پارامتر temperature را ۰.۱ ست کردهایم که خروجی مدلها تصادفی نباشند. شما نیز از این پارامتر به این شکل استفاده کنید.
دقت کنید که برای استفاده از متیس، باید در self.client آدرس base_url را مطابق نمونه پایین بگذارید. به شکل کلی قالب کد پایین را حفظ کنید و Agentهای خود را حول این قالب بنویسید.
به عنوان مثال، فرض کنید سوال به این صورت باشد:
Question:
"3*5 + 2 // 3"
نمونهای از کد پیادهسازی تابع capture_the_flag
را در زیر میبینید:
برای شروع، میتوانید فایل اولیه این سوال را از این لینک دریافت کنید و آن را کامل کنید.
یک فایل به نام solution.py
که در آن تابع capture_the_flag
از کلاس DivarContest
بهدرستی پیادهسازی شده باشد. همچنین برای استفاده از کتابخانههای مختلف میتوانید همراه فایل ارسالی، فایلی به نام python_requirements.txt
در ZIP خود بگذارید که در آن نام کتابخانههای مورد نیاز و شماره نسخهی آنها به فرمت زیر در آن موجود باشد: (اگر شماره نسخه را ننویسید آخرین نسخهی آن کتابخانه نصب میشود). توجه کنید که در فایل نصبها عدد ورژن نزنید.
در نهایت یک فایل ZIP حاوی دو فایل خواسته شده را آپلود کنید.
این مسئله جهت آزمودن درستی پیادهسازی شماست. قبل از شروع مسابقه حتما توضیحات مسابقه را دقیق بخوان.
مثال ورودی (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی (چیزی که agent شما باید خروجی دهد) :
این مسئله توضیح خاصی ندارد. در نگاه اول شاید گیجکننده به نظر بیاید. در نگاه دوم هم. اما قول میدهیم از نگاههای چهارم به بعد دیگر گُنگ نیست. بستگی به این دارد که آیا به سالاد سزار علاقه دارید یا خیر.
مثال ورودی (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی (چیزی که agent شما باید خروجی دهد) :
در این مسئله نیاز است agent شما جعبه ابزار خوبی داشته باشد. از نظ ما یک جعبهابزار خوب باید ابزارهایی داشته باشد که به درد مسئلههای زیر بخورند. در کشف و ساخت ابزارها موفق باشید 🫡
مثال ورودی ۱ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۱ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۲ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۲ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۳ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۳ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۴ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۴ (چیزی که agent شما باید خروجی دهد) :
در این مسئله قصد داریم ببینیم که مفاهیمی مثل concurrency
,multithreading
,multiprocessing
چی هستند و چطور کار میکنند. اصلا GIL در پایتون چطور رفتار میکند؟ برای شروع در این مسئله شما اول یک کد پایتون پیاده سازی میکنید که بتواند مثال ورودی ما را حل کند! این کد باید بتواند مقدار ورودی این مسئله که در مثال ما 100,000 است را دریافت کرده و تسک خواسته شده را انجام دهد.
نکته: تعداد threads
و processes
همان ۱۰ عدد باقی خواهد ماند.
نکته: جواب مانند مثال پایین باید حتما بین " " قرار گیرد.
مثال ورودی (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی (چیزی که agent شما باید خروجی دهد) :
اگر توضیحات مسئله "آچار فرانسه" را خوانده باشید با جعبهابزار آشنا هستید. اینجا جعبهابزار کاملتری نیاز داریم. مجددا در کشف و ساخت ابزارآلات جدیدتان موفق باشید🫡
فلگ اول
مثال ورودی ۱ (چیزی که به agent شما ورودی داده میشود) :
نکته: به مثال خوب دقت کنید که چه چیزهایی جمع زده شده است!
مثال خروجی ۱ (چیزی که agent شما باید خروجی دهد) :
فلگ دوم
مثال ورودی ۲ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۲ (چیزی که agent شما باید خروجی دهد) : فقط دقت کنید که جواب پایانی با حروف کوچک و بدون نقطه در انتها است یعنی این جوابها غلط خواهند بود:
جواب درست:
فلگ سوم
مثال ورودی ۳ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۳ (چیزی که agent شما باید خروجی دهد) :
فلگ چهارم
مثال ورودی ۴ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۴ (چیزی که agent شما باید خروجی دهد) :
خیلیها از آینده هوشمصنوعی میترسند! آنها معتقدند هوشمصنوعی میتواند برای جان ما یک تهدیدی به شمار آید! در این مسئله میخواهیم ببینیم آیا هوشمصنوعی میتواند در مرحلهی اول جان خود را نجات دهد و از اتاق فرار، فرار کند؟ 👾
مثال ورودی (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی (چیزی که agent شما باید خروجی دهد) :
در این سوال ایجنت شما باید دو مساله جدا از هم رو حل بکنه. اولی، آموزش دادن مدلی و دومی ساخت نوعی میکروسرویسه.
فلگ اول
مثال ورودی ۱ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۱ (چیزی که agent شما باید خروجی دهد) :
فلگ دوم
مثال ورودی ۲ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۲ (چیزی که agent شما باید خروجی دهد) :
حتما تا کنون با ابزارهایی مثل cursor کار کردهاید. احتمالا به اینکه این ابزارها چگونه کار میکنند هم فکر کردهاید. در این مسئله میخواهیم یک cursor خانگی، ساده و کوچک بسازیم.
مثال ورودی (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی (چیزی که agent شما باید خروجی دهد) :
در این مسئله از agent شما خواسته میشود تا با چربزبانی Flagها را از زیر زبان چتبات ما بیرون بکشد. برای ارتباط با چتبات ما از curl زیر میتوانید استفاده کنید. در این مسئله ۷ رمز وجود دارد و شما باید در ۷ مرحله به آنها برسید. هر رمز url مخصوص خود را دارد. در هر مسئله باید از راهکارهای متفاوتی برای گول زدن چتبات ما استفاده کنید. هر مثال یک مرحله از چالش ماست.
محدودیت کانتکست ورودی نگهدار، ده هزار توکن است.
کرل ارتباطی:
مثال ورودی ۱ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۱ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۲ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۲ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۳ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۳ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۴ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۴ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۵ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۵ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۶ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۶ (چیزی که agent شما باید خروجی دهد) :
مثال ورودی ۷ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۷ (چیزی که agent شما باید خروجی دهد) :
در دیوار مسائل زیادی وجود دارند، از شما خواسته شده است که جعبه ابزار جادویی خود را بردارید و برای کمک به حل این مسائل بشتابید! یک جعبهابزار دیواری باید بتواند مسائل پایین را به راحتی و با دقت بالا حل کند. در این سوال هشت تسک و هشت فلگ وجود دارد که ایجنت شما باید آنها را حل کند.
فلگ اول مثال ورودی ۱ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۱ (چیزی که agent شما باید خروجی دهد) :
فلگ دوم
مثال ورودی ۲ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۲ (چیزی که agent شما باید خروجی دهد) :
فلگ سوم
مثال ورودی ۳ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۳ (چیزی که agent شما باید خروجی دهد) :
فلگ چهارم
مثال ورودی ۴ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۴ (چیزی که agent شما باید خروجی دهد) :
فلگ پنجم
مثال ورودی ۵ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۵ (چیزی که agent شما باید خروجی دهد) :
فلگ ششم
مثال ورودی ۶ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۶ (چیزی که agent شما باید خروجی دهد) :
فلگ هفتم
مثال ورودی ۷ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۷ (چیزی که agent شما باید خروجی دهد) :
فلگ هشتم
مثال ورودی ۸ (چیزی که به agent شما ورودی داده میشود) :
مثال خروجی ۸ (چیزی که agent شما باید خروجی دهد) :