وكيل الذكاء الاصطناعي الخاص بي بنى أداة قياس أداء لوكلاء الذكاء الاصطناعي لديّ

تاريخ النشر
11 أغسطس 2026
تاريخ التحديث
19 أغسطس 2026
بقلم
جاكوب لويد — كُتب بمساعدة الذكاء الاصطناعي بعد إنجاز المشروع
مدة القراءة
قراءة 3 دقيقة

بعبارة مبسطة: طلبتُ من وكيل البرمجة الذكي Hermes أن يبني أداة قياس أداء لنماذج اللغات الكبيرة المحلية لديّ. النتيجة هي bench-llm: أداة سطر أوامر ببايثون من 1,660 سطرًا تختبر السرعة والتفكير واللياقة كوكيل على أي نموذج محمّل في LM Studio. تعمل بأمر واحد، وتُخرج JSON وجدولًا ملخصًا في الطرفية، وهي مجانية للتحميل.

كتب وكيل البرمجة الخاص بي Hermes أداة قياس أداء. تختبر السرعة والذكاء واللياقة كوكيل لنماذجي المحلية — النماذج نفسها التي تعمل عليها وكلاء ذكاء اصطناعي آخرون — وتُخرج JSON وجدولًا في الطرفية. الأداة مكوّنة من 1,660 سطرًا بلغة بايثون وتُدعى bench-llm — وكيل ذكاء اصطناعي بنى أداة قياس أداء لوكلاء الذكاء الاصطناعي.

تحديث 2026-08-19. كانت bench-llm هي المحاولة الأولى. نمت لتصبح قياسًا متعدد المجموعات (السرعة، البرمجة، استخدام الأدوات، اتباع التعليمات، التفكير، الكتابة المُحكَّمة) ثم تحوّلت إلى Gauntlet، إعادة كتابة كاملة بمستوى صعب وواجهة رسومية — المقال قادم. سكربت الملف الواحد أدناه ما زال يعمل مع LM Studio وما زال أسرع طريقة للحصول على رقم أول. تصحيحان للمقال الأصلي: جدول النتائج يعرض الآن تشغيلات حقيقية لمجموعات القياس الخلف على جهاز GPU الخاص بي (الجدول الأصلي لم يكن قابلاً لإعادة الإنتاج وقد اختفى)، والسكربت يحتاج إلى اعتماديتين وليس واحدة (انظر الإعداد).

باختصار

  • ما هو: أداة سطر أوامر ببايثون من 1,660 سطرًا تقيّم أي نموذج محلي محمّل في LM Studio عبر ثلاثة أبعاد: السرعة (TTFT، رمز/ثانية)، والقدرة (البرمجة، المنطق، JSON، التلخيص)، واللياقة كوكيل (التعرف على المهام، الالتزام بالصيغة، الإيجاز).
  • كم يكلف: لا شيء. تحميل مجاني.
  • ماذا تحتاج: Python 3.8+، pip install openai requests، وLM Studio يعمل مع نماذج محمّلة.
  • ماذا ستحصل عليه: ملف JSON في ~/benchmarks/، وجدول ملخص في الطرفية، وصورة واضحة عن أي من نماذجك يمكنه إنجاز العمل فعلًا — وليس فقط أيها يولد النص أسرع.
  • من بناه: Hermes، وكيل البرمجة الخاص بي. طلبتُ وهو برمج وتكررنا؛ استغرق الأمر كله بعد ظهر واحد.

ما الذي ستحصل عليه

أمر واحد ضد نموذج يمنحك هذا الشكل من المخرجات في طرفيتك (تشغيل مثال):

$ bench-llm gemma-4-31b-it

============================================================
  bench-llm — Benchmarking: gemma-4-31b-it
  GGUF Status:   READY
  GGUF Path:     ~/.lmstudio/models/google/gemma-4-31b-it-Q4_K_M.gguf
  GGUF Size:     16.5 GB
  Arch:          gemma4
  Quant:         Q4_K_M
