تفكر في ACE؟ يمكننا القيام بذلك بعدد أقل من الرموز.

هل تفكر في ACE؟ منشور مدونة حديث من أبحاث IBM، نُشر في 11 أغسطس 2026، يبحث في كيفية تحقيق النماذج المحلية لنفس التأثير بعدد أقل من الرموز. يسلط المقال الضوء على استراتيجيات عملية لتقليل الرموز وانعكاساتها على كفاءة الذكاء الاصطناعي على الأجهزة، مما يقدم منظورًا قيّمًا للمطورين والباحثين العاملين في بيئات محدودة الموارد.

القراءة الصوتية غير متاحة في هذا المتصفح
تفكر في ACE؟ يمكننا القيام بذلك بعدد أقل من الرموز.

الوسوم

ملخص سريع

هل تفكر في ACE؟ منشور مدونة حديث من أبحاث IBM، نُشر في 11 أغسطس 2026، يبحث في كيفية تحقيق النماذج المحلية لنفس التأثير بعدد أقل من الرموز. يسلط المقال الضوء على استراتيجيات عملية لتقليل الرموز وانعكاساتها على كفاءة الذكاء الاصطناعي على الأجهزة، مما يقدم منظورًا قيّمًا للمطورين والباحثين العاملين في بيئات محدودة الموارد.

التفكير في ACE؟ يمكننا القيام بذلك بعدد أقل من التوكنز

عندما نصمم وكيل ذكاء اصطناعي، يكون السؤال الذي يهيمن على كل مراجعة هو نفسه: "هل سيتسع؟" هل سيتسع موجه النظام؟ هل ستتسع الأدلة المسترجعة؟ هل ستتسع خطوات التفكير الوسيطة الاثنتا عشرة؟ عادةً ما يكون الجواب الذي نختاره هو شراء نافذة سياق أكبر. لكن هناك بديل أكثر هدوءًا، وغالبًا أفضل: تعليم الوكيل أن ينفق عددًا أقل من التوكنز من البداية.

هذا البديل هو موضوع "Thinking of ACE? We Can Do It with Fewer Tokens"، وهو منشور تقني نشرته IBM Research على مدونة Hugging Face بتاريخ 2026-08-11 على الرابط https://huggingface.co/blog/ibm-research/altk-evolve-sldd. يجادل المنشور بأن هندسة السياق الوكيلية — أي الانضباط المتمثل في إدارة ما يقرؤه الوكيل ويكتبه — لا يجب أن تكون مرادفة لميزانيات سياق أكبر باستمرار. هذا المقال رفيق عملي لتلك الفكرة. فهو يشرح لماذا تعتبر كفاءة التوكنز العمود الفقري للوكلاء الموثوقين، ويستعرض مجموعة أدوات صغيرة وملموسة لقياس وتقليل استهلاك التوكنز في وكيلك الخاص.

قبل المضي قدمًا، ملاحظة حول النطاق. الحقائق المؤكدة حول المصدر هي عنوانه، وتاريخ نشره، ورابطه. التفسير الهندسي الذي يلي هو تفسيري الخاص، وأمثلة الكود هي إعداد عام وليست مقتطفات من المنشور.

لماذا هندسة السياق مشكلة توكنز وليست مشكلة ذاكرة

الوكيل هو حلقة. يقرأ، ويستنتج، ويستدعي الأدوات، ويقرأ النتائج، ثم يستنتج مرة أخرى، ويكرر ذلك حتى ينتج إجابة. كل مرور عبر الحلقة يضيف توكنز إلى المرور التالي:

  • يُدفع ثمن موجه النظام في كل دورة.
  • المستندات المسترجعة عادةً ما تُحقن كاملة.
  • مخرجات الأدوات غالبًا ما تُعاد كما هي، مهما كان حجمها.
  • سلسلة أفكار الوكيل نفسها تُحفظ وتُعاد لتظل متماسكة.

النتيجة هي أن مهمة بسيطة تحتوي على ثلاث استدعاءات أدوات يمكن أن تنتج عشرات الآلاف من التوكنز في السياق حتى عندما تكون المعلومات المفيدة قابلة للاختصار في بضع مئات. هذه ليست مشكلة ذاكرة — فالنموذج يمكنه تذكر كل ذلك. إنها مشكلة ميزانية. كل توكن إضافي يضيف تكلفة وزمن استجابة وضوضاء. والضوضاء ليست ضارة: عمليًا، غالبًا ما يكون النموذج أسوأ بكثير في استخراج حقيقة واحدة ذات صلة عندما تكون تلك الحقيقة مدفونة في نص غير ذي صلة. يسمي المهندسون هذا أحيانًا تأثير "الضائع في المنتصف"، ويزداد سوءًا كلما كبرت السياقات.

