Plan-and-execute — bu rejalashtirish va ijroni ikkita alohida rolga bo‘ladigan arxitektura. Bu agentni sezilarli darajada ishonchli qiladi.
Ikki rol
┌──────────┐ reja ┌──────────┐
│ Planer │ ────────────→ │ Bajaruvchi│
│ │ │ │
│ "nima │ │ "har │
│ qilish" │ ←──────────── │ qadamni │
└──────────┘ natija │ bajarish"│
└──────────┘
- Planer — vazifani qadamlarga bo‘ladi. LLM’ni bir marta «rejalash rejimida» ishlatadi.
- Bajaruvchi — har bir qadamni ketma-ket bajaradi. Har qadam uchun LLM’ni chaqiradi.
Nima uchun bu yaxshi?
- Arzonroq — reja bir marta tuziladi, qayta fikrlash kam.
- Ishonchli — bajaruvchi faqat bitta qadamga e’tibor qaratadi.
- Kuzatiladigan — reja va bajarilgan qadamlar aniq ko‘rinadi.
- Qayta urinish oson — muvaffaqiyatsiz qadamni alohida tuzatish mumkin.
Oddiy implementatsiya
class PlanAndExecute:
def __init__(self, planner_llm, executor_llm, tools):
self.planner = planner_llm
self.executor = executor_llm
self.tools = {t.name: t for t in tools}
def run(self, task):
plan = self.planner(f"Vazifa uchun reja tuz: {task}")
results = []
for step in plan.steps:
output = self.executor(f"Qadamni bajar: {step}", results)
results.append(output)
return self.executor(f"Yakuniy javobni tuz: {task}", results)
Qayta rejalashtirish
Ba’zi hollarda bajaruvchi qadamni bajara olmaydi (tool xato berdi, ma’lumot yetarli emas). Keyin rejani qayta ko‘rib chiqish kerak:
Bajaruvchi: "2-qadam bajarilmadi: API 500 xato qaytardi"
Planer: "Rejani yangilayman: 2-qadamni boshqa API bilan almashtiraman"
Muhim
Qayta rejalashtirish ham chegaralangan bo‘lishi kerak (masalan, maksimal 2 marta). Aks holda planer cheksiz yangi reja tuzishi mumkin.
Qachon ishlatiladi?
Plan-and-execute mos keladi, qachonki:
- vazifa 5+ qadamdan iborat bo‘lsa;
- qadamlar ketma-ket bajarilsa;
- reja tuzish arzon bo‘lsa (bir marta);
- kuzatilishi muhim bo‘lsa.
Xulosa
Plan-and-execute — rejalashtirishni alohida rolda ajratadigan kuchli arxitektura. U agentni arzonroq, ishonchliroq va kuzatiladigan qiladi.