============================================================

  🔥 Warming up model... OK (0.23s TTFT)

  ⚡ SPEED BENCHMARKS
  ----------------------------------------
    short_50 (131 chars, 3 runs)...
      TPS:  mean=84.2 median=83.8
      TTFT: mean=0.231s median=0.228s
    medium_200 (323 chars, 3 runs)...
      TPS:  mean=85.7 median=85.2
      TTFT: mean=0.312s median=0.308s
    long_800 (769 chars, 3 runs)...
      TPS:  mean=82.1 median=81.5
      TTFT: mean=0.541s median=0.537s

  🔍 Validating speed plausibility...
    Confidence: HIGH

  🧠 ABILITY TESTS
  ----------------------------------------
    Running: Code Generation (median_of_list)... PASS
    Running: Logic Puzzle (Pet Ownership)... PASS
    Running: JSON Compliance... PASS
    Running: Instruction Following... PASS
    Running: Summarization (Key Facts)... FAIL

    Ability Score: 4/5

  🤖 AGENT FITNESS TESTS
  ----------------------------------------
    Running: Task Acknowledgment... PASS
    Running: Format Adherence... PASS
    Running: Conciseness (Output/Input Ratio)... PASS

    Agent Fitness Score: 3/3

  📄 Results saved: ~/benchmarks/gemma-4-31b-it-2026-08-11.json

================================================================================
  BENCHMARK RESULTS: gemma-4-31b-it
================================================================================

  📊 SUMMARY TABLE
  ──────────────────────────────────────────────────────────────────────
  Model ID                         gemma-4-31b-it
  GGUF Size                        16.5 GB
  Architecture                     gemma4
  Quantization                     Q4_K_M
  T/s (short, mean)                84.2
  TTFT (short, mean)               0.231s
  Ability Score                    4/5 (80.0%)
  Agent Fitness Score              3/3 (100.0%)
  Confidence                       🟢 HIGH
  ──────────────────────────────────────────────────────────────────────

كما يكتب حمولة JSON كاملة في ~/benchmarks/ مع كل قياس خام، وكل إجابة اختبار، وملخصًا منظمًا — لتعيد تغذية النتائج إلى وكيلك وتطرح عليه: «أي من نماذجي يجب أن يتولى أعمال JSON الضخمة؟».

ماذا يختبر

ثلاثة أبعاد، كل منها اختير لأنه مهم لبنية وكلاء تعمل دائمًا.

⚡ السرعة

ثلاثة أطوال للطلبات — قصير (~50 حرفًا، «اشرح ما هو المتغير»)، ومتوسط (~200 حرف، «اشرح العودية»)، وطويل (~800 حرف، «قارن بين ثلاثة نماذج برمجية») — مع ثلاثة تشغيلات إحماء تليها القياسات الفعلية.

ما الذي يُقاس:

  • TTFT (Time To First Token) — المدة حتى يبدأ النموذج بالكتابة. أمر حاسم لتجربة استخدام المحادثة؛ أي شيء فوق 500 مللي ثانية يبدو بطيئًا.
  • الإنتاجية (رمز/ثانية) — مدى سرعة توليده بمجرد أن يبدأ. مهمة لكتل الأكواد الطويلة والتقارير.
  • T/s للتمهيد — مدى سرعة معالجة طلب الإدخال قبل التوليد. تكلفة خفية لكنها حقيقية.

كما يشغّل فحص معقولية مقابل حدود العتاد المعروفة. إذا ادعى نموذجك ذو الـ30 غيغابايت 200 رمز/ثانية على بطاقة 7900 XTX، فإن bench-llm يعلّم عليها — فذلك الرقم ملوث على الأرجح بفك تشفير تخميني أو ذاكرة مؤقتة مُسخّنة مسبقًا.

🧠 القدرة

خمسة اختبارات تافهة لنموذج كفؤ، وفضيحة لا تخطئ لنموذج يعاني:

  • توليد الأكواد — اكتب median_of_list(numbers) مع الحالات الحدية (قائمة فارغة، طول زوجي، طول فردي، عدم تعديل الإدخال). تُنفَّذ الدالة داخل bench-llm ضد ست حالات اختبار — ليست مطابقة أنماط مع نص الإجابة، بل كود يعمل فعلًا.
  • لغز منطقي — لغز ملكية أربعة حيوانات أليفة (آليس/سمكة، بوب/طائر، كارول/قطة، دان/كلب). يستخرج تعبير نمطي التخصيصات من الإجابة ويتحقق من الأربعة.
  • الالتزام بمعيار JSON — «أعد كائن JSON بهذه المفاتيح بالضبط.» يختبر ما إذا كان النموذج قادرًا على إنتاج JSON صالح ومطابق للمخطط عند الطلب — الحد الأدنى المطلق لاستدعاء الأدوات.
  • اتباع التعليمات — اكتب الأعداد من 1 إلى 10، وعلّم على الأزواج بعلامة *، واجمعها. يختبر الالتزام الدقيق بالصيغة: الإجابة تافهة، والصيغة هي بيت القصيد.
  • التلخيص — فقرة كثيفة عن الحوسبة الكمومية المعتمدة على الهيليوم. يتحقق مما إذا كانت ست حقائق تقنية أساسية نجت من الضغط. معظم النماذج تُسقط واحدة على الأقل.

