فاز 14 · درس 11

برنامه‌ریزی ایجنت‌ها با HTN و جست‌وجوی تکاملی: درس ChatHTN و AlphaEvolve

نوع
ساختنی
زمان
حدود 75 دقیقه
زبان‌ها
Python (stdlib)
پیش‌نیاز
فاز 14 · درس 02 (ReWOO و طرح و اجرا)
یک نقشه‌ی ساختار درختی مکانیکی با چرخ‌دنده‌ها در تعامل با کدهای انتزاعی متوالی
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم پایه
  4. شبکه‌های وظایف سلسله‌مراتبی
  5. سامانه‌ی ChatHTN (Gopalakrishnan et al., 2025)
  6. سامانه‌ی AlphaEvolve (Novikov et al., 2025)
  7. هر الگو را چه زمانی به کار ببریم؟
  8. لغزشگاه‌های این الگو
  9. پیاده‌سازی عملی
  10. استفاده در عمل
  11. تحویل خروجی
  12. تمرین‌ها
  13. اصطلاحات کلیدی
  14. برای مطالعه‌ی بیشتر

الگوهای رایجی مثل 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 بخش عمده‌ی برنامه‌ریزی ایجنت‌ها را پوشش می‌دهند؛ اما دو سناریو را خوب مدیریت نمی‌کنند:

  1. طرح‌هایی با درستی اثبات‌پذیر. زمان‌بندی، مسیریابی پرواز، گردش‌کارهای انطباق با قوانین — طرح باید از اساس درست باشد. طرح سلیس و روان یک مدل زبانی که گاهی گامی خیالی در آن توهم کند، اصلاً پذیرفتنی نیست.
  2. بهینه‌سازی‌هایی با تابع برازش قابل‌ارزیابی با ماشین. ضرب ماتریسی، روش‌های اکتشافی زمان‌بندی، گذرگاه‌های بهینه‌سازی کامپایلر — هدف «یک طرح درست» نیست؛ رسیدن به «بهترین طرح» است.

برنامه‌ریزی HTN و AlphaEvolve این دو مسئله‌ی متفاوت را حل می‌کنند. در هر دو رویکرد، مدل‌های زبانی نقش تقویت‌کننده را دارند، نه جایگزین.

مفاهیم پایه

شبکه‌های وظایف سلسله‌مراتبی

اجزای تشکیل‌دهنده‌ی یک HTN عبارت‌اند از:

  • وظایف (Tasks) — مرکب (باید تجزیه شوند) و اولیه (مستقیماً قابل‌اجرا).
  • متدها (Methods) — روش‌های خرد کردن یک وظیفه‌ی مرکب به زیروظایف، همراه با پیش‌شرط‌ها.
  • عملگرها (Operators) — اقدام‌های اولیه همراه با پیش‌شرط‌ها و اثرات.
  • وضعیت (State) — مجموعه‌ای از فکت‌ها و گزاره‌ها.

برنامه‌ریزی: با داشتن یک وظیفه‌ی هدف و وضعیت اولیه، تجزیه‌ای به عملگرهای اولیه بیابید که پیش‌شرط‌هایشان به‌ترتیب برآورده شوند.

قدمت HTN بیش از مدل‌های زبانی است و هنوز هم مرجع اصلی طرح‌هایی با درستی اثبات‌پذیر به شمار می‌رود.

سامانه‌ی ChatHTN (Gopalakrishnan et al., 2025)

سامانه‌ی ChatHTN (arXiv:2505.11814) برنامه‌ریزی نمادین HTN را با پرس‌وجو از مدل زبانی ادغام می‌کند:

  1. تلاش می‌کند وظیفه‌ی مرکب فعلی را با متدهای موجود تجزیه کند.
  2. اگر هیچ متدی نخورد، از مدل زبانی می‌پرسد: «وظیفه‌ی task را در وضعیت s چطور تجزیه می‌کنی؟»
  3. پاسخ مدل زبانی را به زیروظایف کاندید ترجمه می‌کند.
  4. زیروظایف را با طرح‌واره‌ی (schema) عملگرها اعتبارسنجی می‌کند؛ تجزیه‌های نامعتبر را رد می‌کند.
  5. روند را بازگشتی ادامه می‌دهد.

ادعای محوری مقاله این است: تک‌تک طرح‌های تولیدشده درستی اثبات‌پذیر دارند؛ زیرا پیشنهادهای مدل زبانی صرفاً به‌عنوان کاندیدای تجزیه وارد مدار می‌شوند و هرگز مستقیماً طرح را ویرایش نمی‌کنند. لایه‌ی نمادین مالک صحت و درستی است؛ مدل زبانی هم کتابخانه‌ی متدها را گسترش می‌دهد.

