
شنو هو وكيل AIBuildAI LLM-Post-Train؟
وكيل AIBuildAI LLM-Post-Train هو وكيل تكراري كيطوّر راسو بوحدو، ومخصص للتدريب اللاحق الآلي والمكيّف ديال نماذج اللغة الكبيرة. بلا ما يطبّق وصفة تدريب ثابتة وحدة، كيدرس المهمة، كيصمّم خوارزميات محتملة للتدريب اللاحق، كيجمع وينظّم بيانات التدريب، كيكتب الكود، كيدير التجارب، كيقيّم النتائج، وكيحسّن النموذج بشكل تكراري.
المستودع فيه الكود المصدري اللازم لتشغيل الوكيل وقراءة الكود ديالو وتعديلو. ومصمّم للمؤسسات والباحثين اللي محتاجين استراتيجيات تدريب لاحق مكيّفة مع البيانات الخاصة، وعائلات النماذج، وطرق التقييم، وأهداف النشر ديالهم.
فـ PostTrainBench، المشروع كيعلن على نتيجة إجمالية ديال 46.6%، وكيحتل المرتبة الأولى بين النماذج والوكلاء اللي تقيّمو، وما كيسبقو غير خط الأساس ديال الخبير البشري بنسبة 51.1%.
كيفاش كيخدم الوكيل
كل تشغيل كيبدا بمهمة وبطريقة للتنقيط. النظام كيحضّر وصف ثابت للمهمة، كيدير خط أساس، كيطلق التجارب، كينقّط كل مرشح كيكمل باستعمال نفس برنامج التنقيط، وكيحوّل أحسن نتيجة إلى مخرَج قابل للتسليم.
كاينين جوج قدرات كيميّزو النظام على وكيل برمجة عام:
- نظام المعرفة: الوكلاء يقدرو يستعلمو من قاعدة معارف AIBuildAI عبر MCP. وثائق المهارات المنظّمة فيها كاتغطي سيرورات التدريب اللاحق، والطرق، ومجموعات البيانات، والأطر البرمجية.
- البحث الفوقي: وكيل فوقي يقدر يبحث فالمهمة ويكتب برنامج بحث خاص بالمهمة، عوض ما ينفّذ طوبولوجيا تجارب محددة من قبل.
كل تشغيل كيتزوّد حتى بفضاء عمل مباشر فالويب، وبـرسم بياني دائم للتنفيذ، ووحدات عمل مسجّلة فدفتر، وعمليات فرعية معزولة، وضوابط على الموارد. أحداث التشغيل كتتخزّن فكلستر PostgreSQL خاص تحت ~/.aibuildai/postgresql، وهاد الشي كيدعم التنفيذ اللي يمكن استئنافو وإعادة تشغيلو.
الخصائص الرئيسية
- التصميم والتنفيذ الآلي لتجارب التدريب اللاحق ديال نماذج اللغة الكبيرة.
- استراتيجيات بحث خاصة بكل مهمة، من بينها البحث الفوقي وعدة طرق بحث ثابتة.
- استرجاع المعرفة المتعلقة بالطرق، ومجموعات البيانات، والأطر البرمجية، وقرارات سير العمل.
- وكلاء مقيّدون بالأنواع، وبرامج حتمية، وعمليات بحث متداخلة.
- تنقيط محدد من طرف المهمة وترتيب موحّد للمرشحين.
- مراقبة مباشرة عبر المتصفح من خلال خدمة فضاء عمل محلية.
- بيئات Bubblewrap مع حدود cgroup-v2 على الذاكرة والعمليات.
- ذاكرة كتتولّد محلياً انطلاقاً من التشغيلات السابقة.
- إمكانية اختيارية لإعداد الأوراق وتجميعها فـ PDF من بعد التجميع.
- دعم Claude ونماذج أخرى متاحة عبر نقاط نهاية متوافقة مع Anthropic.
متطلبات النظام
قبل تثبيت المشروع، تأكد باللي المضيف كيتوافق مع هاد المتطلبات:
- Linux على x86_64 مع جلسة مستخدم systemd.
- Python من 3.11 حتى 3.13.
- سلسلة أدوات C فيها
gccوmake. - رؤوس التطوير ديال zlib وreadline.
bwrap، اللي كيوفرو الحزمةbubblewrap، مع تفعيل مساحات أسماء المستخدمين بلا امتيازات.- ولوج للشبكة نحو إصدارات GitHub و
ftp.postgresql.org. - تسجيل الدخول إلى Claude Code، أو مفتاح API ديال Anthropic، أو نموذج آخر متاح عبر نقطة نهاية متوافقة مع Anthropic.
- كيُنصح باستعمال وحدة معالجة رسومية CUDA، مع أن الوكلاء كيتعرفو على العتاد المتاح وكيستعملوه.
فأول تشغيل، كيبني المشروع تثبيت خاص لـ PostgreSQL انطلاقاً من أرشيف المصدر الرسمي. وكيحمّل حتى نسخاً محددة من أدوات بحال ruff وtectonic وmicromamba وcaddy وPostgreSQL إلى ~/.cache/aibuildai. النظام كيستعمل هاد النسخ اللي كيمتلكها هو عوض التثبيتات المكافئة الموجودة فالمضيف.
ما محتاجش conda. الوكيل كينشئ بيئات Program باستعمال تثبيت micromamba الخاص به.
تحقّق من تفويض cgroup-v2
كل تشغيل كيتحطّ ليه حد داخل شجرة وحدة ديال cgroup-v2. مدير مستخدمي systemd خاصو يفوّض على الأقل المتحكمين memory وpids. تحقّق من الإعداد الحالي بهاد الأمر:
U=$(id -u)
cat /sys/fs/cgroup/user.slice/user-$U.slice/user@$U.service/cgroup.subtree_control
خاص الخرج يتضمن memory وpids. إلا كان شي واحد فيهم ناقص، خاص المسؤول يزيد Delegate=pids memory cpu فملف إسقاط داخل /etc/systemd/system/user@$U.service.d/، ويعاود تحميل systemd، ومن بعد خاصك تدخل للحساب من جديد.
ثبّت الوكيل
1. ثبّت حزم نظام التشغيل
فـ Debian أو Ubuntu، ثبّت المترجم، والرؤوس المطلوبة، وbubblewrap:
sudo apt-get install build-essential zlib1g-dev libreadline-dev bubblewrap
2. نسخ المستودع
git clone https://github.com/aibuildai-inc/aibuildai-llm-posttrain-agent.git
cd aibuildai-llm-posttrain-agent
3. أنشئ بيئة Python افتراضية
python -m venv .venv
source .venv/bin/activate
4. ثبّت الاعتماديات المحددة
pip install -r requirements.lock
pip install -e . --no-deps
التثبيت القابل للتعديل كيوفّر الأمر aibuildai. استعمل ملف القفل حيث إن النسخة المحددة ديال claude-agent-sdk هي النسخة اللي تجرّبات مع قاعدة الكود هادي.
إلا كنت ناوي تعدّل المستودع وتشغّل بوابة الجودة ديالو، ثبّت حتى اعتماديات التطوير:
pip install -r requirements-dev.lock
5. حضّر الأدوات المملوكة اختيارياً
الأدوات يقدرو يتحمّلو ويتبناو فالتشغيل اللول. باش توجّدهم من قبل، نفّذ:
aibuildai setup
ضبط الولوج للموديلات
الخيار 1: استعمل تسجيل الدخول ديال Claude Code
claude auth login
الخيار 2: عطِي مفتاح API
export AIBUILDAI_API_KEY=sk-ant-...
إلا ما كانش AIBUILDAI_API_KEY مضبوط، التطبيق كيتحقق من ANTHROPIC_AUTH_TOKEN ومن بعد ANTHROPIC_API_KEY.
استعمال endpoint آخر متوافق مع Anthropic
ضبط AIBUILDAI_BASE_URL على الـendpoint وحطّ المفتاح ديالو فـAIBUILDAI_API_KEY:
export AIBUILDAI_BASE_URL=https://openrouter.ai/api
export AIBUILDAI_API_KEY=your-key
export AIBUILDAI_SMALL_FAST_MODEL=provider/model-id
معرّفات الموديلات المختصرة اللي كيبداو بـdeepseek- كيتوجهو أوتوماتيكياً لـendpoint ديال DeepSeek المتوافق مع Anthropic. معرّفات موديلات OpenRouter فيها prefix ديال المزوّد وكتحتاج بجوج AIBUILDAI_BASE_URL وAIBUILDAI_SMALL_FAST_MODEL.
إلا كان شي endpoint كيستعمل سميات مختلفة لطبقات موديلات Claude، ربطهم باستعمال AIBUILDAI_HAIKU_MODEL وAIBUILDAI_SONNET_MODEL وAIBUILDAI_OPUS_MODEL. استعمل AIBUILDAI_SUBAGENT_MODEL ملي بغيتي الـsub-agents يخدمو بموديل مختلف على الموديل المضبوط للدور ديالهم.
إعدادات اختيارية للخدمات
AIBUILDAI_KB_BASE_URLكيختار خدمة MCP ديال قاعدة المعرفة. افتراضياً، الـclient كيستعمل snapshot عمومي وثابت ديال المشروع.AIBUILDAI_KB_TOKENكيوفّر bearer token إلا كانت خدمة المعرفة كتحتاج التوثيق.AIBUILDAI_WEB_PORTكيختار port ديال خدمة workspace المحلية.AIBUILDAI_WEB_NAMEكيسمّي خدمة workspace ثانية فـنفس الـhost وكيحتاج port ويب محدد بشكل صريح.
إنشاء وتشغيل run بسيط
كل run موصوف بملف YAML واحد. ولّد إعداد بداية موثّق باستعمال:
aibuildai config > task.yaml
الملف اللي كيتولّد فيه كل حقول الإعداد، القيمة الافتراضية ديال كل واحد، والتوثيق ديالو. الأقسام الرئيسية المطلوبة هي run وllm وwork_units وsearch وresources؛ وملف البداية كيعمرهم.
شغّل الـrun بهاد الأمر:
aibuildai run task.yaml
الأمر كيطبّع URL ديال workspace شبيه بـhttp://127.0.0.1:<port>/run/<run-id>. حلّو باش تتبع الـrun مباشرة. المتصفح اختياري، والتنفيذ كيكمل عادي بلا بيه.
تشغيل مثال GSM8K
المثال المرفق كيدير post-training لـQwen/Qwen3-1.7B-Base باش يحل مسائل الرياضيات اللفظية ديال المستوى المدرسي من GSM8K. حسب المستودع، هاد المثال كياخذ تقريباً جوج سوايع فـGPU وحدة.
1. بنِي مجلد المهمة
bash examples/gsm8k-qwen3-1.7b-base/setup.sh ~/gsm8k-example
الإعداد كيحمّل تقريباً 4 GB، ومن بينها أوزان الموديل الأساسي وتقسيمتي GSM8K بجوج. كيسجّل وصف المهمة والـgrader المجمّد فـ~/gsm8k-example/task/ وكيحضّر cache ديال pip للحزم اللي كتتسطّب فـProgram environment الخاص بالـrun.
مجلد المهمة الناتج فيه الأوزان الأساسية اللي يقدر الـagent يضبطها، و7,473 مسألة ديال التدريب، والـgrader، وتقسيمة الاختبار اللي فيها 1,319 مسألة واللي كيقراها هاد الـgrader.
2. بْدا post-training
aibuildai run ~/gsm8k-example/task.yaml
المثال كيستعمل meta search، ومدة استكشاف قصوى ديال 90 دقيقة، وميزانيات مقابلة لكل agent. الـREADME كيوصي برفع هاد الميزانيات فـrun جدي.
3. فهْم عقد التقييم
الـgrader هو التعريف الكامل للنجاح. كيعطي للموديل سؤال متبوع ببداية جواب، وكيفكّ الترميز بطريقة greedy، وكيستخرج الرقم اللي من بعد آخر ####. الـREADME كيسجّل أن الموديل الأساسي كيجيب 0.105 فـأول 200 مسألة ديال الاختبار، حيث الموديل الأساسي اللي ما تدرّبش ما كيتبعش فالبداية صيغة الجواب المطلوبة.
4. قيّم الموديل النهائي
النتيجة المطلوبة هي مجلد ديال موديل مدموج. عوّض <run-home> باسم مجلد الـrun اللي تولّد، وقيّم جميع أمثلة الاختبار باستعمال Program environment ديال الـrun:
H=~/gsm8k-example/playground/gsm8k-qwen3-1.7b-base/<run-home>
$H/program-environment/env/bin/python ~/gsm8k-example/task/grade/evaluate.py --model-path $H/deliverable/final_model --limit -1
استعمل الـAgent مع المهمة ديالك
- نسخ
examples/gsm8k-qwen3-1.7b-base.yaml، ولا ولّد ملف بداية كامل باستعمالaibuildai config. - أنشئ مجلد مهمة فيه كلشي اللي يقدر الـrun يستعملو.
- دخّل وصف واضح للمهمة، بحال README ولا وصف المهمة ولا ورقة، مع كل ملفات البيانات المطلوبة.
- ضبط
run.data_rootعلى داك المجلد. - راجع إعدادات الموديل، والبحث، والميزانية، ووحدات العمل، والموارد.
- شغّل ملف YAML باستعمال
aibuildai run.
أثناء الإعداد، النظام كيقرا مجلد المهمة كامل، وكيجمّد الوصف على أنه README ديال الـrun، وكيبني منّو برنامج النقاط ديال الـrun. لذلك خاص مجلد المهمة يكون كامل ويحدّد بوضوح النتيجة المطلوبة وطريقة التقييم.
الإعداد كيدعم حتى run.setup_from_scratch وrun.task_prompt. هاد الإعدادات كتخلي Setup يجيب البيانات والتقييم من وصف المهمة بلا ما يبدا بمجلد مهمة موجّد.
اختيارات مهمة فالإعداد
اختيار الموديل
llm.default.model كيختار الموديل الأساسي اللي كيستعملوه الوكلاء. تقدر تضبط الاستدلال بإعدادات بحال effort وmax_thinking_tokens. استعمل llm.by_role باش تربط موديلات بأدوار محددة، ولا llm.auto باش تخلي الموجّه يختار حسب الدور.
طريقة البحث
search.kind كيتحكم فاستراتيجية التجربة. القيم المدعومة اللي موصوفة فالـREADME هي:
meta، فين وكيل ميتا كيكتب برنامج بحث خاص بالمهمة.nb_tree، بحث شجري على التجربة كاملة.nb.tree، وهي القيمة الافتراضية فالبادئ العام.linear.parallel.
محتوى search.input كيعتمد على الاستراتيجية المختارة. بحث ميتا كيقبل الخيار report، بينما الاستراتيجيات الثابتة كتستعمل المعاملات ديالها، وقد تتضمن parallel وearly_stopping.
حدود الوقت والمصاريف
run.budget.wall_clock_minutes القيمة الافتراضية ديالو هي 1,440 دقيقة. ملي كيتوصل الحد، ما كيبدا حتى استكشاف جديد، ولكن الخدمة اللي مازال خدامة والتسليم كيتخلاو يكملو. run.budget.cost_usd كيوفر حد اختياري ومرن للمصاريف على مستوى التشغيل كامل.
كل إدخال تحت work_units عندو الميزانية ديالو. وحدة العمل تقدر تستعمل دقائق ثابتة، أو وقت كيتقاس حسب العمق، أو مدة متوقعة مع هامش إضافي.
حدود الموارد
استعمل resources.work_unit.cpu_max_cores وresources.work_unit.memory_max_gb باش تفرض حدود قصوى صارمة على المعالج والذاكرة لكل وحدة عمل. كل وحدة كتخدم فصندوق رمل معزول باستعمال bubblewrap، مع حدود cgroup على الذاكرة والعمليات، ومجلد المهمة مركّب بوضعية القراءة فقط.
نصائح متقدمة
فعّل استرجاع المعرفة
زيد إعداد MCP ديال kb ملي بغيتي الوكلاء يستاشرو قاعدة معرفة AIBuildAI. العميل كيوفر أدوات للبحث فالمهارات، وتحميل مهارة، وقراية المراجع. corpus كيتضمن إرشادات سير العمل، وبطاقات المنهجية، وبطاقات البيانات، وبطاقات الأطر.
الخدمة العمومية الافتراضية كتستعمل نسخة ثابتة من corpus. باش تستضيف النسخة ديالك، نشر مستودع قاعدة المعرفة مفتوح المصدر ووجّه AIBUILDAI_KB_BASE_URL ليه.
اختار بحث ميتا للتصميم الخاص بالمهمة
البحث الشجري الثابت ما كيقدرش يعبّر بشكل طبيعي على كل سيرورات العمل، بحال تشغيل sweep قبل التدريب، وتنظيم tournament من بعد، ولا الجمع بين عدة موديلات. مع search.kind: meta، وكيل ميتا كيدرس المهمة، ويقدر يدير تجارب أولية، ويستاشر مهارات التصميم المضمّنة وقاعدة المعرفة، وكيكتب حزمة بحث بلغة Python.
الحزمة المتولدة كتتركب من ثلاثة مكوّنات أساسية:
- Agent: جلسة LLM فيها أدوات وسياسات ومخرج مكتوب النوع.
- Program: عملية حسابية حتمية فعامل مُدار عندو حدود موارد مخصصة.
- Search: منسّق يقدر يطلق وينسّق Agents وPrograms وSearches متداخلة باستعمال مدخلات ومخرجات مكتوبة النوع.
كتتراجع الحزمة ويمكن اختيارياً مراجعتها بتقرير تصميم بصيغة LaTeX. من بعد كتخدم كبحث فرعي فنفس التشغيل المسجّل فالمجلة. كيفما كان التصميم، قيمة التشغيل كتبقى هي أحسن نتيجة جابتها أي عقدة.
بني ذاكرة محلية قابلة لإعادة الاستعمال
من بعد ما تجمع تشغيلات كافية لمهمة، لخّص الدروس ديالها فوثيقة ذاكرة محلية قابلة للتعديل:
aibuildai memorize task.yaml
عيّن memory.enable باش تدخل هاد الذاكرة المحلية لكل وكيل. المعرفة اللي تعلمتيها من التشغيلات ديالك كتبقى فالجهاز ديالك وما كتزادش لقاعدة المعرفة البعيدة.
تحكّم فالأدوات الخارجية
استعمل disallowed_tools باش تمنع كل دور من استعمال أدوات مضمّنة معينة. مثلاً، تقدر المهمة تمنع WebSearch وWebFetch ملي كتفرض قواعد التقييم سيرورة عمل بلا إنترنت.
زِد تكاملات MCP
إعداد mcps يقدر يفعّل قاعدة المعرفة، أو إرسال المشاركات فمسابقات Kaggle، أو خوادم MCP مخصصة. تكامل Kaggle كيدعم إعداد الحد الأقصى للإرسالات تحت submission.max_submissions.
ولّد ورقة علمية
فعّل writer.enable باش تصيغ مسودة ورقة من بعد التجميع، ولا شغّل أمر الورقة على مجلد تشغيل مكتمل:
aibuildai write-paper <run-dir>
الأمر كيصيغ مسودة ورقة من التشغيل اللي سالا وكيحوّلها لـPDF.
تحقّق من تغييرات المصدر
هاد السلسلة من المشروع ما فيهاش حزمة اختبارات. بوابة المستودع ديالها هي:
./check.sh
البوابة كتشغّل pyright وruff وsemgrep، وكتتحقق من أي انحراف فملف القفل. ثبّت requirements-dev.lock قبل ما تستعملها.
فهم مخرجات التشغيل
كل تشغيل كينشئ مجلد رئيسي تحت جذر playground المكوّن:
{playground_root}/<task-name>/<timestamp>_<run-id>/
run_config.json
public/
private/
deliverable/
workspace/
program-environment/
resource_samples.jsonl
run_config.jsonفيه الإعداد النهائي ومعرّف التشغيل المستعمل للاستئناف.public/فيه README المجمّد والبيانات اللي وجدها Setup للمترشحين.private/فيه برنامج التنقيط، وبيان المقاييس، والمحاولة الأساسية، وسجل الفائز.deliverable/فيه حزمة الموديل القابلة للتشغيل أو نتيجة أخرى محددة من طرف المهمة.workspace/فيه المحاولات، والقطع الأثرية، والبيانات المؤقتة، ومجلدات العمل الخاصة بكل بحث.program-environment/فيه البيئة المعزولة ديال Program الخاصة بالتشغيل.resource_samples.jsonlكيسجل قياسات موارد المضيف اللي تجمعات أثناء التنفيذ.
الخلاصة
كيقدّم AIBuildAI LLM-Post-Train Agent نظام متكامل من البداية للنهاية لتصميم، وتشغيل، وتقييم، وتحسين سيرورات التدريب اللاحق ديال النماذج. بْدا بمثال GSM8K المرفوق باش تتأكد من التثبيت وتفهم بنية التشغيل. من بعد، حدّد مجلد واضح للمهمة ومقيّم، واختار استراتيجية بحث مناسبة، وضبط ميزانيات واقعية وحدود الموارد، واستعمل مساحة العمل المباشرة باش تتابع التجارب الناتجة.
إلى بغيتي تفاصيل أعمق على البنية، راجع وثائق البنية ديال المستودع. المشروع موزّع بموجب رخصة Apache 2.0.