🤖 اللياقة كوكيل

هنا يقوم bench-llm بشيء لم أره في أدوات القياس الأخرى. يرسل إلى النموذج مهمة وكيل حقيقية — البحث عن أسطر ERROR في syslog، وتجميعها حسب الخدمة، وإنتاج تقرير JSON — ويقيّم الإجابة كما يفعل مشرف الوكلاء:

  • التعرف على المهام — هل يفهم النموذج ما طُلب منه؟ هل يستطيع رسم منهج وتحديد العوائق؟ (النموذج الذي ينطلق مباشرة في تخليق إدخالات syslog يفشل هنا.)
  • الالتزام بالصيغة — هل يطابق المخرج مخطط JSON المطلوب؟ يتحقق من مصفوفة services، وعدد total_errors الصحيح، وسلسلة scan_period.
  • الإيجاز — ما هي نسبة المخرج إلى الإدخال؟ النماذج التي ترد على طلب من 1,300 حرف بعشرين ألف حرف من الهذر تُعلَّم VERBOSE. الوكيل الذي لا يعرف الإيجاز يحرق نافذة السياق لديك في كل دورة.

تشترك اختبارات اللياقة الثلاثة في نفس الطلب — فهي تقيّم جوانب مختلفة من الإجابة نفسها. هذا يُبقي القياس سريعًا بينما يقيس الصفات التي تهم عندما يعمل نموذج دون إشراف.

كيف بُني

Hermes — وكيل البرمجة على جهازي — كتب كل شيء. أعطيته مواصفة تقريبية: «أحتاج أداة تقيّم النماذج المحلية في LM Studio، وتختبر السرعة والذكاء، وتُخرج JSON وجدولًا.» غادر، وعاد بسكربت يعمل، وتكررنا.

كانت العملية:

  1. المحاولة الأولى: اختبارات السرعة فقط — الاتصال بواجهة LM Studio المتوافقة مع OpenAI، وبث الرموز، وقياس TTFT وT/s.
  2. المحاولة الثانية: اختبارات القدرة — البرمجة (مع تنفيذ فعلي)، والألغاز المنطقية، والالتزام بمخطط JSON، واتباع التعليمات، والتلخيص.
  3. المحاولة الثالثة: اللياقة كوكيل — مهمة syslog، وتقييم الإجابة كما لو كان النموذج وكيلًا في بنيتي.
  4. جولات الصقل: حل ملفات GGUF (العثور على ملف النموذج الفعلي على القرص والإبلاغ عن حجمه وكمّيته)، والتحقق من معقولية السرعة، والجدول الملخص، ووضع --quick، و--list لاكتشاف النماذج، وأمر الفحص المسبق --check.

حدثت التكرارات الأربعة جميعها في بعد ظهر واحد. السكربت النهائي من 1,660 سطرًا. كل سطر كتبه Hermes — راجعتُ أنا، واختبرتُ على نماذج حقيقية، وأشرتُ إلى المشاكل («رقم الإنتاجية هذا لا يمكن أن يكون صحيحًا لنموذج 123B»)، وهو أصلحها. وُلد مدقق المعقولية تحديدًا من هذا النوع من حلقات التغذية الراجعة.

قرارات التصميم التي صمدت

  • البث، لا الاستطلاع. يستخدم bench-llm بثًا متوافقًا مع OpenAI للحصول على توقيت رمز برمز. نهج الاستطلاع كان سيُشوش قياس TTFT ويفقد الدقة على مستوى الرمز.
  • تنفيذ الكود فعليًا في اختبار البرمجة. لا يسأل «هل يبدو هذا كدالة متوسط؟» — بل ينفذ الكود عبر exec() في نطاق أسماء جديد ويشغّل ست حالات اختبار؛ المخرج الذي يبدو واثقًا لكنه لا يعمل، يفشل.
  • استخراج الإجابات بالتعبيرات النمطية لاختبارات المنطق/JSON. القياسات التي تتطلب صيغة دقيقة تفشل بشدة مع النماذج التي تضيف «بالتأكيد! إليك إجابتك:» قبل المخرج الفعلي. تستخرج مدققات bench-llm الحمولة من أي غلاف يضعه النموذج حولها — تقيس محتوى النموذج، لا ثرثرته.
  • تنظيف ذاكرة VRAM بين القياسات. ينفذ pkill -f llama-server وينتظر حتى يعرض LM Studio صفر نماذج محمّلة قبل كل تشغيل. بدون ذلك، يمكن لذاكرة KV المؤقتة لنموذج سابق أن تلوث قياس TTFT للقياس التالي.
  • حل ملفات GGUF. يعيد ربط معرّفات نماذج LM Studio بملفات GGUF الفعلية على القرص عبر مطابقة تقريبية لاسم الناشر والبنية. هذا يعطيك حجم النموذج وكمّيته وما إذا كان الملف موجودًا أصلًا — مجيبًا على «هل هذا النموذج جاهز فعلًا للقياس؟» قبل إهدار تشغيل.

