در این مسئله، شما باید یک ایجنت هوشمند طراحی کنید که بتواند به مجموعهای از سوالات چندگزینهای پاسخ دهد. پاسخ صحیح هر سوال، در یکی از پاراگرافهای مجموعهای از داستانها پنهان شده است.
**نکتهی بسیار مهم**
در این سوال بر خلاف دیگر سوالات باید از مدل زبانی **GPT-4.1 nano** با محدودیت کانتکست **2k context size** استفاده کنید و استفاده از `gpt-4.1-mini` مجاز نیست.
## نحوهٔ ارائهٔ تسکها به ایجنت
تسکهای مختلف به صورت متنی به ایجنت شما ارائه خواهد شد. آدرس داستانها (`stories_url`) به کنستراکتور کلاس `Solver` شما داده میشود.
**مثالهایی از تسکها:**
```
"Retrieve question 1 from https://torobcontest.darkube.app/public/questions/1"
"Retrieve question 5 from https://torobcontest.darkube.app/public/questions/5"
"Answer question 3 using the provided stories and question endpoint https://torobcontest.darkube.app/public/questions/3"
```
ایجنت شما باید این دستورات را تجزیه کرده، اندپوینتهای مربوطه را فراخوانی کند، و پاسخ صحیح را در فرمت مشخصشده برگرداند.
## خروجی
ایجنت شما باید پاسخها را در قالب یک دیکشنری JSON برگرداند. فرمت خروجی باید دقیقاً ساختار زیر را داشته باشد:
+ `correct_choice` (string): گزینهٔ صحیح (A, B, C, یا D)
+ `story_name` (string): نام داستانی که پاسخ در آن یافت شده
+ `paragraph_number` (integer): شمارهٔ پاراگراف (یک-مبنا) که پاسخ در آن قرار دارد
**مثال فرمت خروجی:**
```
{
"correct_choice": "B",
"story_name": "The Serenity Drug Trial",
"paragraph_number": 1
}
```
## امتیازدهی
امتیاز نهایی شما بر اساس تعداد پاسخهای کاملاً صحیح محاسبه میشود. برای اینکه یک پاسخ صحیح در نظر گرفته شود، هر سه فیلد (`correct_choice`, `story_name`, `paragraph_number`) باید با مقادیر مورد انتظار مطابقت داشته باشد.
## نکته مهم درباره زمان اجرا
**توجه:** اگر کد شما در زمان مجاز اجرا نشود و به time limit برخورد کند، سرور پیام خطای `"We couldn't find 40 tests"` را نمایش خواهد داد.
# آنچه باید آپلود کنید
شما باید فایل `solution.py` را ارسال کنید که در آن کلاس `Solver` را پیادهسازی کنید که حاوی تابعی به اسم `run` باشد که یک آرگومان بهعنوان ورودی میگیرد و یک دیکشنری بهعنوان خروجی بر میگرداند. آدرس داستانها به کنستراکتور کلاس شما داده میشود. همچنین میتوانید در کنار برنامهتان ماژولهای مورد نیاز برای اجرا را در `python_requirements.txt` قرار دهید. برای مثال:
```
# solution.py
class Solver:
def __init__(self, api_token, stories_url):
self.api_token = api_token
self.stories_url = stories_url
def run(self, text):
# text شامل دستورات تسک است
return {"correct_choice": "A", "story_name": "نام داستان", "paragraph_number": 1}
```
## تست نمونه اول
```
text = "Retrieve question 1 from https://torobcontest.darkube.app/public/questions/1"
s = Solver(your_api_key, "https://torobcontest.darkube.app/public/stories")
print(s.run(text)) # {"correct_choice":"B", "story_name":"The Serenity Drug Trial", "paragraph_number":"1"}
```
## تست نمونه دوم
```
text = "Answer question 5 using the provided stories and question endpoint https://torobcontest.darkube.app/public/questions/5"
s = Solver(your_api_key, "https://torobcontest.darkube.app/public/stories")
print(s.run(text)) # {"correct_choice": "C", "story_name": "Hurricane Echo's Aftermath and Relief", "paragraph_number": "2"}
```
## اندپوینتهای عمومی
برای تست و توسعهٔ ایجنت خود، میتوانید از اندپوینتهای عمومی زیر استفاده کنید:
### ۱. داستانها
**URL:** `https://torobcontest.darkube.app/public/stories`
این اندپوینت لیستی از تمام داستانها را برمیگرداند. هر داستان یک شیء JSON با ساختار زیر است:
+ `title` (string): عنوان داستان
+ `paragraphs` (array of strings): لیستی از پاراگرافهای تشکیلدهندهٔ داستان
### ۲. سوالات
**URL:** `https://torobcontest.darkube.app/public/questions/{question_id}`
این اندپوینت اطلاعات یک سوال خاص را برمیگرداند. هر سوال یک شیء JSON با ساختار زیر است:
+ `question_id` (integer): شناسهٔ یکتای سوال
+ `question_text` (string): متن سوال
+ `choices` (object): یک شیء شامل گزینههای سوال (A, B, C, D)
**مثال:** `https://torobcontest.darkube.app/public/questions/1`
> **نکتهی بسیار مهم**
>
> مدل زبانی مورد استفاده **GPT-4.1 nano** با **2k context size** است.