یادگیری برخط متد (Online method learning؛ مقاله‌ی تکمیلی OpenReview gwYEDY9j2x در سال 2025) یادگیرنده‌ای اضافه می‌کند که تجزیه‌های تولیدی مدل زبانی را با رگرسیون تعمیم می‌دهد — و بسامد پرس‌وجو از مدل زبانی را تا 75% کاهش می‌دهد.

سامانه‌ی AlphaEvolve (Novikov et al., 2025)

سامانه‌ی AlphaEvolve (arXiv:2506.13131، محصول DeepMind، ژوئن 2025) ماجرای متفاوتی دارد: جست‌وجوی تکاملی کد به رهبری گروهی ترکیبی (ensemble) از مدل‌های Gemini 2.0 Flash و Pro.

حلقه‌ی کار:

  1. شروع با یک برنامه‌ی اولیه (seed) + یک ارزیاب کدنویسی‌شده (که امتیاز برازش می‌دهد).
  2. گروه ترکیبی مدل‌های زبانی جهش‌هایی پیشنهاد می‌کنند.
  3. اجرای کدهای جهش‌یافته درون ارزیاب.
  4. نگه‌داشتن بهترین نسخه و جهش دوباره.

دستاورد‌های منتشرشده:

  • نخستین بهبود نسبت به روش اشپراسن (Strassen) در ضرب ماتریس‌های مختلط 4x4 پس از 56 سال (با 48 ضرب اسکالر).
  • بازیابی 0.7% از منابع رایانشی گوگل با یک روش اکتشافی زمان‌بندی در Borg.
  • افزایش 32 درصدی سرعت FlashAttention روی بارهای کاری پیشرو.

محدودیت سفت‌وسخت: تابع برازش الزاماً باید توسط ماشین قابل‌ارزیابی باشد. جست‌وجوی تکاملی روی پاسخ‌های متنی معمولی همگرا نمی‌شود.

هر الگو را چه زمانی به کار ببریم؟

رده‌ی مسئله مورد استفاده چرا
زمان‌بندی با قیدهای سخت HTN + ChatHTN درستی اثبات‌پذیر
بهینه‌سازی کامپایلر AlphaEvolve تابع برازشِ قابل‌ارزیابی با ماشین
اجرای وظایف چندمرحله‌ای ReAct / ReWOO مدل زبانی در حلقه، بدون ضمانت‌های صوری
بهبود کد با داشتن تست AlphaEvolve تست‌ها نقش ارزیاب را بازی می‌کنند
خودکارسازی مقید به خط‌مشی‌ها HTN پیش‌شرط‌ها خط‌مشی‌ها را کدگذاری می‌کنند

لغزشگاه‌های این الگو

  • استفاده از HTN بدون عملگرها. بدون طرح‌واره‌های پیش‌شرط و اثر، ادعای درستی طرح فرو می‌ریزد. ویژگی «پیشنهاد تجزیه با مدل زبانی» در ChatHTN به همین طرح‌واره نیاز دارد تا حرکت‌های نامعتبر را رد کند.
  • استفاده از AlphaEvolve بدون ارزیاب واقعی. «پرسیدن از مدل زبانی که آیا کد بهتر شده یا نه» تابع برازش نیست. ارزیاب باید قطعی و سریع باشد.
  • مهندسی بیش‌ازحد (Over-engineering). اغلب وظایف ایجنت‌ها به هیچ‌کدام از این دو نیاز ندارند. در وهله‌ی اول سراغ ReAct یا ReWOO بروید.
تجزیه HTNباز شدن درخت وظایف
HTN DECOMPOSITIONAn HTN planner expands a compound task into methods, each method into subtasks, recursing until every leaf is a primitive operator whose preconditions hold. The tree is grown top-down; the plan is the left-to-right reading of the primitive leaves.deliver(pkg)برداشتنانتقالرانندگیبارگیریمسیریابیcompound -> methods -> primitive operators
یک برنامه‌ریز HTN یک وظیفه مرکب را به متدها و هر متد را به زیروظایف گسترش می‌دهد، و این بازگشت را تا زمانی ادامه می‌دهد که تمام برگ‌ها عملگرهای اولیه‌ای باشند که پیش‌شرط‌هایشان برقرار است. درخت از بالا به پایین رشد می‌کند؛ برنامه همان خوانش چپ‌به‌راست برگ‌های اولیه است.

پیاده‌سازی عملی

فایل 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 یا تکاملی) تولید می‌کند که در آن دامنه‌ی نقش مدل زبانی به‌طور دقیق مشخص شده است.

