
miniEvoAgent nima?
miniEvoAgent LLM asosidagi agentlar qanday tuzilishi va takomillashtirilishini o‘rganish uchun mo‘ljallangan ixcham Python freymvorkidir. EvoAgentX dan ilhomlangan holda, u agentni ishga tushirish, vositalarni chaqirish, baholash, promptni qayta yozish va o‘z-o‘zini rivojlantirishning asosiy tushunchalarini saqlab qoladi, biroq katta agent freymvorkining murakkabligini olib tashlaydi.
Paket hozirda evo_repro deb nomlangan. Uning ataylab ixcham dizayni har bir mexanizmni o‘qish, test qilish va kengaytirishni osonlashtiradi. Ish jarayoni grafiklari, xotira, vizual muharrirlar, benchmark adapterlari yoki katta vositalar ekotizimini taqdim etish o‘rniga, u shaffof bir harakatli agent va promptni rivojlantirish sikliga e’tibor qaratadi.
Freymvork qanday ishlaydi
miniEvoAgent ilovasi bir nechta aniq yo‘naltirilgan komponentlardan tuziladi:
- PromptTemplate: Vazifa kiritmalarini prompt shabloniga joylaydi.
- Action: LLMni chaqiradi, zarurat bo‘lsa vositalarni bir necha bosqichda ishga tushiradi va yakuniy javobni tahlil qiladi.
- Agent: Harakatni o‘rab, strukturali xabar qaytaradi.
- Evaluator funksiyalari: QA bashoratlarini exact match, token darajasidagi F1 va aniqlik orqali baholaydi.
- PromptRewriter: Optimallashtiruvchi LLM yordamida aniq fikr-mulohaza misollaridan kelib chiqib, qayta ko‘rib chiqilgan promptni taklif qiladi.
- PromptSelector: Bir xil ishlab chiqish to‘plamida ota promptni nomzod prompt bilan taqqoslaydi va yaxshiroq natija ko‘rsatganini saqlab qoladi.
- evolve: O‘qitishni ishga tushirish, fikr-mulohaza yaratish, qayta yozish, baholash va tanlash jarayonlarini takrorlaydi.
Asosiy imkoniyatlar
- Minimal va tekshirish oson bo‘lgan bir harakatli agent abstraksiyasi.
- Muhit o‘zgaruvchilari yoki mahalliy
.envfayli orqali sozlanadigan OpenAI bilan mos LLM adapteri. - OpenAI uslubidagi funksional vositalar va vositalarni bir necha bosqichda ishga tushirish.
- Optimallashtiruvchi LLM orqali fikr-mulohazaga asoslangan promptni qayta yozish.
- Nomzod faqat ballni yaxshilaganida qabul qilinadigan ishlab chiqish to‘plami asosidagi tanlov.
- O‘qitish jarayonlari, qayta yozish kiritmalari, ishlab chiqish ballari va tanlov qarorlarini o‘z ichiga oluvchi rivojlanish izlari.
- Masofaviy API chaqiruvlarisiz freymvork xatti-harakatlarini test qilish uchun deterministik soxta LLMlar.
miniEvoAgentni o‘rnatish
Talablar
Python 3.10 yoki undan yangiroq versiyasidan foydalaning. Quyidagi PowerShell buyruqlari repozitoriyga kiradi, virtual muhit yaratadi, uni faollashtiradi, pipni yangilaydi va paketni tahrirlanadigan rejimda o‘rnatadi:
cd D:\Projects\RSIProject\student-project\Evo-repro
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip
python -m pip install -e .Tahrirlanadigan rejimda o‘rnatish manba kodini o‘rganish yoki o‘zgartirishda foydalidir, chunki mahalliy paket o‘zgarishlari Python muhitingizda darhol mavjud bo‘ladi.
OpenAI bilan mos LLMni sozlash
Standart OpenAILLM adapteri sozlamalarni muhit o‘zgaruvchilari yoki mahalliy .env faylidan o‘qiydi. PowerShellda API kaliti va modelni quyidagicha belgilang:
$env:OPENAI_API_KEY="your_api_key"
$env:OPENAI_MODEL="gpt-4o-mini"Agar boshqa OpenAI bilan mos xizmatdan foydalansangiz, uning endpointini belgilang:
$env:OPENAI_BASE_URL="https://your-compatible-endpoint/v1"Shuningdek, .env.example faylini .env nomi bilan nusxalab, o‘sha yerga xuddi shu konfiguratsiya qiymatlarini qo‘shishingiz mumkin.
Oddiy savol-javob agentini yaratish
Oddiy agentga LLM, prompt shabloni, chiqish tahlilchisi va harakat kerak bo‘ladi. Shundan so‘ng agent ushbu qismlarni sodda ishga tushirish interfeysi orqali taqdim etadi.
from evo_repro import Action, Agent, OpenAILLM, PromptTemplate, TextOutputParser
llm = OpenAILLM()
action = Action(
name="answer_question",
prompt_template=PromptTemplate(
template="Quyidagi savolga javob bering:\n\n{question}"
),
llm=llm,
output_parser=TextOutputParser(),
)
agent = Agent(
name="qa_agent",
description="Bitta foydalanuvchi savoliga javob beradi.",
action=action,
)
message = agent.execute({
"question": "Retrieval-Augmented Generation nima?"
})
print(message.content)agent.execute ga berilgan question kaliti shablondagi {question} o‘rnini bosuvchiga mos keladi. Harakat promptni hosil qiladi, uni sozlangan LLMga yuboradi, qaytarilgan matnni tahlil qiladi va natijani strukturali xabarga o‘raydi.
Biriktirilgan misolni ham ishga tushirishingiz mumkin:
python examples\simple_agent.pyChaqiriladigan Python vositasini qo‘shish
miniEvoAgent vositalari Python funksiyalarining yupqa o‘ramlaridir. Har bir vosita model funksiyani chaqirishda foydalanishi mumkin bo‘lgan JSON sxemasini taqdim etadi va strukturali ToolResult qaytaradi.
Paketda get_word_length_tool mavjud bo‘lib, uni tools argumenti orqali harakatga biriktirish mumkin:
from evo_repro import Action, Agent, OpenAILLM, PromptTemplate, TextOutputParser
from evo_repro import get_word_length_tool
agent = Agent(
name="tool_agent",
description="Savolga javob beradi va vositalardan foydalanishi mumkin.",
action=Action(
name="answer_with_tools",
prompt_template=PromptTemplate(
template=(
"Quyidagi savolga javob bering. "
"Foydali bo‘lsa, vositalardan foydalaning:\n\n{question}"
)
),
llm=OpenAILLM(),
output_parser=TextOutputParser(),
tools=[get_word_length_tool],
),
)
message = agent.execute({
"question": '"retrieval" so‘zida nechta belgi bor?'
})
print(message.content)
print(message.metadata["tool_results"])LLM qo‘llab-quvvatlanadigan funksiyani so‘raganda, amal uni bajaradi va vosita natijasini suhbatga qaytaradi. Amal yakuniy model chiqishini tahlil qilishdan oldin ushbu jarayonning bir nechta bosqichini qo‘llab-quvvatlaydi. Vosita bajarilishi haqidagi yozuvlar message.metadata["tool_results"] orqali mavjud.
Qo‘shilgan vosita misolini quyidagi buyruq bilan ishga tushiring:
python examples\tool_agent.pyPromptning o‘z-o‘zini evolyutsiyasini tushunish
O‘z-o‘zini evolyutsiya tizimi boshqariladigan fikr-mulohaza va baholash sikli orqali promptni yaxshilaydi:
- Joriy promptni o‘quv misollarida ishga tushiring.
- Bashoratlar, kutilgan yorliqlar va baholash ko‘rsatkichlarini fikr-mulohaza misollariga aylantiring.
- Optimizator LLM asosidagi
PromptRewriterdan bitta nomzod prompt yaratishni so‘rang. - Ota prompt va nomzod promptni bir xil ishlab chiqish to‘plamida baholang.
- Yaxshiroq promptni saqlab qolish uchun
PromptSelectordan foydalaning. - Jarayonni sozlangan avlodlar soni davomida takrorlang.
Bitta avlodni ishga tushirmoqchi bo‘lsangiz, evolve_once(...)dan foydalaning. U EvolutionRoundTraceni qaytaradi. Bir nechta avlodni ishga tushirish va yakuniy prompt bilan birga to‘liq tarixni olish uchun evolve(...)dan foydalaning.
Masofaviy modelsiz evolyutsiyani tekshirish
Repository soxta LLM xatti-harakatlaridan foydalanadigan deterministik tekshiruv misolini o‘z ichiga oladi:
python examples\evolution_audit.pyChiqishda har bir avlodning ota prompti, o‘quv yozuvlari, qayta yozish uchun kiritilgan ma’lumotlar, nomzod prompt, ishlab chiqish to‘plamidagi taqqoslash hamda qabul qilish yoki rad etish qarori ko‘rsatiladi. Bu promptni yaxshilashni yashirin amal deb qabul qilish o‘rniga, optimallashtirish jarayonini tekshirish imkonini beradi.
QA bashoratlarini baholash
Ichki baholovchilar ataylab sodda bo‘lgan uchta QA ko‘rsatkichini taqdim etadi:
- Aniq moslik: Baholovchining taqqoslash qoidalariga ko‘ra, bashorat kutilgan javobga aynan mos kelishini tekshiradi.
- Token darajasidagi F1: Bashorat va kutilgan javob o‘rtasidagi tokenlar kesishmasini o‘lchaydi.
- Aniqlik: To‘g‘ri bashoratlarning ulushini ko‘rsatadi.
Bu ko‘rsatkichlar evolyutsiya siklini tekshirish va namoyish etish uchun mo‘ljallangan. Loyihada keyinchalik ularni muayyan benchmark yoki vazifaga mos baholovchilar bilan almashtirish mumkinligi qayd etilgan.
Testlar to‘plamini ishga tushirish
Barcha testlarni repository ildiz katalogidan bajaring:
python -m pytestMaqsadli testlar to‘plami agentlar, vositalar va evolyutsiya xatti-harakatlarini qamrab oladi. Imkon qadar soxta LLM amalga oshirishlaridan foydalaniladi, shuning uchun framework mantig‘ining katta qismini API kaliti yoki masofaviy model chaqiruvisiz tekshirish mumkin.
Ilg‘or maslahatlar
Jonli tajribalardan oldin deterministik testlardan foydalaning
Prompt tanlash, vositalarni boshqarish yoki evolyutsiya mantig‘ini o‘zgartirganda, soxta LLM misollari va testlaridan boshlang. Deterministik chiqishlar xatolarni takrorlashni osonlashtiradi va framework xatolarini jonli model javoblaridagi o‘zgaruvchanlikdan ajratishga yordam beradi.
Har bir avloddagi kuzatuvlarni tekshiring
Evolyutsiya jarayonini faqat yakuniy prompt asosida baholamang. Qayd etilgan o‘quv bajarilishlari, qayta yozuvchiga berilgan fikr-mulohaza, nomzod prompt, ishlab chiqish ballari va tanlov qarorini ko‘rib chiqing. Bu yozuvlar nomzod nima sababdan qabul qilingan yoki rad etilganini ko‘rsatadi.
O‘quv va ishlab chiqish rollarini alohida saqlang
Evolyutsiya jarayoni o‘quv misollaridan qayta yozish uchun fikr-mulohaza yaratadi, biroq ota va nomzod promptlarni bir xil ishlab chiqish to‘plamida taqqoslaydi. Tanlov framework ko‘zda tutgan jarayon asosida amalga oshishi uchun tajribalarni tayyorlashda ushbu bo‘linishni saqlang.
Tuzilgan vosita natijalarini tekshiring
Vositalar yoqilgan agentlar uchun yakuniy matn bilan bir qatorda message.metadata["tool_results"]ni ham tekshiring. Bu model vositani tanlagan-tanlamaganini, bajarilish muvaffaqiyatli bo‘lgan-bo‘lmaganini va qanday tuzilgan natija qaytarilganini tekshirishga yordam beradi.
Zarur bo‘lganda mos maxsus endpointdan foydalaning
OPENAI_BASE_URL sozlamasi OpenAILLMni OpenAI bilan mos endpointga yo‘naltirish imkonini beradi. API kaliti va tanlangan modelni endpoint talablari bilan mos saqlang.
Loyihaning joriy qamrovini tushuning
miniEvoAgent ataylab EvoAgentX’ga qaraganda torroq qamrovga ega. U hozircha ish jarayoni grafiklari, ko‘p agentli orkestratsiya, xotira, inson ishtirokidagi funksiyalar, benchmark integratsiyasi, vizual tahrirlash yoki keng vositalar to‘plamiga da’vo qilmaydi. Yo‘l xaritasida yanada boy ish jarayoni kompozitsiyasi, ko‘proq provayder adapterlari, benchmark yuklagichlari, qayta foydalaniladigan vositalar to‘plamlari, JSON orqali saqlash va qo‘shimcha hujjatlar mavjud, ammo bular rejalashtirilgan, hozirgi funksiyalar emas.
Qayta tarqatishdan oldin litsenziyani tekshiring
Hozirda loyihaga hech qanday litsenziya fayli kiritilmagan. Kodni nashr etish yoki qayta tarqatishdan oldin tegishli litsenziya qo‘shing.
Xulosa
miniEvoAgent LLM agentlarini yaratishni o‘rganish uchun kichik va testdan o‘tkaziladigan yo‘lni taqdim etadi. evo_repro paketi yordamida prompt asosidagi agent yaratish, OpenAI uslubidagi funksiya vositalarini qo‘shish, QA samaradorligini o‘lchash, xatolardan kelib chiqib promptlarni qayta yozish va ishlab chiqish to‘plamidagi baholash orqali yaxshilanishlarni saqlab qolish mumkin. Uning ixcham arxitekturasi va deterministik misollari agent bajarilishi hamda prompt evolyutsiyasi ichki jihatdan qanday ishlashini o‘rganish uchun ayniqsa foydalidir.
