3-qism · Murakkab tizimlar·09-bob
Bitta va ko'p agentli tizimlar
Avtonom agentning modullari, til universal interfeys sifatida, ko'p agentli tizimni noldan qurish va biznes modellari — ishlaydigan kod bilan.
Sakkiz bob davomida agentga qismlar qo'shdik: xotira (RAG), sxema (graf), tajribadan o'rganish (RL).
Endi yangi savol: bitta agent yetarli bo'lmasa nima qilamiz?
Avtonom agentning to'rt moduli#
Har qanday jiddiy agent to'rt qismdan iborat:
- 1
- Profil — agent kim?Agentga rol beriladi: «Siz kod tekshiruvchi tajribali dasturchisiz». Bu tizim ko'rsatmasida yoziladi va agentning butun xatti-harakatini belgilaydi.
- 2
- Xotira — nimani eslaydi?Qisqa muddatli (suhbat), uzoq muddatli (RAG, graf) va refleksiya (tajribadan xulosa). 4-bobda batafsil ko'rgan edik.
- 3
- Reja — qanday bo'ladi?Murakkab vazifani qadamlarga bo'lish. Avval bo'lish yoki aralash bo'lish — 4-bobdagi strategiyalar.
- 4
- Harakat — qanday asboblar?API, kod, qidiruv, ma'lumotlar bazasi. Va — muhimi — BOSHQA MODELNI chaqirish. Bu keyingi bo'limning mavzusi.
Til — universal interfeys#
2023-yilda chiqqan HuggingGPT ishi agentlar sohasida burilish nuqtasi bo'ldi. G'oyasi juda oddiy va juda kuchli:
Har qanday AI modelini so'z bilan tasvirlash mumkin. Demak, LLM ularni boshqara oladi.
Muammo aniq edi: LLM faqat matn biladi. Rasmni ko'ra olmaydi, ovozni eshitmaydi. Ammo bu ishlarni bajaradigan minglab maxsus model allaqachon mavjud — va har birining matnli tavsifi bor.
Agar bu tavsiflarni LLM promptiga solsak — LLM ularni tanlay va chaqira oladi.
Ko'p agentli tizim quramiz#
Nazariyadan amaliyotga. Kontent yaratish tizimi quramiz — uchta agent, har biri o'z ishida.
import anthropic
client = anthropic.Anthropic()
class Agent:
"""Umumiy agent — rol va model bilan sozlanadi."""
def __init__(self, nom, korsatma, model="claude-opus-5"):
self.nom = nom
self.korsatma = korsatma
self.model = model
def bajar(self, vazifa: str) -> str:
javob = client.messages.create(
model=self.model,
max_tokens=4096,
system=self.korsatma,
messages=[{"role": "user", "content": vazifa}],
)
return "".join(b.text for b in javob.content if b.type == "text")
# Har agentga o'z roli
tadqiqotchi = Agent(
"Tadqiqotchi",
"Siz sinchkov tadqiqotchisiz. Mavzu bo'yicha asosiy faktlar va "
"statistikani aniq, manbalari bilan yig'asiz. Ortiqcha gap yozmaysiz.",
model="claude-opus-5",
)
yozuvchi = Agent(
"Yozuvchi",
"Siz mohir jurnalistsiz. Berilgan faktlardan qiziqarli, tushunarli "
"maqola yozasiz. Sodda til, aniq misollar.",
model="claude-opus-5",
)
muharrir = Agent(
"Muharrir",
"Siz talabchan muharrirsiz. Maqolani tekshirasiz: faktlar to'g'rimi, "
"til ravonmi, tuzilma mantiqiymi. Aniq tuzatishlar taklif qilasiz.",
model="claude-opus-5",
)Endi ularni ketma-ket ishlatamiz:
def maqola_yarat(mavzu: str) -> str:
print(f"[Tadqiqotchi] {mavzu} bo'yicha ma'lumot yig'ilmoqda...")
faktlar = tadqiqotchi.bajar(f"'{mavzu}' mavzusida asosiy faktlarni yig'ing.")
print("[Yozuvchi] maqola yozilmoqda...")
qoralama = yozuvchi.bajar(
f"Quyidagi faktlar asosida maqola yozing:\n\n{faktlar}"
)
print("[Muharrir] tekshirilmoqda...")
fikr = muharrir.bajar(
f"Quyidagi maqolani tahrir qiling va tuzatilgan variantini bering:\n\n{qoralama}"
)
return fikr
print(maqola_yarat("O'zbekistonda quyosh energiyasi"))Turli xil vositalarni birlashtirish#
Haqiqiy kuch — turli texnologiyalarni bir tizimda birlashtirishda. Sayohat rejalashtiruvchi misolida:
from sklearn.ensemble import RandomForestRegressor
from sentence_transformers import SentenceTransformer, util
import numpy as np
class ObHavoAgenti:
"""Sonli bashorat — LLM emas, tasodifiy o'rmon aniqroq va arzonroq."""
def __init__(self):
self.model = RandomForestRegressor(n_estimators=100)
def organ(self, tarixiy):
X = np.array([[d["oy"], d["kenglik"], d["uzunlik"]] for d in tarixiy])
y = np.array([d["ball"] for d in tarixiy])
self.model.fit(X, y)
def eng_yaxshi_oy(self, kenglik, uzunlik):
oylar = np.array([[oy, kenglik, uzunlik] for oy in range(1, 13)])
return int(np.argmax(self.model.predict(oylar))) + 1
class MehmonxonaAgenti:
"""Ma'no bo'yicha qidiruv — bu 5-bobdagi RAG'ning o'zi."""
def __init__(self, mehmonxonalar):
self.encoder = SentenceTransformer("all-MiniLM-L6-v2")
self.mehmonxonalar = mehmonxonalar
self.vektorlar = self.encoder.encode([m["tavsif"] for m in mehmonxonalar])
def tavsiya(self, afzalliklar, top_k=3):
s = self.encoder.encode(afzalliklar)
ballar = util.cos_sim(s, self.vektorlar)[0]
return [self.mehmonxonalar[i] for i in ballar.argsort(descending=True)[:top_k]]
class MarshrutAgenti:
"""Matn generatsiyasi — bu yerda LLM kerak."""
def __init__(self, agent):
self.agent = agent
def reja_tuz(self, yonalish, oy, mehmonxona, kun):
return self.agent.bajar(
f"{yonalish} shahriga {oy}-oyda {kun} kunlik sayohat rejasini tuzing. "
f"Turar joy: {mehmonxona['nom']}. Har kun uchun 3 ta faoliyat."
)Diqqat qiling: uch agent, uch xil texnologiya. Sonli bashorat uchun LLM ishlatish — uni sekinlashtirish va noaniqlashtirish demak.
Agentlar qanday muloqot qiladi#
Ko'p agentli tizimda o'zaro munosabat turlicha bo'lishi mumkin:
| Turi | Qanday | Misol |
|---|---|---|
| Hamkorlik | Birgalikda bitta maqsad sari | Yuqoridagi maqola tizimi |
| Muhokama | Har biri fikr aytadi, ko'pchilik ovozi | Tibbiy konsilium |
| Raqobat | O'yin nazariyasi, adversarial | AlphaGo o'zi bilan o'ynagan |
| Iyerarxiya | Boshqaruvchi taqsimlaydi, ijrochilar bajaradi | Menejer + xodimlar |
Muhokama misoli — bir agent yechim taklif qiladi, ikkinchisi tanqid qiladi:
def muhokama(savol, agent_a, agent_b, raundlar=3):
"""Ikki agent bir savolni muhokama qiladi."""
javob = agent_a.bajar(savol)
for i in range(raundlar):
tanqid = agent_b.bajar(
f"Savol: {savol}\n\nTaklif qilingan javob: {javob}\n\n"
f"Bu javobning zaif tomonlarini toping va yaxshilang."
)
javob = agent_a.bajar(
f"Savol: {savol}\n\nSizning javobingiz: {javob}\n\n"
f"Tanqid: {tanqid}\n\nJavobni yaxshilang."
)
return javobKo'p agent har doim ham yaxshiroq emas#
Bu bo'limni alohida o'qing, chunki u ommaviy tasavvurga zid.
- Haqiqiy ixtisoslashuv kerak — turli soha bilimi
- Parallel ish — bir-biriga bog'liq bo'lmagan vazifalar
- Nazorat kerak — bir agent boshqasini tekshiradi
- Muhokama sifatni oshiradi — murakkab qarorlar
- Narx muhim — ko'p agent bir necha barobar qimmat
- Kechikish muhim — agentlar gaplashishi vaqt oladi
- Vazifa oddiy — bo'lish ortiqcha murakkablik
- Nosozlikni tuzatish qiyin — ko'p qism ko'p nosozlik
Amaliy qoida: BITTA agentdan boshlang. Ko'p agentga faqat aniq sabab bo'lganda o'ting. «Ko'p agent zamonaviyroq eshitiladi» — bu sabab emas.
Biznes modellari#
Agent tizimi qurdingiz. Uni qanday sotasiz? To'rt asosiy model shakllangan.
Farqni bir misolda ko'ramiz:
SaaS: "Mana sizga hisobot quruvchi dastur, oyiga $50"
MaaS: "Modelga API orqali kirish, 1M token uchun $5"
DaaS: "Bizning ma'lumotlar bazasiga kirish, oyiga $500"
RaaS: "Har oy 100 ta malakali mijoz topib beraman, natija uchun to'laysiz"
Uch agentli tizim quring va bitta agent bilan solishtiring
Kod tekshirish tizimini ikki xil quring:
Variant A — uch agent: Tahlilchi (muammolarni topadi), Xavfsizlik (zaifliklarga qaraydi), Tuzatuvchi (kod yozadi).
Variant B — bitta agent: hammasini bir ko'rsatmada bajaradi.
Ikkalasini 10 ta kod namunasida sinang va o'lchang:
- Sifat — qancha haqiqiy muammo topildi? (qo'lda tekshiring)
- Narx — jami token
- Vaqt — necha soniya
Natijalarni jadvalga yozing.
Asosiy savol: uch agent qo'shimcha narxni oqladimi? Javobingizni raqamlar bilan asoslang.
Maslahatni ko'rsatish
G'oya: kod tekshirish tizimi - Agent 1 (Tahlilchi): kodni o'qib, muammolarni ro'yxatlaydi - Agent 2 (Xavfsizlik): faqat xavfsizlik zaifliklariga qaraydi - Agent 3 (Tuzatuvchi): tuzatilgan kod yozadi Solishtirish uchun BITTA agent varianti: bitta = Agent('Hammasi', 'Siz kod tekshiruvchisiz. Muammolar, ' 'xavfsizlik va tuzatishlarni bir javobda bering.') Har ikkalasini 10 ta kod namunasida sinang va o'lchang: - Sifat: qancha haqiqiy muammo topildi? (qo'lda tekshiring) - Narx: jami token (har chaqiruvda usage.input + output) - Vaqt: time.time() bilan Jadval: variant topilgan_muammo narx vaqt ------------------------------------------------ bitta agent 8 $0.04 3s uch agent 11 $0.15 9s Savol: uch agent 3 ta ko'proq muammo topdi, lekin 4 barobar qimmat. Bu arziydimi? Javob loyihaga bog'liq — muhokama qiling.
Xulosa#
- 01Til — universal interfeys. Agar biror narsani so'z bilan tasvirlay olsangiz, LLM uni boshqara oladi. Yangi qobiliyat qo'shish uchun qayta o'qitish shart emas.
- 02Har bir ishga o'z vositasi. Ko'p agentli tizimning kuchi turli texnologiyalarni birlashtirishda. Hamma joyga LLM qo'yish — xato.
- 03Agentlar tabiiy tilda gaplashadi. Bu tizimni kuzatiladigan qiladi. Loglang.
- 04Ko'p agent har doim ham yaxshiroq emas. Tadqiqotlar ko'rsatishicha, foyda ko'pincha kichik. Bitta agentdan boshlang.
- 05RaaS — AI agentlari mumkin qilgan yangi biznes modeli. Natijani sotasiz. Lekin butun xavf sizda.
Keyingi bobda oxirgi qadamni qo'yamiz: bularning hammasidan haqiqiy, ishlaydigan mahsulot qanday quriladi. Interfeys, xatolarni boshqarish, tezlashtirish va Docker bilan joylashtirish.