هندسة السياق الوكيلية (ACE)، كما يوحي الاسم، تتعامل مع السياق كشيء نصممه ونصونه، وليس شيئًا يتراكم ببساطة. سياق الوكيل المُهندَس جيدًا يكون مضغوطًا وحاليًا وكافيًا. يحتوي فقط على ما تحتاجه الخطوة التالية، وليس كل ما رآه الوكيل على الإطلاق. هنا يقدّم منشور IBM Research حجته: مع الهندسة الدقيقة للسياق، يمكنك تشغيل أعباء عمل وكيلية بعدد أقل بكثير من التوكنز — دون التخلي عن جودة المهمة. عنوان المنشور هو الأطروحة: "يمكننا القيام بذلك بعدد أقل من التوكنز."

دليل اللعب الأساسي: ست عادات للوكلاء الموفّرين للتوكنز

المبادئ التالية هي توليفة عامة من أفضل ممارسات ACE. وهي متسقة مع اتجاه المنشور المصدر، لكنها ليست ملخصًا لتفاصيله الداخلية.

  1. فضّل الحالة المنظمة على التاريخ الخام. بدلاً من إعادة عرض النص الكامل لكل خطوة، احتفظ بكتلة حالة مضغوطة: ما يعرفه الوكيل، وما جرّبه، وما فشل، وما هي الخطوة التالية.
  1. اقتصّ مخرجات الأدوات عند الحدود. الأداة تعيد ما تعيده؛ وليس من الضروري أن يحتوي السياق على كل ذلك. اقطع الحمولة قبل أن تدخل المحادثة أصلًا.
  1. لخّص قبل أن تحفظ. في كل مرة يُكمل الوكيل مهمة فرعية، اضغط النتيجة في سجل من سطر واحد. دع التفاصيل تموت بعد أن تؤدي غرضها.
  1. استرجع بشكل ضيق ومتكرر. بدلاً من حقن مجموعة كبيرة من النصوص في بداية الجلسة، اجلب أجزاءً صغيرة في الوقت المناسب، قريبة من لحظة الحاجة إليها.
  1. ضع ميزانية لموجه النظام. كل جملة في الموجه تتنافس مع الذاكرة العاملة. إذا أمكن تقصير قاعدة دون فقدان الدقة، فقصّرها. إذا كان المثال زائدًا، فاحذفه.
  1. قس كل شيء. لا يمكنك إدارة استهلاك توكنز لا تراه. احسب عدد التوكنز لكل خطوة، ولكل حلقة، ولكل جلسة حتى تصبح العادة تلقائية.

هذه العادات رخيصة في التنفيذ وفعّالة فورًا. بقية هذا المقال تُظهر الآليات الملموسة.

المتطلبات

لمتابعة الأمثلة في هذا المقال، تحتاج إلى:

  • بايثون 3.10 أو أحدث.
  • أداة بيئة افتراضية مثل venv.
  • مكتبتي Hugging Face وهما transformers و datasets.
  • اختياريًا، tiktoken لعدّ التوكنز مع النماذج المتوافقة مع OpenAI.
  • مفتاح API فقط إذا كنت تخطط للاختبار ضد نموذج مستضاف؛ جميع الأمثلة تعمل محليًا.

يستخدم الإعداد عمدًا أدوات محلية مفتوحة. قياس التوكنز لا يتطلب وحدة معالجة رسومية، ويمكنك تشغيل كل مثال على جهاز كمبيوتر محمول أثناء استراحة القهوة.

التثبيت خطوة بخطوة

أولًا، أنشئ بيئة افتراضية معزولة حتى لا تتداخل الحزم التي نثبّتها مع بقية نظامك:

python -m venv ace-env

هذا ينشئ مجلدًا باسم ace-env يحتوي على بايثون الثنائي الخاص به ومجلد المكتبات.

فعّل البيئة. يختلف الأمر حسب نظام التشغيل؛ على لينكس و macOS:

source ace-env/bin/activate

على ويندوز:

ace-env\Scripts\activate

بعد التنشيط، يجب أن يظهر (ace-env) في بداية موجه الصدفة.

رقِّ pip إلى أحدث إصدار ليعمل حل التبعيات بشكل جيد:

pip install --upgrade pip

ثبّت الحزم الأساسية. يمنحنا transformers أدوات عمل للتوكنيزر والأدوات المساعدة للنماذج، بينما datasets مفيد لتحميل مجموعات تقييم صغيرة:

pip install transformers datasets

إذا كنت تعمل مع واجهات برمجة تطبيقات بنمط OpenAI وتريد عدّ التوكنز باستخدام نفس عائلة التوكنيزر التي تستخدمها الواجهة، ثبّت tiktoken أيضًا:

pip install tiktoken

تحقق من التثبيت باستيراد المكتبات وطباعة إصداراتها:

python -c "import transformers; import datasets; print('transformers', transformers.__version__); print('datasets', datasets.__version__)"

إذا ثبّتّ tiktoken، تحقق منه بنفس الطريقة:

python -c "import tiktoken; print('tiktoken', tiktoken.__version__)"

اكتمل الإعداد. لا يوجد خادم لتشغيله ولا نموذج لتنزيله؛ عدّ التوكنز يعمل بالكامل دون اتصال.

أمثلة الاستخدام

1. عدّ التوكنز قبل التصميم

العادة الأولى هي القياس. قبل أن تقرر ما إذا كان السياق منتفخًا، تحتاج إلى طريقة موثوقة لعدّ التوكنز في موجهاتك ومخرجات الأدوات. الدالة التالية تستخدم توكنيزر من Hugging Face:

from transformers import AutoTokenizer

def count_tokens(text: str, model_id: str = "gpt2") -> int:
    tokenizer = AutoTokenizer.from_pretrained(model_id)
    return len(tokenizer.encode(text, add_special_tokens=False))

example = "RESULT: invoice_2024_05_221.pdf contains 4 line items totaling $12,500."
print(count_tokens(example))

توكنيزر gpt2 هو بديل محلي شائع الاستخدام للعديد من النماذج الحديثة، ويعمل دون مفتاح API. إذا كان نموذجك المستهدف معروفًا، استبدل model_id باسم توكنيزر ذلك النموذج.

2. اقتصاد مخرجات الأدوات عند الحدود

عندما تُرجع أداة بيانات JSON ضخمة، يكون من المغري حقن الكل. دالة اقتصاص بسيطة تُبقي الرأس والذيل، حيث توجد البيانات الوصفية المهمة عادةً، وتزيل الوسط:

def trim_tool_output(output: str, keep: int = 400) -> str:
    if len(output) <= keep:
        return output
    half = keep // 2
    return (
        output[:half]
        + f"\n...[trimmed {len(output) - keep} characters]...\n"
        + output[-half:]
    )

large_http_body = '{"status": "ok", "items": [' + ','.join(f'{{"id": {i}}}' for i in range(1000)) + ']}'
print(trim_tool_output(large_http_body, keep=300))

هذا يحافظ على البنية والحدود للحمولة مع التخلص من الجزء الأوسط المتكرر. في حلقة الوكيل، طبّق هذه الدالة عند نقطة إدراج نتيجة الأداة في السياق، وليس لاحقًا. بمجرد اقتصاص المخرجات الخام، لا تُبقِ النسخة غير المقتصة في مكان آخر "للاحتياط" — فهذا يهزم الغرض.

3. استبدال سجل المحادثة بسجل حالة

التسرب الأكثر شيوعًا للتوكنز في الأنظمة الوكيلية هو النص الكامل للمحادثة. بدلاً من تخزين كل رسالة واستدعاء أداة وتأمل، حافظ على سجل قصير يُحدَّث بعد كل خطوة:

class AgentLedger:
    def __init__(self, max_entries: int = 5):
        self.entries = []
        self.max_entries = max_entries

    def record(self, step: int, action: str, conclusion: str) -> None:
        self.entries.append(f"step {step}: ran {action} -> {conclusion}")
        self.entries = self.entries[-self.max_entries:]

    def render(self) -> str:
        return "\n".join(self.entries)

ledger = AgentLedger(max_entries=3)
ledger.record(1, "search", "found 3 candidates")
ledger.record(2, "read_doc", "candidate A missing license")
ledger.record(3, "verify", "candidate B is valid")
ledger.record(4, "summarize", "ready to answer")
print(ledger.render())

