
miniEvoAgent کیا ہے؟
miniEvoAgent ایک مختصر Python فریم ورک ہے جو یہ سیکھنے کے لیے بنایا گیا ہے کہ LLM پر مبنی ایجنٹس کیسے تشکیل دیے اور بہتر کیے جاتے ہیں۔ EvoAgentX سے متاثر ہو کر، یہ ایجنٹ کے نفاذ، ٹول کالنگ، جانچ، پرامپٹ کی ازسرنو تحریر اور خود ارتقائی عمل کے بنیادی تصورات برقرار رکھتا ہے، جبکہ بڑے ایجنٹ فریم ورک کی پیچیدگی ختم کر دیتا ہے۔
اس پیکیج کا موجودہ نام evo_repro ہے۔ اس کا دانستہ طور پر مختصر ڈیزائن ہر طریقۂ کار کو پڑھنے، جانچنے اور وسعت دینے میں آسان بناتا ہے۔ ورک فلو گرافس، میموری، بصری ایڈیٹرز، بینچ مارک اڈاپٹرز یا ٹولز کے بڑے ماحولیاتی نظام فراہم کرنے کے بجائے، یہ ایک شفاف واحد ایکشن ایجنٹ اور پرامپٹ ارتقا کے چکر پر توجہ دیتا ہے۔
فریم ورک کیسے کام کرتا ہے
miniEvoAgent ایپلیکیشن چند مرکوز اجزا سے تیار کی جاتی ہے:
- PromptTemplate: ٹاسک کے ان پٹس کو پرامپٹ ٹیمپلیٹ میں شامل کرتا ہے۔
- Action: LLM کو کال کرتا ہے، اختیاری طور پر متعدد ادوار میں ٹولز چلاتا ہے، اور حتمی جواب کو پارس کرتا ہے۔
- Agent: ایک ایکشن کو لپیٹتا ہے اور ساخت یافتہ پیغام واپس کرتا ہے۔
- Evaluator functions: عین مطابقت، ٹوکن سطح کے F1 اور درستگی کے ذریعے QA پیش گوئیوں کا اسکور بناتے ہیں۔
- PromptRewriter: ٹھوس فیڈبیک مثالوں سے نظرثانی شدہ پرامپٹ تجویز کرنے کے لیے ایک آپٹمائزر LLM استعمال کرتا ہے۔
- PromptSelector: اسی ڈویلپمنٹ سیٹ پر بنیادی پرامپٹ اور اس کے امیدوار کا موازنہ کرتا ہے اور بہتر کارکردگی دکھانے والے کو برقرار رکھتا ہے۔
- evolve: تربیتی نفاذ، فیڈبیک کی تیاری، ازسرنو تحریر، جانچ اور انتخاب کو دہراتا ہے۔
اہم خصوصیات
- ایک کم سے کم اور قابلِ معائنہ واحد ایکشن ایجنٹ تجرید۔
- OpenAI سے مطابقت رکھنے والا LLM اڈاپٹر، جو ماحول کے متغیرات یا مقامی
.envفائل کے ذریعے تشکیل دیا جاتا ہے۔ - OpenAI طرز کے فنکشن ٹولز، جن میں متعدد ادوار میں ٹولز کا نفاذ شامل ہے۔
- آپٹمائزر LLM کے ذریعے فیڈبیک پر مبنی پرامپٹ کی ازسرنو تحریر۔
- ڈویلپمنٹ سیٹ کا انتخاب، جو صرف اس وقت امیدوار قبول کرتا ہے جب اسکور بہتر ہو۔
- ارتقائی سراغ، جن میں تربیتی نفاذ، ازسرنو تحریر کے ان پٹس، ڈویلپمنٹ اسکورز اور انتخابی فیصلے شامل ہوتے ہیں۔
- ریموٹ API کالز کے بغیر فریم ورک کے رویے کی جانچ کے لیے متعین جعلی LLMs۔
miniEvoAgent انسٹال کریں
تقاضے
Python 3.10 یا اس کے بعد کا ورژن استعمال کریں۔ درج ذیل PowerShell کمانڈز ریپوزٹری میں داخل ہوتی ہیں، ورچوئل ماحول بناتی ہیں، اسے فعال کرتی ہیں، pip کو اپ ڈیٹ کرتی ہیں اور پیکیج کو قابلِ ترمیم موڈ میں انسٹال کرتی ہیں:
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 .قابلِ ترمیم انسٹالیشن اس وقت مفید ہوتی ہے جب آپ سورس کا مطالعہ یا اس میں ترمیم کر رہے ہوں، کیونکہ مقامی پیکیج کی تبدیلیاں فوراً آپ کے Python ماحول میں دستیاب ہو جاتی ہیں۔
OpenAI سے مطابقت رکھنے والا LLM تشکیل دیں
طے شدہ OpenAILLM اڈاپٹر اپنی ترتیبات ماحول کے متغیرات یا مقامی .env فائل سے پڑھتا ہے۔ PowerShell میں API کلید اور ماڈل اس طرح مقرر کریں:
$env:OPENAI_API_KEY="your_api_key"
$env:OPENAI_MODEL="gpt-4o-mini"اگر آپ کوئی دوسری OpenAI سے مطابقت رکھنے والی سروس استعمال کرتے ہیں تو اس کا اینڈ پوائنٹ مقرر کریں:
$env:OPENAI_BASE_URL="https://your-compatible-endpoint/v1"متبادل طور پر، .env.example کو .env میں نقل کریں اور وہی تشکیل کی قدریں وہاں شامل کریں۔
بنیادی سوال و جواب ایجنٹ بنائیں
ایک بنیادی ایجنٹ کو LLM، پرامپٹ ٹیمپلیٹ، آؤٹ پٹ پارسر اور ایکشن کی ضرورت ہوتی ہے۔ اس کے بعد ایجنٹ ان اجزا کو ایک سادہ نفاذی انٹرفیس کے ذریعے ظاہر کرتا ہے۔
from evo_repro import Action, Agent, OpenAILLM, PromptTemplate, TextOutputParser
llm = OpenAILLM()
action = Action(
name="answer_question",
prompt_template=PromptTemplate(
template="Answer the following question:\n\n{question}"
),
llm=llm,
output_parser=TextOutputParser(),
)
agent = Agent(
name="qa_agent",
description="Answers a single user question.",
action=action,
)
message = agent.execute({
"question": "What is Retrieval-Augmented Generation?"
})
print(message.content)agent.execute کو فراہم کی گئی question کلید ٹیمپلیٹ میں موجود {question} پلیس ہولڈر سے مطابقت رکھتی ہے۔ ایکشن پرامپٹ تیار کرتا ہے، اسے تشکیل شدہ LLM کو بھیجتا ہے، واپس آنے والے متن کو پارس کرتا ہے اور نتیجے کو ساخت یافتہ پیغام میں لپیٹ دیتا ہے۔
آپ شامل کردہ مثال بھی چلا سکتے ہیں:
python examples\simple_agent.pyقابلِ کال Python ٹول شامل کریں
miniEvoAgent ٹولز Python فنکشنز کے گرد باریک ریپر ہوتے ہیں۔ ہر ٹول ایک JSON اسکیما فراہم کرتا ہے جسے ماڈل فنکشن کالنگ کے لیے استعمال کر سکتا ہے اور ایک ساخت یافتہ ToolResult واپس کرتا ہے۔
پیکیج میں get_word_length_tool شامل ہے، جسے اس کے tools آرگیومنٹ کے ذریعے ایکشن سے منسلک کیا جا سکتا ہے:
from evo_repro import Action, Agent, OpenAILLM, PromptTemplate, TextOutputParser
from evo_repro import get_word_length_tool
agent = Agent(
name="tool_agent",
description="Answers a question and can use tools.",
action=Action(
name="answer_with_tools",
prompt_template=PromptTemplate(
template=(
"Answer the following question. "
"Use tools when useful:\n\n{question}"
)
),
llm=OpenAILLM(),
output_parser=TextOutputParser(),
tools=[get_word_length_tool],
),
)
message = agent.execute({
"question": 'How many characters are in "retrieval"?'
})
print(message.content)
print(message.metadata["tool_results"])جب LLM کسی معاون فنکشن کی درخواست کرتا ہے، تو ایکشن اسے چلاتا ہے اور ٹول کا نتیجہ گفتگو میں واپس بھیج دیتا ہے۔ حتمی ماڈل آؤٹ پٹ کو پارس کرنے سے پہلے ایکشن اس عمل کے متعدد ادوار کی معاونت کرتا ہے۔ ٹول کے نفاذ کے ریکارڈ message.metadata["tool_results"] کے ذریعے دستیاب ہوتے ہیں۔
شامل کردہ ٹول کی مثال اس کمانڈ سے چلائیں:
python examples\tool_agent.pyپرامپٹ کی خود ارتقائی صلاحیت کو سمجھیں
خود ارتقائی نظام ایک منظم فیڈبیک اور جائزے کے چکر کے ذریعے پرامپٹ کو بہتر بناتا ہے:
- موجودہ پرامپٹ کو تربیتی مثالوں پر چلائیں۔
- پیش گوئیوں، متوقع لیبلز اور جائزے کے میٹرکس کو فیڈبیک مثالوں میں تبدیل کریں۔
- آپٹمائزر LLM سے تقویت یافتہ
PromptRewriterسے ایک امیدوار پرامپٹ تیار کرنے کو کہیں۔ - والدین اور امیدوار دونوں پرامپٹس کا اسی ڈویلپمنٹ سیٹ پر جائزہ لیں۔
- بہتر پرامپٹ برقرار رکھنے کے لیے
PromptSelectorاستعمال کریں۔ - اس عمل کو ترتیب دی گئی جنریشنز کی تعداد تک دہرائیں۔
جب آپ ایک جنریشن چلانا چاہیں تو evolve_once(...) استعمال کریں۔ یہ ایک EvolutionRoundTrace واپس کرتا ہے۔ متعدد جنریشنز چلانے اور حتمی پرامپٹ کے ساتھ مکمل تاریخ حاصل کرنے کے لیے evolve(...) استعمال کریں۔
ریموٹ ماڈل کے بغیر ارتقا کا آڈٹ کریں
ریپوزٹری میں ایک متعین آڈٹ مثال شامل ہے جو فرضی LLM رویے استعمال کرتی ہے:
python examples\evolution_audit.pyآؤٹ پٹ ہر جنریشن کا والدین پرامپٹ، تربیتی ریکارڈز، دوبارہ لکھنے کے لیے ان پٹ، امیدوار پرامپٹ، ڈویلپمنٹ سیٹ کا موازنہ، اور قبول یا مسترد کرنے کا فیصلہ دکھاتا ہے۔ اس سے پرامپٹ کی بہتری کو ایک پوشیدہ عمل سمجھنے کے بجائے آپٹمائزیشن کے عمل کا معائنہ ممکن ہوتا ہے۔
QA پیش گوئیوں کا جائزہ لیں
بلٹ اِن ایویلیوٹرز تین جان بوجھ کر سادہ QA میٹرکس فراہم کرتے ہیں:
- عین مطابقت: جانچتا ہے کہ آیا ایویلیوٹر کے موازنے کے طریقے کے تحت پیش گوئی متوقع جواب سے بالکل مطابقت رکھتی ہے۔
- ٹوکن سطحی F1: پیش گوئی اور متوقع جواب کے درمیان ٹوکنز کے اشتراک کی پیمائش کرتا ہے۔
- درستگی: درست پیش گوئیوں کا تناسب بتاتی ہے۔
یہ میٹرکس ارتقائی عمل کی جانچ اور وضاحت کے لیے بنائے گئے ہیں۔ پروجیکٹ کے نوٹس کے مطابق، بعد میں انہیں کسی مخصوص بینچ مارک یا کام کے لیے موزوں ایویلیوٹرز سے تبدیل کیا جا سکتا ہے۔
ٹیسٹ سوٹ چلائیں
ریپوزٹری کی جڑ سے تمام ٹیسٹس چلائیں:
python -m pytestمرکوز ٹیسٹ سوٹ ایجنٹس، ٹولز اور ارتقائی رویے کا احاطہ کرتا ہے۔ جہاں ممکن ہو، فرضی LLM نفاذ استعمال کیے جاتے ہیں، اس لیے زیادہ تر فریم ورک منطق کو API کلید یا ریموٹ ماڈل کال کے بغیر جانچا جا سکتا ہے۔
اعلیٰ درجے کی تجاویز
لائیو تجربات سے پہلے متعین ٹیسٹس استعمال کریں
پرامپٹ کے انتخاب، ٹول ہینڈلنگ یا ارتقائی منطق میں تبدیلی کرتے وقت فرضی LLM کی مثالوں اور ٹیسٹس سے آغاز کریں۔ متعین آؤٹ پٹس ناکامیوں کو دوبارہ پیدا کرنے کے قابل بناتے ہیں اور فریم ورک کی خرابیوں کو لائیو ماڈل کے جوابی تغیر سے الگ کرنے میں مدد دیتے ہیں۔
ہر جنریشن میں ٹریسز کا معائنہ کریں
ارتقائی عمل کا جائزہ صرف اس کے حتمی پرامپٹ سے نہ لیں۔ ریکارڈ شدہ تربیتی نفاذ، ری رائٹر کو فراہم کردہ فیڈبیک، امیدوار پرامپٹ، ڈویلپمنٹ اسکورز اور انتخاب کے فیصلے کا جائزہ لیں۔ یہ ریکارڈز ظاہر کرتے ہیں کہ امیدوار کیوں قبول یا مسترد کیا گیا۔
تربیت اور ڈویلپمنٹ کے کردار الگ رکھیں
ارتقائی عمل تربیتی مثالوں سے دوبارہ لکھنے کا فیڈبیک تیار کرتا ہے، لیکن والدین اور امیدوار کا موازنہ اسی ڈویلپمنٹ سیٹ پر کرتا ہے۔ تجربات تیار کرتے وقت اس تقسیم کو برقرار رکھیں تاکہ انتخاب فریم ورک کے مطلوبہ عمل کے مطابق ہو۔
ساخت یافتہ ٹول نتائج کا معائنہ کریں
ٹول فعال ایجنٹس کے لیے حتمی متن کے ساتھ message.metadata["tool_results"] کا بھی جائزہ لیں۔ اس سے تصدیق میں مدد ملتی ہے کہ ماڈل نے ٹول منتخب کیا یا نہیں، نفاذ کامیاب رہا یا نہیں، اور کون سا ساخت یافتہ نتیجہ واپس کیا گیا۔
ضرورت پڑنے پر مطابقت رکھنے والا حسب ضرورت اینڈ پوائنٹ استعمال کریں
OPENAI_BASE_URL سیٹنگ OpenAILLM کو OpenAI سے مطابقت رکھنے والے اینڈ پوائنٹ کی طرف بھیجنے کی اجازت دیتی ہے۔ API کلید اور منتخب ماڈل کو اینڈ پوائنٹ کی ضروریات کے مطابق رکھیں۔
پروجیکٹ کے موجودہ دائرۂ کار کو سمجھیں
miniEvoAgent کو دانستہ طور پر EvoAgentX سے محدود رکھا گیا ہے۔ یہ فی الحال ورک فلو گرافس، کثیر ایجنٹ آرکیسٹریشن، میموری، انسان کی شمولیت والی خصوصیات، بینچ مارک انٹیگریشن، بصری تدوین یا وسیع ٹول کٹس کا دعویٰ نہیں کرتا۔ روڈمیپ میں زیادہ بھرپور ورک فلو کمپوزیشن، مزید پرووائیڈر اڈاپٹرز، بینچ مارک لوڈرز، قابلِ دوبارہ استعمال ٹول کٹس، JSON پر مبنی پائیداری اور اضافی دستاویزات شامل ہیں، لیکن یہ موجودہ خصوصیات نہیں بلکہ منصوبہ بند کام ہیں۔
دوبارہ تقسیم سے پہلے لائسنس چیک کریں
اس وقت پروجیکٹ میں کوئی لائسنس فائل شامل نہیں ہے۔ کوڈ شائع یا دوبارہ تقسیم کرنے سے پہلے مناسب لائسنس شامل کریں۔
نتیجہ
miniEvoAgent LLM ایجنٹ انجینئرنگ میں داخلے کا ایک مختصر اور قابلِ جانچ راستہ فراہم کرتا ہے۔ evo_repro پیکیج کے ذریعے آپ پرامپٹ پر مبنی ایجنٹ بنا سکتے ہیں، OpenAI طرز کے فنکشن ٹولز شامل کر سکتے ہیں، QA کارکردگی ناپ سکتے ہیں، ناکامیوں کی بنیاد پر پرامپٹس دوبارہ لکھ سکتے ہیں، اور ڈویلپمنٹ سیٹ کے جائزے کے ذریعے بہتری برقرار رکھ سکتے ہیں۔ اس کا مختصر آرکیٹیکچر اور متعین مثالیں اسے خاص طور پر اس بات کے مطالعے کے لیے مفید بناتی ہیں کہ ایجنٹ کا نفاذ اور پرامپٹ کا ارتقا اندرونی طور پر کیسے کام کرتا ہے۔