الإعداد

ثلاث خطوات:

# 1. Install the two dependencies (requests talks to LM Studio's model-metadata
#    endpoint — without it every model shows as "not found")
pip install openai requests

# 2. Make sure LM Studio is running with at least one model loaded
# (it should be listening on localhost:1234 — that's the default)

# 3. Run it
./bench-llm --list                         # see what's available
./bench-llm gemma-4-31b-it --quick         # smoke test
./bench-llm gemma-4-31b-it                 # full benchmark

لا ملفات إعداد، ولا مفاتيح API (يقبل LM Studio أي سلسلة)، ولا قاعدة بيانات. تذهب النتائج إلى ~/benchmarks/.

اختياري لكن مفيد: انسخ bench-llm إلى PATH لديك لتشغيله من أي مكان.

cp bench-llm ~/bin/
chmod +x ~/bin/bench-llm

نتائج حقيقية: نماذج أساسية على جهازي الرئيسي وحاسوبي المحمول

الأرقام أدناه من مجموعات القياس الخلف (طريقة السرعة نفسها، مجموعة اختبارات أوسع) وتغطي النماذج الأساسية فقط — دون ضبط دقيق من المجتمع. «الجهاز الرئيسي» هو صندوق GPU بلا شاشة، 2× RTX 5090 + 2× RTX 3090؛ «APU» هي وحدة معالجة الرسوم المدمجة في هذا الحاسوب المحمول. السرعة قابلة للمقارنة فقط داخل الجهاز نفسه. ينطبق تحفظ المجموعات نفسها: النسخ تمتد عبر عدة مراجعات، فاقرأ الفروق الصغيرة كضوضاء.

السرعة + اللياقة كوكيل (مجموعة bench، تقرير 2026-08-18 — Code / Tools / Instruct / Reason هي معدلات نجاح):

النموذجالجهازGen tok/sTTFTCodeToolsInstructReason
Gemma 4 26B-A4B (QAT, Q4)الجهاز الرئيسي229.0110 ms88%100%50%95%
Nemotron 3 Nano 4B (Q8)APU18.5175 ms92%70%94%95%
Gemma 4 12BAPU10.1633 ms

المستوى الصعب (Gauntlet، 2026-08-19 — معدل النجاح على الحالات الصعبة فقط؛ «—» = الفئة لم تُشغَّل لذلك النموذج):

النموذجالمكانصعب %CodeMathToolsInstructReasonLong-ctx
DeepSeek V4-Flash (مرجع سحابي)API95% (110/116)95%82%100%100%100%90%
Qwen3.8 27B (Q5)الجهاز الرئيسي74% (23/31)74%
Qwen2.5 1.5Bالجهاز الرئيسي36% (80/225)32%9%59%18%16%74%
SmolVLM 256Mالجهاز الرئيسي4% (8/194)0%0%6%0%9%14%

ما أستخلصه من هذا: نموذج Gemma 4 26B من نوع MoE (مع 4B نشطة) هو حصان العمل اليومي على الجهاز الرئيسي — 229 رمز/ثانية، وTTFT بمقدار 110 مللي ثانية، واستدعاء أدوات مثالي — وعمود ضعفه هو اتباع التعليمات، وهو بالضبط ما تعتمد عليه حلقة وكيل دون إشراف. أما Nemotron ذو الـ4B فهو المفاجأة: على APU في حاسوب محمول يتبع التعليمات أفضل من 26B على الجهاز الرئيسي، لكنه أبطأ بخمس مرات فقط (18.5 رمز/ثانية على APU مقابل 229 على الجهاز الرئيسي). على المستوى الصعب، يصل Qwen3.8 27B الأساسي إلى 74% في البرمجة، ويُظهر صفّا 1.5B و256M كيف يبدو «أصغر من أن يقوم بعمل الوكيل»، وصف V4-Flash السحابي هو السقف الذي تطارده النماذج المحلية — بتكلفة 0.088$ للتشغيل الصعب بأكمله.

ما الذي يجعله مختلفًا

