الگوهای رایجی مثل ReAct یا ReWOO برای بسیاری از وظایف روزمرهی ایجنتها کارآمدند، اما وقتی پای مسائلی در میان باشد که کوچکترین خطا یا توهم در آنها فاجعهبار است — مانند زمانبندیهای صنعتی، قوانین انطباق سازمانی یا بهینهسازی سطح ماشین — نمیتوان به برنامهریزی زبانی صِرف اعتماد کرد. در این موقعیتها به دو سازوکار قطعی نیاز داریم: درستی اثباتپذیر بر پایهی قواعد صوری، یا ارزیابی ماشینمحور برای رسیدن به بهترین پاسخ عددی.
در این درس بررسی میکنیم که چگونه دو معماری مدرن سال 2025 یعنی ChatHTN و AlphaEvolve، ضعفهای ذاتی مدلهای زبانی را با ترکیب برنامهریزی نمادین شبکههای وظایف سلسلهمراتبی (HTN) و جستوجوی تکاملی کد پوشش میدهند. در این ساختارها، مدل زبانی تصمیمگیرندهی نهایی نیست، بلکه ابزاری برای پیشنهاد گزینههاست که درستی آنها توسط چارچوبهای صوری و ارزیابهای قطعی سنجیده میشود.
پیادهسازی نمونههای این درس بدون نیاز به زیرساختهای پردازشی سنگین یا GPUهای ابری گرانقیمت، صرفاً با کتابخانهی استاندارد پایتون (stdlib) و بر بستر سیستم شخصی شما به شکل آفلاین قابل اجراست.
برنامهریزی نمادین برای مواردی است که درستی طرح باید اثباتپذیر باشد. جستوجوی تکاملی کد هم به کار مواردی میآید که تابع برازش (fitness function) با ماشین قابلارزیابی باشد. دو مقالهی ChatHTN (2025) و AlphaEvolve (2025) نشان میدهند ترکیب هرکدام از این روشها با مدل زبانی بزرگ (LLM) چه توانمندیهایی خلق میکند.
اهداف یادگیری
- تشریح شبکههای وظایف سلسلهمراتبی (Hierarchical Task Networks یا HTN): وظایف، متدها، عملگرها، پیششرطها و اثرات.
- توصیف حلقهی ترکیبی ChatHTN — جستوجوی نمادین بههمراه تجزیهی پشتیبان (fallback) با مدل زبانی.
- توضیح حلقهی تکاملی AlphaEvolve و اینکه چرا صرفاً در حضور یک ارزیاب کدنویسیشده کار میکند.
- پیادهسازی یک برنامهریز اسباببازی HTN بههمراه یک جستوجوی تکاملی ساده با کتابخانهی استاندارد پایتون (stdlib).
صورت مسئله
الگوهای ReWOO (درس 02)، «طرح و اجرا» (Plan-and-Execute) و ReAct بخش عمدهی برنامهریزی ایجنتها را پوشش میدهند؛ اما دو سناریو را خوب مدیریت نمیکنند:
- طرحهایی با درستی اثباتپذیر. زمانبندی، مسیریابی پرواز، گردشکارهای انطباق با قوانین — طرح باید از اساس درست باشد. طرح سلیس و روان یک مدل زبانی که گاهی گامی خیالی در آن توهم کند، اصلاً پذیرفتنی نیست.
- بهینهسازیهایی با تابع برازش قابلارزیابی با ماشین. ضرب ماتریسی، روشهای اکتشافی زمانبندی، گذرگاههای بهینهسازی کامپایلر — هدف «یک طرح درست» نیست؛ رسیدن به «بهترین طرح» است.
برنامهریزی HTN و AlphaEvolve این دو مسئلهی متفاوت را حل میکنند. در هر دو رویکرد، مدلهای زبانی نقش تقویتکننده را دارند، نه جایگزین.
مفاهیم پایه
شبکههای وظایف سلسلهمراتبی
اجزای تشکیلدهندهی یک HTN عبارتاند از:
- وظایف (Tasks) — مرکب (باید تجزیه شوند) و اولیه (مستقیماً قابلاجرا).
- متدها (Methods) — روشهای خرد کردن یک وظیفهی مرکب به زیروظایف، همراه با پیششرطها.
- عملگرها (Operators) — اقدامهای اولیه همراه با پیششرطها و اثرات.
- وضعیت (State) — مجموعهای از فکتها و گزارهها.
برنامهریزی: با داشتن یک وظیفهی هدف و وضعیت اولیه، تجزیهای به عملگرهای اولیه بیابید که پیششرطهایشان بهترتیب برآورده شوند.
قدمت HTN بیش از مدلهای زبانی است و هنوز هم مرجع اصلی طرحهایی با درستی اثباتپذیر به شمار میرود.
سامانهی ChatHTN (Gopalakrishnan et al., 2025)
سامانهی ChatHTN (arXiv:2505.11814) برنامهریزی نمادین HTN را با پرسوجو از مدل زبانی ادغام میکند:
- تلاش میکند وظیفهی مرکب فعلی را با متدهای موجود تجزیه کند.
- اگر هیچ متدی نخورد، از مدل زبانی میپرسد: «وظیفهی
taskرا در وضعیتsچطور تجزیه میکنی؟» - پاسخ مدل زبانی را به زیروظایف کاندید ترجمه میکند.
- زیروظایف را با طرحوارهی (schema) عملگرها اعتبارسنجی میکند؛ تجزیههای نامعتبر را رد میکند.
- روند را بازگشتی ادامه میدهد.
ادعای محوری مقاله این است: تکتک طرحهای تولیدشده درستی اثباتپذیر دارند؛ زیرا پیشنهادهای مدل زبانی صرفاً بهعنوان کاندیدای تجزیه وارد مدار میشوند و هرگز مستقیماً طرح را ویرایش نمیکنند. لایهی نمادین مالک صحت و درستی است؛ مدل زبانی هم کتابخانهی متدها را گسترش میدهد.
یادگیری برخط متد (Online method learning؛ مقالهی تکمیلی OpenReview gwYEDY9j2x در سال 2025) یادگیرندهای اضافه میکند که تجزیههای تولیدی مدل زبانی را با رگرسیون تعمیم میدهد — و بسامد پرسوجو از مدل زبانی را تا 75% کاهش میدهد.
سامانهی AlphaEvolve (Novikov et al., 2025)
سامانهی AlphaEvolve (arXiv:2506.13131، محصول DeepMind، ژوئن 2025) ماجرای متفاوتی دارد: جستوجوی تکاملی کد به رهبری گروهی ترکیبی (ensemble) از مدلهای Gemini 2.0 Flash و Pro.
حلقهی کار:
- شروع با یک برنامهی اولیه (seed) + یک ارزیاب کدنویسیشده (که امتیاز برازش میدهد).
- گروه ترکیبی مدلهای زبانی جهشهایی پیشنهاد میکنند.
- اجرای کدهای جهشیافته درون ارزیاب.
- نگهداشتن بهترین نسخه و جهش دوباره.
دستاوردهای منتشرشده:
- نخستین بهبود نسبت به روش اشپراسن (Strassen) در ضرب ماتریسهای مختلط 4x4 پس از 56 سال (با 48 ضرب اسکالر).
- بازیابی 0.7% از منابع رایانشی گوگل با یک روش اکتشافی زمانبندی در Borg.
- افزایش 32 درصدی سرعت FlashAttention روی بارهای کاری پیشرو.
محدودیت سفتوسخت: تابع برازش الزاماً باید توسط ماشین قابلارزیابی باشد. جستوجوی تکاملی روی پاسخهای متنی معمولی همگرا نمیشود.
هر الگو را چه زمانی به کار ببریم؟
| ردهی مسئله | مورد استفاده | چرا |
|---|---|---|
| زمانبندی با قیدهای سخت | HTN + ChatHTN | درستی اثباتپذیر |
| بهینهسازی کامپایلر | AlphaEvolve | تابع برازشِ قابلارزیابی با ماشین |
| اجرای وظایف چندمرحلهای | ReAct / ReWOO | مدل زبانی در حلقه، بدون ضمانتهای صوری |
| بهبود کد با داشتن تست | AlphaEvolve | تستها نقش ارزیاب را بازی میکنند |
| خودکارسازی مقید به خطمشیها | HTN | پیششرطها خطمشیها را کدگذاری میکنند |
لغزشگاههای این الگو
- استفاده از HTN بدون عملگرها. بدون طرحوارههای پیششرط و اثر، ادعای درستی طرح فرو میریزد. ویژگی «پیشنهاد تجزیه با مدل زبانی» در ChatHTN به همین طرحواره نیاز دارد تا حرکتهای نامعتبر را رد کند.
- استفاده از AlphaEvolve بدون ارزیاب واقعی. «پرسیدن از مدل زبانی که آیا کد بهتر شده یا نه» تابع برازش نیست. ارزیاب باید قطعی و سریع باشد.
- مهندسی بیشازحد (Over-engineering). اغلب وظایف ایجنتها به هیچکدام از این دو نیاز ندارند. در وهلهی اول سراغ ReAct یا ReWOO بروید.
پیادهسازی عملی
فایل code/main.py دو نمونهی ساده را پیاده میکند:
- یک برنامهریز HTN مبتنی بر کتابخانهی استاندارد با عملگرها، متدها، پیششرطها، اثرات و یک
LLMFallbackکه هر وقت هیچ متدی با وظیفهی مرکب نخواند فعال میشود. «مدل زبانی» در اینجا یک تجزیهکنندهی اسکریپتشده است تا برنامهریز آفلاین کار کند. - یک جستوجوی تکاملی با کتابخانهی استاندارد روی برنامههای حسابی: تکامل عبارتهایی که خروجیشان مقدار
|f(x) - target|را روی یک مجموعهی آزمون کمینه کند. ارزیاب قطعی است.
اجرای آن:
python3 code/main.py
ردگیری محاسبات نشان میدهد برنامهریز HTN چطور وظیفهی مرکب را تجزیه میکند (همراه با عقبنشینی روی مدل زبانی در میانهی طرح) و حلقهی تکاملی چگونه به عبارت هدف همگرا میشود.
استفاده در عمل
- برنامهریزهای HTN — از
pyhopیاSHOP3استفاده کنید، یا برای اعمال خطمشیهای حوزهی خودتان یکی بسازید. - سامانهی ChatHTN — کدهای پژوهشی موجود است؛ این الگو (برنامهریزی نمادین + گزینهی پشتیبان مدل زبانی) بهراحتی به هر برنامهریز HTN دیگری منتقل میشود.
- سامانهی AlphaEvolve — مقالهی DeepMind منتشر شده است؛ الگوی آن (گروه ترکیبی + ارزیاب) کاملاً قابلیت بازتولید دارد. پروژههایی مثل OpenEvolve و forkهای متنباز مشابه در حال ظهورند.
- فریمورکهای ایجنت — فعلاً هیچکدام پشتیبانی پیشفرضی از HTN یا AlphaEvolve ارائه نمیدهند. آنها را در قالب یک سابایجنت یا ورکر پسزمینه بسازید.
تحویل خروجی
فایل outputs/skill-hybrid-planner.md یک چارچوب برنامهریز ترکیبی (HTN یا تکاملی) تولید میکند که در آن دامنهی نقش مدل زبانی بهطور دقیق مشخص شده است.
تمرینها
- برنامهریز HTN را با قابلیت پسگرد (backtracking) گسترش دهید: هرگاه پسشرطِ یک عملگر در زمان اجرا برقرار نشد، به عقب برگردد و متد بعدی را امتحان کند.
- کش متدهای مدل زبانی را به ChatHTN اضافه کنید: هر بار مدل زبانی وظیفهی
Tرا در الگوی وضعیتPتجزیه کرد، نتیجه را ذخیره کنید تا در فراخوانی بعدی، اول کتابخانهی متدها بررسی شود. - ارزیاب جستوجوی تکاملی را با یک مجموعهتست واقعی تعویض کنید. تابع مرتبسازیای تکامل دهید که 20 مورد آزمون را پاس کند؛ تعداد نسلها تا همگرایی را گزارش کنید.
- یادداشتهای طراحی ارزیاب در AlphaEvolve را بخوانید. سپس برای دامنهی کاری خودتان (بهینهسازی کوئریهای SQL، کمینهسازی مجموعهتست یا فایل YAML استقرار) یک ارزیاب طراحی کنید.
- ترکیب هر دو: با HTN یک وظیفهی مرکب را به زیروظایف تجزیه کنید، سپس جستوجوی تکاملی را روی عملگر اولیهی هر زیروظیفه اعمال کنید. این روش کجا عالی جواب میدهد و کجا مهندسی بیشازحد است؟
اصطلاحات کلیدی
| اصطلاح | در گفتار عام | معنای دقیق فنی |
|---|---|---|
| HTN | «برنامهریز سلسلهمراتبی» | تجزیهی وظیفه با عملگرها، پیششرطها و اثرات |
| متد (Method) | «قاعدهی تجزیه» | روش خرد کردن یک وظیفهی مرکب به چند زیروظیفه |
| عملگر (Operator) | «اقدام اولیه» | گام مشخص و عینی با پیششرط و اثر |
| ChatHTN | «ترکیب مدل زبانی + HTN» | برنامهریز نمادین؛ وقتی هیچ متدی مطابقت نکند از مدل زبانی کمک میگیرد |
| AlphaEvolve | «جستوجوی تکاملی کد» | گروه ترکیبی مدلهای زبانی کد را جهش میدهند؛ ارزیاب قطعی بهترین را برمیگزیند |
| تابع برازش (Fitness function) | «ارزیاب» | امتیازی قطعی و قابلارزیابی توسط ماشین روی خروجیها |
| یادگیری برخط متد (Online method learning) | «تجزیهی کششده با مدل زبانی» | ذخیره و تعمیم طرحهای مدل زبانی برای کاهش هزینهی پرسوجوها |
برای مطالعهی بیشتر
- مقالهی ChatHTN اثر Gopalakrishnan et al. در arXiv:2505.11814 — برنامهریز ترکیبیِ نمادین و مدل زبانی
- مقالهی AlphaEvolve اثر Novikov et al. در arXiv:2506.13131 — جستوجوی تکاملی کد با جهشهای مدل زبانی
- مقالهی شرکت Anthropic دربارهی ساخت ایجنتهای کارآمد (Building Effective Agents) — چه زمانی سراغ برنامهریز برویم و چه زمانی از یک حلقهی ساده استفاده کنیم