تمرین‌ها

  1. برنامه‌ریز HTN را با قابلیت پس‌گرد (backtracking) گسترش دهید: هرگاه پس‌شرطِ یک عملگر در زمان اجرا برقرار نشد، به عقب برگردد و متد بعدی را امتحان کند.
  2. کش متدهای مدل زبانی را به ChatHTN اضافه کنید: هر بار مدل زبانی وظیفه‌ی T را در الگوی وضعیت P تجزیه کرد، نتیجه را ذخیره کنید تا در فراخوانی بعدی، اول کتابخانه‌ی متدها بررسی شود.
  3. ارزیاب جست‌وجوی تکاملی را با یک مجموعه‌تست واقعی تعویض کنید. تابع مرتب‌سازی‌ای تکامل دهید که 20 مورد آزمون را پاس کند؛ تعداد نسل‌ها تا همگرایی را گزارش کنید.
  4. یادداشت‌های طراحی ارزیاب در AlphaEvolve را بخوانید. سپس برای دامنه‌ی کاری خودتان (بهینه‌سازی کوئری‌های SQL، کمینه‌سازی مجموعه‌تست یا فایل YAML استقرار) یک ارزیاب طراحی کنید.
  5. ترکیب هر دو: با HTN یک وظیفه‌ی مرکب را به زیروظایف تجزیه کنید، سپس جست‌وجوی تکاملی را روی عملگر اولیه‌ی هر زیروظیفه اعمال کنید. این روش کجا عالی جواب می‌دهد و کجا مهندسی بیش‌ازحد است؟

اصطلاحات کلیدی

اصطلاح در گفتار عام معنای دقیق فنی
HTN «برنامه‌ریز سلسله‌مراتبی» تجزیه‌ی وظیفه با عملگرها، پیش‌شرط‌ها و اثرات
متد (Method) «قاعده‌ی تجزیه» روش خرد کردن یک وظیفه‌ی مرکب به چند زیروظیفه
عملگر (Operator) «اقدام اولیه» گام مشخص و عینی با پیش‌شرط و اثر
ChatHTN «ترکیب مدل زبانی + HTN» برنامه‌ریز نمادین؛ وقتی هیچ متدی مطابقت نکند از مدل زبانی کمک می‌گیرد
AlphaEvolve «جست‌وجوی تکاملی کد» گروه ترکیبی مدل‌های زبانی کد را جهش می‌دهند؛ ارزیاب قطعی بهترین را برمی‌گزیند
تابع برازش (Fitness function) «ارزیاب» امتیازی قطعی و قابل‌ارزیابی توسط ماشین روی خروجی‌ها
یادگیری برخط متد (Online method learning) «تجزیه‌ی کش‌شده با مدل زبانی» ذخیره و تعمیم طرح‌های مدل زبانی برای کاهش هزینه‌ی پرس‌وجوها

برای مطالعه‌ی بیشتر

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسیک HTN چه مزیتی نسبت به برنامه‌ریزی آزاد LLM ایجاد می‌کند؟
  2. پیش از درسسیستم AlphaEvolve برای کدام دسته از مسائل ساخته شده است؟
  3. حین درسچگونه ChatHTN ضمن استفاده از یک LLM، صحت برنامه را حفظ می‌کند؟
  4. حین درسدرس به کدام نتیجه از AlphaEvolve اشاره می‌کند؟
  5. حین درسکدام جزء HTN یک کنش اولیه با قابلیت اجرای مستقیم است که پیش‌شرط و اثر دارد؟
  6. پس از درسهشدار درس در مورد استفاده از AlphaEvolve بدون ارزیاب واقعی چیست؟
  7. پس از درسدر چه مواردی به جای HTN یا AlphaEvolve باید به سراغ ReAct یا ReWOO رفت؟

سؤالات متداول

چه تفاوتی میان برنامه‌ریزی HTN و الگوهایی مثل ReAct وجود دارد؟

الگوی ReAct بر مبنای استدلال گام‌به‌گام مدل زبانی کار می‌کند و هیچ ضمانت ریاضی برای درستی طرح ندارد، در حالی که برنامه‌ریزی سلسله‌مراتبی وظایف (HTN) بر پایه‌ی قوانین منطقی صوری، پیش‌شرط‌ها و اثرات عملگرها عمل کرده و خروجی آن درستی اثبات‌پذیر دارد.

ایده‌ی اصلی معماری ChatHTN چیست؟

در ChatHTN برنامه‌ریزی نمادین اصل است؛ فقط زمانی که سیستم متدی برای شکستن یک وظیفه پیدا نکند از LLM کمک می‌گیرد. پیشنهاد مدل نیز مستقیماً وارد طرح نمی‌شود، بلکه ابتدا در قالب طرح‌واره‌ی عملگرها اعتبارسنجی شده و در صورت نامعتبر بودن رد می‌شود.

چرا الگوی AlphaEvolve به یک ارزیاب برنامه‌نویسی‌شده (ماشینی) نیاز دارد؟

زیرا جست‌وجوی تکاملی با تکیه بر یک تابع برازش (Fitness Function) قطعی و عددی هدایت می‌شود. پرسش کیفی از مدل زبانی نمی‌تواند امتیاز پایدار و قابل اتکایی برای بقای کدهای بهینه تولید کند و به همگرایی ختم نمی‌شود.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.