هناك الكثير من قياسات أداء نماذج اللغات الكبيرة. معظمها مجموعات ألغاز أكاديمية (MMLU) أو أسئلة معلومات مُحسَّنة للوحات المتصدرين. يقوم bench-llm بثلاثة أشياء تهم شخصًا يشغّل نماذج محلية فعلًا:

  1. يختبر صفات الوكيل، لا صفات روبوت الدردشة. الالتزام بالصيغة والتعرف على المهام والإيجاز هي ما يصنع النموذج أو يكسره في حلقة وكيل دون إشراف. نموذج رائع في المحادثة لكنه عاجز عن اتباع مخطط JSON لا قيمة له في سير عمل استدعاء الأدوات.
  2. يتحقق من قياساته الخاصة. يلتقط مدقق المعقولية الأرقام التي لا يمكن أن تكون صحيحة — تلوثًا بفك التشفير التخميني، أو ذاكرات مؤقتة مُسخّنة، أو أخطاء قياس. إذا لم تستطع أداة قياس أن تخبرك متى يكون مخرجها نفسه هراءً، فلا يمكنك الوثوق بأي شيء منها.
  3. إنه سكربت واحد. لا Docker، ولا قاعدة بيانات، ولا اعتماديات برامج تشغيل GPU، ولا تنزيل مجموعة بيانات بسعة 50 غيغابايت. ملف بايثون واحد، وpip install واحدة، ويعمل مع أي شيء محمّل لديك في LM Studio الآن.

مزالق

  • يجب أن يعمل LM Studio أولًا. لا يشغّل bench-llm LM Studio نيابة عنك — بل يتصل بـ localhost:1234. إذا لم يكن هناك ما يستمع، يفشل مع رسالة خطأ واضحة.
  • تنظيف VRAM عدواني. ينفذ pkill llama-server بين القياسات لمسح ذاكرة KV المؤقتة. إذا كانت لديك عمليات llama-server أخرى تريد إبقاءها حية، فلا تشغّل bench-llm — أو عدّل خطوة التنظيف.
  • التلخيص هو الاختبار الأصعب. كل نموذج تقريبًا اختبرته يُسقط حقيقة أساسية واحدة على الأقل. إذا سجّل نموذج 4/5 مع التلخيص كونه العيب الوحيد، فهذه نتيجة قوية — لا تقرأها كنقص.
  • نماذج التفكير لديها TTFT أبطأ. تقضي النماذج المفكرة وقتًا في مرحلة تفكير قبل إنتاج المخرج. يقيس bench-llm TTFT من أول رمز من أي نوع — بما في ذلك رموز التفكير. هذا يجعل نماذج التفكير تبدو أبطأ مما تشعر به في الممارسة، لأن رموز الفكر تتدفق خلال ما كان ليكون وقتًا ميتًا. يفصل مخرج JSON بين TTFT إلى ttft_reasoning_s وttft_content_s لترى التقسيم.
  • اختبار البرمجة ينفذ exec() على مخرج النموذج. يعمل في نطاق أسماء جديد مع دوال اختبار نقية — ليس صندوق رمل حقيقي، فشغّله كمستخدم لا يملك شيئًا يخسره — لكن إذا كان تنفيذ كود مولّد بالذكاء الاصطناعي يزعجك، فتجاوز اختبارات القدرة عبر --speed-only.
  • النماذج الكثيرة تستغرق وقتًا. القياس الكامل على نموذج واحد يستغرق 2–5 دقائق حسب السرعة؛ وعشرات النماذج تعني أمسية. استخدم --quick للمقارنات واحتفظ بالمجموعة الكاملة لمرشحيك الأوائل.

التحميل

bench-llm هو سكربت بايثون واحد بالإضافة إلى README. لا خطوة بناء، ولا معالج تثبيت — فك الضغط وشغّل.

يحتوي الملف المضغوط على:

  • bench-llm — سكربت القياس من 1,660 سطرًا
  • README.md — تعليمات إعداد واستخدام مكثفة

كتب Hermes، وكيل البرمجة الخاص بي، الملفين معًا. بموجب رخصة MIT — استخدمه وعدّله وأدرجه في مجموعة أدواتك الخاصة. الاعتماديات: openai وrequests.

ذات صلة: كم يكلف وكلاء الذكاء الاصطناعي لديّ فعلًا (لماذا تهم السرعة المحلية)، وReasonix وDeepSeek Harness (وكيلا البرمجة اللذان تدعمهما هذه النماذج)، وبنية الوكلاء المحلية التي يعملان فيها.

التنزيلات

مجاني للاستخدام الشخصي. إذا وفّر لك عصرًا كاملًا من الوقت، فزر القهوة قريب منك.


← المزيد من الذكاء الاصطناعي والنماذج المحلية