3-qism · Ilg'or imkoniyatlar·11-bob
Agent rejalashtirish va feedback
Agentni chatbotdan avtomatik fikrlaydigan tizimga aylantiruvchi qism. Ketma-ket va iterativ rejalashtirish, o'z rejachini qurish, feedback turlari va hammasini birlashtirish.
Reja qura olmaydigan, faqat oddiy muloqot qiladigan agent — bu shunchaki chatbot.
Butun kitob davomida maqsad bitta edi: bot emas, avtonom fikrlaydigan agent qurish — maqsadni olib, uni qanday yechishni o'ylab, natija bilan qaytadigan agent.
Bu — rejalashtirish. Va u agentni chatbotdan ajratib turadigan asosiy qism.
Rejalashtirish nima#
1-bobda ko'rgan sxemani eslang: foydalanuvchi maqsad beradi, agent uni qadamlarga bo'ladi, bajaradi va natija qaytaradi.
Reja qura oladi va qura olmaydi#
Farqni ko'rish uchun: xom LLM mustaqil reja qura olmaydi.
Maqsad bering: "Vikipediyadan mavzuni qidir, eng yaxshi sahifani qaytar va faylga saqla."
Xom LLM (rejasiz) buni bajara olmaydi — u faqat matn generatsiya qiladi, asboblarni ketma-ket chaqira olmaydi. Reja quruvchi agent esa buni qadamlarga bo'lib bajaradi.
- Agent butun rejani OLDINDAN tuzadi
- Qadamlar ichki bajariladi
- Yig'ish avtomatik
- Foydalanuvchi faqat yakuniy natijani ko'radi
- Har qadamdan keyin foydalanuvchidan «davom etamizmi?» so'raydi
- Qadamlar ko'rinadi
- Yig'ish qo'lda
- LLM'ning standart xatti-harakati
Planner qadamlarni ichkarida bajaradi va yakuniy natija beradi — avtonomroq. Iterativ usul har qadamda to'xtaydi — nazoratliroq, lekin ko'proq odam aralashuvi. Tanlov avtonomiya darajasiga bog'liq.
O'z rejachingizni qurish#
LangChain va Semantic Kernel tayyor plannerlar beradi. Lekin o'z plannerimizni yozish oson va o'rgatuvchi.
import json
import anthropic
client = anthropic.Anthropic()
def reja_tuz(maqsad, mavjud_asboblar, client):
"""Maqsadni bajariladigan qadamlar rejasiga bo'ladi."""
asboblar_matni = "\n".join(f"- {nom}: {tavsif}" for nom, tavsif in mavjud_asboblar.items())
prompt = f"""Maqsad: {maqsad}
Mavjud asboblar:
{asboblar_matni}
Bu maqsadga erishish uchun qadamlar rejasini tuz.
Har qadam: qaysi asbob, qanday argument bilan.
Natijani JSON qilib qaytar:
[{{"qadam": 1, "asbob": "...", "argument": "...", "sabab": "..."}}]"""
javob = client.messages.create(
model="claude-opus-5",
max_tokens=2048,
messages=[{"role": "user", "content": prompt}],
)
matn = "".join(b.text for b in javob.content if b.type == "text")
boshi, oxiri = matn.find("["), matn.rfind("]") + 1
return json.loads(matn[boshi:oxiri])
def rejani_bajar(reja, bajaruvchilar):
"""Rejadagi har qadamni ketma-ket bajaradi."""
natijalar = []
for qadam in reja:
print(f"[{qadam['qadam']}] {qadam['asbob']}: {qadam['sabab']}")
natija = bajaruvchilar[qadam["asbob"]](qadam["argument"])
natijalar.append(natija)
return natijalarIshlatish:
asboblar = {
"vikipediya_qidir": "Vikipediyadan mavzu bo'yicha sahifalarni topadi",
"sahifa_ol": "Sahifa ID bo'yicha matnni oladi",
"faylga_saqla": "Matnni faylga yozadi",
}
reja = reja_tuz("Kvant kompyuterlar haqida Vikipediyadan ma'lumot yig'ib faylga saqla",
asboblar, client)
natija = rejani_bajar(reja, BAJARUVCHILAR)Feedback: rejani o'zgartirish#
Qat'iy reja yetarli emas. Real dunyoda muhit o'zgaradi, qadamlar muvaffaqiyatsiz bo'ladi. Feedback rejani moslashtiradi.
- 1
- Muhit feedbackiHarakat natijasidan. Qidiruv bo'sh natija berdi, API xato qaytardi. Agent buni ko'rib rejani o'zgartiradi.
- 2
- Odam feedbackiFoydalanuvchidan. «Yo'q, bu emas», «boshqa yondashuv sina». Miqdoriy (baho) yoki sifatli (maslahat).
- 3
- LLM feedbackiBoshqa model (yoki o'zi) rejani baholaydi. «Bu qadam keraksiz», «bu tartib noto'g'ri». O'z-o'zini tuzatish.
Feedback bilan reja sikl bo'ladi:
def feedback_bilan_bajar(maqsad, asboblar, bajaruvchilar, client, maks_iter=5):
"""Reja tuzadi, bajaradi, baholaydi va kerak bo'lsa qayta rejalashtiradi."""
kontekst = ""
for iteratsiya in range(maks_iter):
# 1. Reja tuzamiz (oldingi kontekstni hisobga olib)
reja = reja_tuz(maqsad + "\n\nOldingi urinishlar: " + kontekst, asboblar, client)
# 2. Bajaramiz
natijalar = rejani_bajar(reja, bajaruvchilar)
# 3. LLM feedbacki — maqsad bajarildimi?
baho = client.messages.create(
model="claude-opus-5",
max_tokens=512,
messages=[{"role": "user",
"content": f"Maqsad: {maqsad}\nNatijalar: {natijalar}\n\n"
f"Maqsad to'liq bajarildimi? HA yoki YO'Q, va nima uchun."}],
)
baho_matni = "".join(b.text for b in baho.content if b.type == "text")
if "HA" in baho_matni.upper()[:20]:
return natijalar # maqsad bajarildi
kontekst += f"\nIteratsiya {iteratsiya}: {baho_matni}"
return "Maksimal iteratsiyaga yetildi"Hammasini birlashtirish#
Bu — butun kitobning cho'qqisi. Agent quramiz, unda barcha besh komponent birlashadi:
To'liq agentning ish oqimi:
1. PROFIL: agent rolini oladi (persona)
2. XOTIRA: o'tgan suhbatlar va bilimni tortadi
3. REJA: maqsadni qadamlarga bo'ladi
4. FIKRLASH: har qadamni CoT bilan o'ylaydi
5. HARAKAT: asboblarni chaqiradi
6. FEEDBACK: natijani baholaydi, kerak bo'lsa rejani tuzatadi
7. XOTIRA: yangi bilimni saqlaydi (keyingi safar uchun)
To'liq tadqiqot agentini quring
Butun kitobni birlashtiruvchi loyiha: barcha besh komponentli tadqiqot agenti.
- Profil — persona bilan
- Harakat — uch asbob (qidiruv, o'qish, saqlash)
- Reja — maqsadni qadamlarga bo'lish
- Fikrlash — har qadamni CoT bilan
- Feedback — natijani baholash, qayta rejalash
Murakkab maqsad bering: "[Mavzu] bo'yicha uch manbadan ma'lumot yig'ib, solishtirib, xulosa yoz va faylga saqla."
Kuzating:
- Agent qanday reja tuzdi?
- Qaysi qadamda feedback kerak bo'ldi va nima o'zgardi?
- Necha iteratsiya ketdi va jami narx qancha?
Himoyalarni unutmang: maks_iter, byudjet chegarasi, progress tekshiruvi.
Bu loyihani tugatsangiz — siz haqiqiy, to'liq agent qura olasiz. Bu butun kitobning maqsadi.
Maslahatni ko'rsatish
Barcha komponentlarni birlashtiring: 1. PROFIL: system message bilan «Siz sinchkov tadqiqotchisiz» 2. HARAKAT: uch asbob (qidiruv, fayl o'qish, saqlash) 3. REJA: maqsadni qadamlarga bo'ling (reja_tuz) 4. FIKRLASH: har qadamni CoT bilan 5. FEEDBACK: natijani baholang, kerak bo'lsa qayta rejalang Maqsad bering: «[Mavzu] bo'yicha uch manbadan ma'lumot yig'ib, solishtirib, xulosa yoz va faylga saqla» Kuzating: - Agent qanday reja tuzdi? - Qaysi qadamda feedback kerak bo'ldi? - Necha iteratsiya ketdi? - Jami narx qancha? Himoyalarni qo'shing: maks_iter, byudjet, progress tekshiruvi. Bu — kitobdagi hamma narsani birlashtiruvchi loyiha. Uni tugatsangiz, siz haqiqiy agent qura olasiz.
Xulosa#
- 01Reja qura olmaydigan agent — bu chatbot. Rejalashtirish agentni avtonom fikrlaydigan tizimga aylantiradi.
- 02Function calling reaktiv (har qadamda keyingisini tanlaydi), planner proaktiv (butun rejani oldindan tuzadi). Planner xatoni kamaytiradi, lekin qat'iy.
- 03Feedback qat'iy rejani moslashtiradi. Uch manba: muhit (natija), odam (baho), LLM (o'z-o'zini tuzatish).
- 04Refleksiya sikli xavfli — agent qotib qolishi mumkin. Maksimal iteratsiya, byudjet va progress tekshiruvi — uchtasi ham kerak.
- 05To'liq agent besh komponentni birlashtiradi: profil, harakat, xotira, fikrlash, reja+feedback. Har biriga kerakli darajada e'tibor.
- 06Hammasini birdan qurmang. Oddiydan boshlang, ehtiyoj paydo bo'lganda komponent qo'shing. Bu butun kitobning takrorlanuvchi darsi.
Kitob tugadi.
Biz LLM'ga oddiy so'rovdan boshladik va besh komponentli, reja tuzadigan, feedbackdan o'rganadigan avtonom agentgacha yetdik.
Eslab qolish kerak bo'lgan asosiy fikr: agent — bu besh komponentning birlashmasi. Profil, harakat, xotira, fikrlash, reja. Har qanday yangi vosita yoki freymvork — bu shu beshtaning boshqa qadoqlanishi, xolos.
Endi navbat sizniki. Kichik agentdan boshlang, komponentlarni birma-bir qo'shing va har o'zgarishni o'lchang.
Omad tilaymiz.