برنامه ریزی با HTN و جستجوی تکاملی
Type: Build
Languages: Python (stdlib)
Prerequisites: Phase 14 · 02 (ReWOO and Plan-and-Execute)
Time: ~75 minutes
اهداف یادگیری
- شبکه های وظیفه ای سلسله مراتبی را توضیح دهید: وظایف، روش ها، اپراتورها، پیش شرط ها، اثرات.
- حلقه های ترکیبی ChatHTN را با تجزیه برگشت LLM توصیف کنید.
- حلقه تکاملي آلفا ايولف رو شرح بده و چرا فقط با يه ارزیابی کننده برنامه اي کار ميکنه
- برنامه ريزي بازي هاي HTN و جستجو تکامل بازي هاي بازي در stdlib رو اجرا کن
مشکل
ReWOO (درسی 02), برنامه ریزی و اجرای، و ReAct پوشش بیشتر برنامه ریزی عوامل. دو مورد آنها را به خوبی پوشش نمی دهند:
- Plans with provable correctness.برنامه ریزی، مسیر پرواز، جریان کار مطابق برنامه باید از طریق ساخت درست باشد. یک برنامه LLM روان که گاهی اوقات یک مرحله را توهم می دهد قابل قبول نیست.
- Optimizations with a machine-checkable fitness function.ضرب ماتریکس، برنامه ریزی هوریستیک، مرور ساز هدف "خطای صحیح" نیست بلکه "بهترین خط" است.
برنامه ریزی HTN و AlphaEvolve دو مشکل مختلف را حل می کنند. هر دو LLM را به عنوان تقویت کننده، نه جایگزین استفاده می کنند.
مفهوم
شبکه های وظیفه سلسله مراتبی
یک HTN عبارت است از:
- Tasks ترکیب (که تجزیه می شود) و ابتدایی (که به طور مستقیم اجرا می شود).
- Methods راه هایی برای تجزیه یک کار مرکب به زیرکار با شرایط پیش فرض.
- Operators اقدامات ابتدایی با شرایط پیش فرض و اثرات.
- State مجموعه ای از حقایق
برنامه ریزی: با توجه به یک وظیفه هدف و یک حالت اولیه، تجزیه به اپراتورهای ابتدایی که شرایط پیش فرض آنها به ترتیب برآورده می شود را پیدا کنید.
HTN از LLM ها قدیمی تر است و هنوز هم مرجع برای برنامه های ثابت شده درست است.
ChatHTN (گوپالاکریشانان و همکارانش، 2025)
ChatHTN (arXiv:2505.11814) HTN نمادین را با سوالات LLM متقابل می کند:
- سعی کنید وظیفه ی ترکیب فعلی را با روش های موجود تجزیه کنید.
- اگر هیچ روش ای مورد استفاده قرار نگیرد، از LLM بپرسید: "چگونه می خواهید تجزیه کنید
taskدر ایالتs؟ " - پاسخ LLM را به زیرکار های کاندید ترجمه کنید.
- با شیما عامل تأیید کنید؛ تجزیه های باطل را رد کنید.
- تکرار کن
ادعای اصلی مقاله: هر طرح تولید شده به طور اثبات شده معتبر است زیرا پیشنهادات LLM فقط به عنوان تجزیه نامزدی، هرگز به عنوان ویرایش مستقیم برنامه وارد می شوند. لایه نمادین درست است؛ LLM کتابخانه روش را گسترش می دهد.
یادگیری روش های آنلاین (OpenReview gwYEDY9j2xدر سال 2025 (در سال های بعدی) یک دانش آموز را اضافه می کند که تجزیه تولید شده توسط LLM را با بازگشت به طور کلی کاهش می دهد فرکانس سوالات LLM را تا 75 درصد کاهش می دهد.
AlphaEvolve (Novikov و همکارانش، 2025)
آلفا ایولو (arXiv:2506.13131, DeepMind، ژوئن 2025) یک حیوان متفاوت است: جستجوی کد تکاملی که توسط یک گروه دوقلو 2.0 Flash / Pro اجرا می شود.
لوله:
- با یک برنامه تخم مرغ + یک ارزیابی کننده برنامه (بازرس نمره تناسب اندام) شروع کنید.
- مجموعه ی LLM ها جهش ها را پیشنهاد می کنند.
- جهش ها رو از طریق ارزیابی کننده انجام بده
- بهترین ها رو نگه دار، دوباره جهش کن
برندهای منتشر شده:
- اولین پیشرفت نسبت به استراسن برای ضرب ماتریک پیچیده 4x4 در 56 سال (48 ضرب اسکالر)
- 0.7 درصد از آنها از طریق برنامه ریزی بورگ حساب گوگل را بازیابی کردند.
- 32 درصد سرعت افزايش توجه فلاش در بار کاري مرز
محدودیت سخت: عملکرد تناسب اندام باید قابل چک ماشین باشد. جستجوی تکامل در پاسخ های درنتیجه به هم نمی رسد.
چه زمانی باید از کدام استفاده شود؟
| Problem class | Use | Why |
|---|---|---|
| Scheduling with hard constraints | HTN + ChatHTN | Provable soundness |
| Compiler optimization | AlphaEvolve | Machine-checkable fitness |
| Multi-step task execution | ReAct / ReWOO | LLM in the loop, no formal guarantees |
| Code improvement with tests | AlphaEvolve | Tests are the evaluator |
| Policy-bound automation | HTN | Preconditions encode policy |
جایی که این الگوی اشتباه می شود
- HTN without operators.بدون طرح های پیش شرط / اثر ادعای صلحی سقوط می کند. "LLM نشان می دهد تجزیه" ChatHTN نیاز به طرح برای رد حرکات باطل.
- AlphaEvolve without a real evaluator." از استاد ارشد بپرس که آیا کد بهتر است " یک تابع تناسب اندام نیست. ارزیابی کننده باید تعیین کننده و سریع باشد.
- Over-engineering.بیشتر وظایف مامورها هم نیازی به این نیست، اول به ReAct یا ReWOO برسن
آن را بسازید
code/main.pyدو اسباب بازی را اجرا می کند:
- یک برنامه ریز HTN stdlib با اپراتورها، روش ها، شرایط پیش فرض، اثرات و یک
LLMFallbackاین روش در زمانی که هیچ روش ای با یک کار ترکیبی مطابقت ندارد، کار می کند. LLM یک تجزیه کننده اسکریپت شده است، بنابراین برنامه نویس غیر فعال می شود. - یک جستجوی تکاملی در مورد برنامه های ریاضی: عبارت های رشد که تولید آن به حداقل می رسد
|f(x) - target|در مورد یک مجموعه تست. ارزیابی کننده تعیین کننده است.
اجرا کن
python3 code/main.pyردیابی نشان می دهد که برنامه ریز HTN یک کار ترکیبی را تجزیه می کند (با سقوط LLM در میان برنامه) و حلقه تکاملی در یک عبارت هدف همگام می شود.
ازش استفاده کن
- HTN planners
pyhop،SHOP3، یا ساخت خود را برای اجرای سیاست های خاص حوزه. - ChatHTN کد تحقیق؛ الگوی (نمایی + LLM fallback) به طور تمیز به هر برنامه نویس HTN می رسد.
- AlphaEvolve کاغذ DeepMind؛ الگوی (جامعه + ارزیابی کننده) قابل بازیافت است. OpenEvolve و فورک های منبع باز مشابه در حال ظهور هستند.
- Agent frameworks هنوز هیچ کشتی ای از کلاس اول HTN یا AlphaEvolve وجود ندارد.
-باده
outputs/skill-hybrid-planner.mdیک استفادۀ برنامه ریزی های ترکیبی (HTN یا تکاملی) را با نقش LLM به طور صریح مشخص می کند.
تمرینات
- برنامه ریزی کننده HTN را با عقب نشینی گسترش دهید: هنگامی که حالت پس از کار در زمان اجرا شکست می خورد، عقب نشینی کنید و روش بعدی را امتحان کنید.
- یک حافظه ی حافظه ی روش LLM را به ChatHTN اضافه کنید: وقتی LLM وظیفه را تجزیه کند
Tدر حالت حالتP، نتیجه رو ذخیره کن، ابتدا در تماس بعدی کتابخانه روش رو دوباره چک کن - ارزیابی کننده جستجوی تکاملی را به یک مجموعه آزمایش واقعی تغییر دهید. یک تابع مرتب سازی را توسعه دهید که 20 مورد آزمایش را عبور می کند؛ نسل ها را به تقارب گزارش دهید.
- یادداشت های طراحی ارزیابی کننده AlphaEvolve را بخوانید. یک ارزیابی کننده را برای یک دامنه که به آن اهمیت می دهید (توسال بهینه سازی سوال SQL، کم کردن مجموعه آزمایش، پیاده سازی YAML) طراحی کنید.
- ترکیب: با استفاده از HTN یک کار ترکیب را به زیر وظایف تجزیه کنید، سپس با استفاده از جستجوی تکاملی در هر عامل اولیه زیر وظایف استفاده کنید. کجا درخشش می دهد، کجا بیش از حد مهندسی می کند؟
اصطلاحات کلیدی
| Term | What people say | What it actually means |
|---|---|---|
| HTN | "Hierarchical planner" | Task decomposition with operators, preconditions, effects |
| Method | "Decomposition rule" | Way to break a compound task into subtasks |
| Operator | "Primitive action" | Concrete step with precondition and effect |
| ChatHTN | "LLM + HTN" | Symbolic planner asks LLM when no method matches |
| AlphaEvolve | "Evolutionary code search" | Ensemble LLMs mutate code; deterministic evaluator selects |
| Fitness function | "Evaluator" | Deterministic, machine-checkable score over outputs |
| Online method learning | "Cached LLM decomposition" | Store + generalize LLM plans to cut query cost |
خواندن بیشتر
- Gopalakrishnan et al., ChatHTN (arXiv:2505.11814) رمزگشایی + برنامه ریز ترکیبی LLM
- Novikov et al., AlphaEvolve (arXiv:2506.13131) جستجوی کد تکاملی با جهش LLM
- Anthropic, Building Effective Agents چه زمانی برای یک برنامه رزی در مقابل یک حلقه ساده
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.