Reference OS v8 5 دقائق قراءة ١٧ مايو ٢٠٢٦ informational: فهم نموذج Needle وكيفية تجربته محلياً Needle: نموذج استدعاء أدوات بحجم 26M معامل يعمل على أي جهاز – دليل تجريبي عربي ستتعلم كيفية تشغيل نموذج…

Show HN: Needle: We Distilled Gemini Tool Calling into a 26M Model
اختر القسم الذي تحتاجه الآن
الفكرة التي تمنع التسرع
تعتقد أن نماذج استدعاء الأدوات تحتاج إلى موارد سحابية ضخمة؟ نموذج بحجم 26M معامل يعمل على حاسوبك العادي قد يغير هذه القناعة.
قبل أن تطبق، اعرف أين تقف بالضبط
لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه
ظهر في Hacker News نموذج Needle من Cactus Compute، وهو نموذج استدعاء أدوات (tool calling) بحجم 26 مليون معامل فقط. الفكرة: استدعاء الأدوات لا يحتاج إلى نماذج ضخمة؛ يكفي نموذج صغير متخصص يعمل على أي جهاز. هذا الدليل يشرح لك كيفية تجربته محلياً، خطوة بخطوة، مع أمثلة عملية وأخطاء شائعة.
ملاحظة: README المشروع غير واضح بالكامل، لذا الخطوات تقريبية بناءً على بنية المشروع. لا تتردد في الرجوع إلى المستودع الرسمي لأي تحديثات.
Needle هو نموذج لغة صغير (26M معامل) متخصص في مهمة واحدة: استدعاء الأدوات. يعني إذا قلت له "حول 100 دولار إلى ريال سعودي"، يرجع JSON مثل: {'tool': 'convert_currency', 'args': {'amount': 100, 'from': 'USD', 'to': 'SAR'}}. الفكرة أن النماذج الكبيرة تهدر مواردها في التفكير العام، بينما استدعاء الأدوات مجرد مطابقة واستخراج.
يحتاجه: مطور يريد بناء وكيل ذكي (agent) يعمل محلياً، صاحب مشروع صغير يريد أتمتة مهام دون اشتراكات سحابية، باحث في النماذج الصغيرة.
لا يحتاجه: من يريد نموذج دردشة عام، أو يحتاج دقة عالية في مهام معقدة، أو يفضل حلولاً جاهزة مثل OpenAI.
الخطوات التالية تقريبية بناءً على بنية المشروع. قد تختلف بعد تحديث README.
git clone https://github.com/cactus-compute/needle.gitcd needlepip install -r requirements.txt (إذا لم يوجد، جرب pip install torch transformers)from transformers import AutoModelForCausalLM, AutoTokenizer مع اسم النموذج cactus-compute/needle.مثال عملي: استدعاء أداة تحويل العملات.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = 'cactus-compute/needle'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# تعريف الأداة
tools = [
{
'name': 'convert_currency',
'description': 'تحويل عملة إلى أخرى',
'parameters': {
'type': 'object',
'properties': {
'amount': {'type': 'number'},
'from': {'type': 'string'},
'to': {'type': 'string'}
},
'required': ['amount', 'from', 'to']
}
}
]
prompt = 'حول 100 دولار إلى ريال سعودي'
inputs = tokenizer(prompt, return_tensors='pt')
outputs = model.generate(**inputs, max_new_tokens=100)
result = tokenizer.decode(outputs[0])
print(result)
# يتوقع أن يخرج JSON مشابه لـ: {"tool": "convert_currency", "args": {"amount": 100, "from": "USD", "to": "SAR"}}
نعم، إذا كنت تبحث عن نموذج خفيف وسريع لمهمة محددة. لكنه ليس جاهزاً للإنتاج بعد؛ قد يحتاج ضبطاً دقيقاً على أدواتك. الأداء جيد في المهام البسيطة، لكنه يخطئ في الأدوات المعقدة.
نموذج لغة صغير متخصص في استدعاء الأدوات، مبني على Simple Attention Networks.
نعم، مفتوح المصدر برخصة Apache 2.0.
Python 3.8+، PyTorch، transformers، و2GB RAM.
بعد تحميل النموذج، نعم.
Needle أصغر بكثير وأسرع، لكنه أقل دقة ومرونة.
النموذج مدرب على بيانات إنجليزية بشكل أساسي، لكنه قد يفهم العربية البسيطة.
نفس الخطوات، تأكد من تثبيت Python وPyTorch بشكل صحيح.
Gorilla (7B) أو OpenAI Function Calling.
Needle مشروع واعد في مجال استدعاء الأدوات بنماذج صغيرة. جربه على جهازك، وشارك ملاحظاتك مع المجتمع. تذكر أن المشروع جديد، لذا توقع بعض النواقص.
خطوات عملية مرتبة من التشخيص إلى النتيجة
لماذا؟ للحصول على كود النموذج والملفات اللازمة
كيف؟ git clone https://github.com/cactus-compute/needle.git
الناتج: مجلد needle يحتوي على الكود
لماذا؟ لتثبيت المكتبات المطلوبة (PyTorch, transformers)
كيف؟ pip install torch transformers
الناتج: تثبيت المكتبات بنجاح
لماذا؟ لتحميل أوزان النموذج من Hugging Face
كيف؟ from transformers import AutoModelForCausalLM, AutoTokenizer; model = AutoModelForCausalLM.from_pretrained('cactus-compute/needle')
الناتج: نموذج جاهز للاستخدام
لماذا؟ لتجربة استدعاء أداة عملياً
كيف؟ استخدم الكود المقدم في المقال مع تعريف أداة convert_currency
الناتج: JSON يحتوي على الأداة والوسائط
حوّل القراءة إلى تنفيذ سريع
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = 'cactus-compute/needle'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
tools = [{'name': 'convert_currency', 'description': 'تحويل عملة إلى أخرى', 'parameters': {'type': 'object', 'properties': {'amount': {'type': 'number'}, 'from': {'type': 'string'}, 'to': {'type': 'string'}}, 'required': ['amount', 'from', 'to']}}]
prompt = 'حول 100 دولار إلى ريال سعودي'
inputs = tokenizer(prompt, return_tensors='pt')
outputs = model.generate(**inputs, max_new_tokens=100)
result = tokenizer.decode(outputs[0])
print(result)اعرف أين يتعثر الناس وكيف تتجنب ذلك
ماذا تفعل حسب حالتك؟
إذا: إذا كنت تبحث عن نموذج خفيف وسريع لمهمة محددة
إذن: جرب Needle
إذا: إذا كنت تحتاج دقة عالية في مهام معقدة
إذن: استخدم Gorilla (7B) أو OpenAI Function Calling
إذا: إذا كان README غير واضح
إذن: اتبع الخطوات التقريبية في هذا الدليل
جدول صغير يمنع التسويف
نقاط مختصرة ترجع لها لاحقاً
1. حجم النموذج: 26 مليون معامل فقط
2. السرعة: 6000 tok/s prefill، 1200 tok/s decode
3. الترخيص: Apache 2.0
4. متطلبات RAM: 2GB على الأقل
5. يعمل على CPU بدون GPU
6. مصمم خصيصاً لاستدعاء الأدوات وليس الدردشة
7. README المشروع غير واضح حالياً
8. النموذج مدرب أساساً على الإنجليزية
إجابات مباشرة على ما يبحث عنه الزائر
تعريفات مختصرة تمنع الالتباس
عملية تحويل طلب طبيعي إلى استدعاء دالة محددة مع وسائطها.
بنية شبكة عصبية مبسطة تستخدم آلية الانتباه.
مرحلة معالجة المدخلات قبل بدء التوليد.
مرحلة توليد المخرجات رمزاً برمز.
استخدمها كمسارات متابعة داخل نفس الموضوع
تحول القارئ: من متشكك في جدوى النماذج الصغيرة إلى ممارس يجرب Needle على جهازه
القيمة الحقيقية تظهر عند العودة والتطبيق
لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.
Needle مشروع واعد في مجال استدعاء الأدوات بنماذج صغيرة. جربه على جهازك، وشارك ملاحظاتك مع المجتمع. تذكر أن المشروع جديد، لذا توقع بعض النواقص. ابدأ بتجربة بسيطة، وقيم الأداء بنفسك.
حتى يبقى المرجع صالحاً مع الوقت
FAQ
استمر في القراءة