aidoc.uz

2-qism · Agentlarni qurish·04-bob

Ko'p agentli tizimlar

AutoGen va CrewAI bilan bir necha agent hamkorlik qiladigan tizimlar qurish. UserProxy, tanqidchi agentlar, guruh chati va agent ekipaji — ishlaydigan kod bilan.

Bitta agent bitta ishni qiladi. Lekin kod yozuvchi + tester + tanqidchi birga ishlasa — natija sifati keskin oshadi.

Bu bobda ikki asosiy vositani ko'ramiz: AutoGen (Microsoft) va CrewAI. Ikkalasi ham bir necha agentni bir tizimda birlashtiradi, lekin turli falsafa bilan.

AutoGen: suhbatlashuvchi agentlar#

AutoGen tadqiqotdan tug'ilgan va kengaytirilgan. Uning yuragida ikki tur agent bor:

1
ConversableAgent
LLM bilan bevosita gaplashadigan agent. U vazifani bajaradi — kod yozadi, savolga javob beradi.
2
UserProxyAgent
Foydalanuvchi nomidan ish qiluvchi agent. U suhbatni boshqaradi, kodni ishga tushiradi va — muhimi — kerak bo'lganda odamdan feedback so'raydi.

O'rnatish#

terminal
pip install pyautogen
Successfully installed pyautogen-0.2.32 ...

Sozlama fayli OAI_CONFIG_LIST — modelni ulaydi:

[
    {
        "model": "gpt-4",
        "api_key": "sizning-kalitingiz",
        "tags": ["gpt-4", "tool"]
    }
]

Ikki agentli tizim#

from autogen import ConversableAgent, UserProxyAgent, config_list_from_json
 
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST")
 
# Vazifani bajaradigan agent
assistant = ConversableAgent(
    "agent",
    llm_config={"config_list": config_list},
)
 
# Foydalanuvchi nomidan ish qiluvchi agent
user_proxy = UserProxyAgent(
    "user",
    code_execution_config={
        "work_dir": "working",        # kod shu papkada saqlanadi
        "use_docker": False,          # xavfsizlik uchun True tavsiya etiladi
    },
    human_input_mode="ALWAYS",        # har qadamda odamdan so'raydi
    is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),
)
 
# Suhbatni boshlaymiz
user_proxy.initiate_chat(
    assistant,
    message="Fizz-buzz masalasini bir qatorda yeching",
)
user_proxy → assistant
«fizz-buzz yeching»
assistant kod yozadi
LLM javob beradi
user_proxy odamdan so'raydi
«feedback?» — Enter bosasiz
user_proxy kodni ISHGA TUSHIRADI
kerak bo'lsa paketlarni ham o'rnatadi
natija ko'rsatiladi
TERMINATE bo'lguncha takrorlanadi
AutoGen sikli: agent kod yozadi, proksi ishga tushiradi, natija tekshiriladi

Tanqidchi agent qo'shish#

Ko'p agentning eng kuchli tomoni — rollar. Kod yozildi, lekin uni tekshirsak-chi?

# Kod yozuvchi
coder = ConversableAgent(
    "coder",
    system_message="Siz tajribali Python dasturchisiz. Toza, ishlaydigan kod yozasiz.",
    llm_config={"config_list": config_list},
)
 
# Tanqidchi
critic = ConversableAgent(
    "critic",
    system_message="""Siz talabchan kod tekshiruvchisiz. Kodni tekshirasiz:
    - Xatolar bormi?
    - Xavfsizlik zaifliklari bormi?
    - Uslub to'g'rimi?
    Aniq muammolarni ko'rsatasiz va yaxshilanish taklif qilasiz.""",
    llm_config={"config_list": config_list},
)
 
# Ular birga ishlaydi — coder yozadi, critic tekshiradi, coder tuzatadi

Bu muhokama naqshi: bir agent yechim beradi, ikkinchisi tanqid qiladi, birinchisi yaxshilaydi. Natija bitta agentnikidan sifatliroq bo'ladi.

Guruh chati#