يفقد الوكيل الوصول إلى التفكير الخام للخطوات الثلاث الأولى، لكنه يحتفظ بما يهم: ما الذي فعله وما الذي استنتجه. بالنسبة للعديد من المهام، هذا كافٍ للسلوك المتماسك طويل المدى. تتزايد تكلفة التوكنز للسجل خطيًا مع عدد الإدخالات — وليس مع طول النص الكامل للمحادثة. هذا هو التغيير الأكثر فعالية على الإطلاق الذي يمكنك إجراؤه على وكيل قائم.

4. بناء موجه نظام مضغوط

يُدفع ثمن موجهات النظام في كل دورة، لذا تتضاعف تكلفة التوكنز الخاصة بها مع عدد الحلقات التي يشغّلها الوكيل. الموجه الجيد دقيق: يذكر دور الوكيل، وصيغة كل خطوة، وقواعد الميزانية. الموجه السيئ يدفن تلك التعليمات في أمثلة وتحذيرات. قالب بسيط يوضح المبدأ:

SYSTEM_PROMPT = """You are a research assistant.
Work in steps. After each step, write a single line:
[step N] <action> -> <conclusion>
Keep the ledger under 10 lines. Do not recap old steps."""

print(count_tokens(SYSTEM_PROMPT))

ستختلف الصياغة الدقيقة حسب مهمتك، لكن الانضباط هو نفسه: إذا أمكن حذف جملة دون تغيير السلوك الملاحَظ، فاحذفها. عند الشك، أجرِ اختبار A/B صغيرًا مع الجملة وبدونها وقارن معدلات نجاح المهمة، وليس حدسك.

تجميع كل ذلك معًا

عندما تجمع بين هذه الممارسات، يكون التأثير تراكميًا. قد تبدو الجلسة النموذجية لوكيل هكذا:

  • موجه النظام 150 توكنًا بدلاً من 800.
  • مخرجات الأدوات مقتصّة إلى 400 حرف لكل منها بدلاً من 5000.
  • سجل المحادثة عبارة عن خمسة أسطر بدلاً من نص كامل لـ40 دورة.
  • الاسترجاع يجلب ثلاث قطع قصيرة بدلاً من عشرة مستندات طويلة.

المهمة نفسها تعمل الآن بعدد توكنز أقل بمرتبة من الحجم. ينخفض زمن الاستجابة لأن معالجة الإدخال أسرع. تنخفض التكلفة لأن تسعير الإدخال مضاعف عبر الدورات. وفي كثير من الحالات، تتحسن الجودة، لأن النموذج لم يعد مجبرًا على البحث عن إشارة في بحر من الضوضاء.

هناك حدود. بعض المهام تتطلب حقًا مستندات طويلة في السياق، والضغط العدواني قد يفقد الصياغة الدقيقة التي يحتاجها الوكيل. التحليل القانوني المثقّل بالاستشهادات، على سبيل المثال، قد يتطلب نصًا مصدريًا حرفيًا. الهدف ليس صفر توكنز؛ إنه أصغر سياق يُكمل المهمة بشكل موثوق. هذا هو التعريف العملي لـ ACE المنفذ بشكل صحيح: ليس "كم يمكن للنموذج أن يحمل" بل "كم تحتاج المهمة فعلًا".

تمرين مفيد هو أخذ أحد وكلائك الحاليين، وتشغيله على حالة اختبار قياسية، وعدّ إجمالي التوكنز المستهلك من البداية إلى النهاية. ثم طبّق الأمثلة الأربعة أعلاه واحدة تلو الأخرى، مع إعادة تشغيل حالة الاختبار بعد كل تغيير. ستكتشف بسرعة أي خطوة في خط أنابيبك هي الأكبر استهلاكًا — وما إذا كانت تستحق مكانها في السياق أصلًا.

الخلاصة

غالبًا ما تُصاغ هندسة السياق الوكيلية كمشكلة حجم: نماذج أكبر، نوافذ أكبر، ميزانيات أكبر. منشور IBM Research "Thinking of ACE? We Can Do It with Fewer Tokens" يطرح النقطة المعاكسة، والأدوات العملية في هذا المقال تسير في الاتجاه نفسه. كفاءة التوكنز ليست تحسين أداء تطبقه بعد بناء الوكيل. إنها قيد تصميم تطبقه من الموجه الأول.

ابدأ بقياس ما ينفقه وكيلك فعلًا. ثم اقتصّ ما لا يحتاجه. ثم استبدل التاريخ الخام بالبنية. ستجد على الأرجح أن الوكيل كان يحمل أكثر بكثير مما استخدمه أبدًا — وأن عددًا أقل من التوكنز، إذا استُخدم عمدًا، كافٍ.

المصادر