Ikki agent yetarli bo'lmasa — guruh chati. Bir necha agent bitta suhbatda:

from autogen import GroupChat, GroupChatManager
 
agentlar = [coder, critic, tester, user_proxy]
 
guruh = GroupChat(agents=agentlar, messages=[], max_round=12)
manager = GroupChatManager(groupchat=guruh, llm_config={"config_list": config_list})
 
user_proxy.initiate_chat(manager, message="Kalkulyator ilovasini yozing va test qiling")

Manager qaysi agent qachon gapirishini boshqaradi. Coder yozadi, tester test yozadi, critic tekshiradi — hammasi bitta suhbatda.


CrewAI: agent ekipaji#

CrewAI yangiroq va korxona tizimlari uchun mo'ljallangan. AutoGen tadqiqotdan o'sgan bo'lsa, CrewAI amaliyot uchun qurilgan — mustahkamroq, lekin ba'zi joylarda kamroq moslashuvchan.

Asosiy farq: CrewAI'da UserProxy kerak emas — agentlar faqat o'zaro ishlaydi.

Crew (ekipaj)
butun tizim — agentlar va vazifalarni birlashtiradi
Agents (agentlar)
har birida rol, maqsad, backstory (persona)
Tasks (vazifalar)
har agentga biriktiriladi
Tools (asboblar)
qidiruv, API, ma'lumot
Memory (xotira)
suhbat, vazifa, semantik — RAG bilan
CrewAI tuzilishi: agentlar, vazifalar, asboblar, xotira

Agentlarni ta'riflash#

CrewAI AutoGen'dan ko'proq sozlama talab qiladi — bu ko'proq nazorat beradi:

from crewai import Agent, Crew, Process, Task
from dotenv import load_dotenv
 
load_dotenv()
 
tadqiqotchi = Agent(
    role="Katta hazil tadqiqotchisi",
    goal="{mavzu} nima uchun kulgili ekanini o'rganish",
    verbose=True,                     # terminalga chiqishni ko'rsatadi
    memory=True,                      # xotira yoqilgan
    backstory=(
        "Siz tajribali hazil tadqiqotchisiz. Odamlarni nima kuldirishini "
        "bilasiz. Kundalik holatlardagi kulgilini topib, zerikarli lahzani "
        "kulgiga aylantira olasiz."
    ),
    allow_delegation=True,            # boshqa agentga vazifa topshira oladi
)
 
yozuvchi = Agent(
    role="Hazil yozuvchisi",
    goal="{mavzu} bo'yicha kulgili hazil yozish",
    verbose=True,
    memory=True,
    backstory=(
        "Siz hazil yozuvchisisiz. Oddiy g'oyani kulgi portlashiga "
        "aylantira olasiz. So'z bilan o'ynashni bilasiz."
    ),
)

Vazifalar va ekipaj#

# Vazifalarni ta'riflaymiz
tadqiqot_vazifasi = Task(
    description="{mavzu} nima uchun kulgili ekanini tahlil qil",
    expected_output="Kulgi manbalarining qisqa ro'yxati",
    agent=tadqiqotchi,
)
 
yozuv_vazifasi = Task(
    description="Tadqiqotga tayanib {mavzu} haqida hazil yoz",
    expected_output="Bitta kulgili hazil",
    agent=yozuvchi,
)
 
# Ekipajni yig'amiz
ekipaj = Crew(
    agents=[tadqiqotchi, yozuvchi],
    tasks=[tadqiqot_vazifasi, yozuv_vazifasi],
    process=Process.sequential,       # ketma-ket: avval tadqiqot, keyin yozuv
)
 
natija = ekipaj.kickoff(inputs={"mavzu": "dasturchilar"})
print(natija)

Ketma-ket va iyerarxik ishlov#

CrewAI ikki turdagi ishlovni qo'llab-quvvatlaydi:

Ketma-ket (sequential)
  • Vazifalar navbat bilan bajariladi
  • Bir agent natijasi keyingisiga o'tadi
  • Oddiy, bashoratli oqim
  • Ko'p holat uchun yetarli
Iyerarxik (hierarchical)
  • Menejer agent vazifalarni taqsimlaydi
  • Ishchi agentlar bajaradi
  • Murakkab, moslashuvchan
  • Katta, ko'p bosqichli loyihalar uchun

Boshlash uchun ketma-ket. Vazifa murakkablashib, dinamik taqsimlash kerak bo'lganda iyerarxikka o'ting.


AutoGen yoki CrewAI?#

AutoGen
  • Tadqiqotdan o'sgan — moslashuvchan
  • UserProxy bilan odam feedbacki oson
  • Kod ishga tushirish kuchli
  • Ko'proq eksperimental erkinlik
CrewAI
  • Korxona uchun qurilgan — mustahkam
  • Rol/maqsad/backstory aniq tuzilma
  • Ko'proq sozlama, ko'proq nazorat
  • Ba'zi joyda kamroq moslashuvchan

Tez tajriba va odam-ichida-sikl uchun AutoGen. Aniq tuzilgan, production-ga yaqin tizim uchun CrewAI. Ikkalasi ham OpenAI-mos, ya'ni istalgan modelga ishlaydi.

Amaliy topshiriq

Kod tekshiruvchi ekipaj quring

Kod yozadigan, test yozadigan va tekshiradigan uch agentli ekipaj quring (AutoGen yoki CrewAI).

Keyin solishtiring:

  1. Bir xil vazifani bitta agentga bering
  2. Uch agentli ekipajga bering
  3. Natija sifatini va narxni o'lchang

Savollar:

  • Uch agent kod sifatini oshirdimi?
  • Necha barobar qimmat bo'ldi?
  • Qo'shimcha narx oqlandimi? Javobingizni raqamlar bilan asoslang.
Maslahatni ko'rsatish

AutoGen yoki CrewAI tanlang (CrewAI aniqroq tuzilgan). CrewAI bilan uch agent: coder = Agent(role='Dasturchi', goal='{vazifa} uchun Python kod yoz', backstory='Siz tajribali dasturchisiz...') tester = Agent(role='Tester', goal='Kod uchun testlar yoz va ishga tushir', backstory='Siz sinchkov testersiz...') reviewer = Agent(role='Tekshiruvchi', goal='Kodni xavfsizlik va sifat uchun tekshir', backstory='Siz talabchan code reviewersiz...') Uch vazifa yarating, ketma-ket process bilan Crew qiling. Solishtiring: 1. Bitta agentga bir xil vazifani bering 2. Uch agentli ekipajga bering 3. Natija sifatini va NARXNI solishtiring AgentOps yoki oddiy hisoblash bilan har chaqiruvni sanang. Uch agent qo'shimcha narxni oqladimi?


Xulosa#

Yodda saqlang
  • 01AutoGen tadqiqotdan o'sgan va moslashuvchan; CrewAI korxona uchun qurilgan va mustahkam. Ikkalasi ham OpenAI-mos.
  • 02AutoGen'da UserProxyAgent odam feedbackini va kod ishga tushirishni boshqaradi. Kodni Docker'da ishga tushiring — xavfsizlik uchun majburiy.
  • 03Tanqidchi agent qo'shish — ko'p agentning eng kuchli tomoni. Bir yozadi, ikkinchisi tekshiradi, natija sifatliroq.
  • 04CrewAI'da agent = rol + maqsad + backstory. Backstory boy bo'lsa, xatti-harakat izchilroq.
  • 05Ketma-ket ishlov oddiy va yetarli; iyerarxik murakkab loyihalar uchun. Boshlash uchun ketma-ket.
  • 06Ko'p agent ko'p narx. Tadqiqotlar ko'pincha kichik yaxshilanish ko'rsatadi. Aniq sabab bo'lganda o'ting va sarfni kuzating.

Keyingi bobda agentlarga haqiqiy harakat berishni ko'ramiz: OpenAI function calling va Semantic Kernel bilan agent tashqi funksiyalarni chaqiradigan qilamiz.