كيف تستخدم Ollama مع وكيل البرمجة محلياً
اضبط عنوان URL الأساسي على المنفذ 11434 واستخدم مفتاحاً وهمياً. تعرّف إلى طول السياق الذي قد يعطّل كل شيء، والمهام التي يبرع فيها النموذج المحلي.
ما الذي تتصل به
يمكنك استخدام Ollama مع وكيل البرمجة لديك، والاتصال أبسط مما يتوقعه معظم الناس. غيّر عنوان URL الأساسي، واختر اسم نموذج واحداً. سيظل حقل مفتاح API يطلب قيمة، لكن الخادم المحلي يتجاهلها، لذلك تصلح أي سلسلة نصية.
يستمع Ollama على المنفذ 11434، ويقدّم ثلاث واجهات API في الوقت نفسه. /api هي API الأصلية لـOllama. أما /v1 فهي الطبقة المتوافقة مع OpenAI، وتغطي بدورها عدة صيغ: /v1/chat/completions و/v1/responses و/v1/completions و/v1/models و/v1/embeddings. توضّح وثائق Ollama أن المفتاح مطلوب هناك، لكنه يُتجاهل. الواجهة الثالثة متوافقة مع Anthropic: يستخدم العميل http://localhost:11434 عنوان URL الأساسي، ثم يضيف /v1/messages، وهو المسار الذي يتحدث إليه Claude Code. تستخدم معظم الوكلاء /v1/chat/completions، بينما يستخدم Codex /v1/responses، ويستخدم Claude Code /v1/messages. يتحدث وكيلك بالفعل بإحدى هذه الواجهات، لذلك لا يتغير فيه شيء آخر.
يستغرق إعداد هذا الجزء خمس دقائق. أما قابلية استخدام النتيجة فتعتمد على إعدادين لا يغيرهما أحد تقريباً: طول السياق وkeep-alive، وتعتمد أيضاً على إسناد نوع العمل الذي يجيده النموذج إليه. سيحصل كل إعداد منهما على قسم مستقل، وستجد القيود الفعلية في النهاية.
وكلاء البرمجة التي تقبل عنوان URL أساسياً محلياً
الاختبار يتكون من سؤال واحد: هل تتيح الأداة إعداد عنوان URL أساسياً؟ إذا كانت تتيحه، فيمكنها الاتصال بخادمك.
تنشر Ollama صفحات تكامل لـClaude Code وOpenCode وCodex وCline وRoo Code وZed وJetBrains IDEs وVS Code. وتوثّق Aider دعمها الخاص لـOllama في قسم منفصل. يغطي ذلك معظم ما يقصده الناس بعبارة وكيل برمجة في أكتوبر 2026. لا تستخدم هذه الأدوات كلها البنية نفسها، ويؤدي هذا الاختلاف إلى فشل الإعدادات.
- تحتاج معظم الوكلاء إلى نقطة نهاية متوافقة مع OpenAI. امنحها عنوان URL الأساسي
http://localhost:11434/v1وأي سلسلة غير فارغة لمفتاح API. - لا يقبل Claude Code عنوان URL أساسياً لـOpenAI مطلقاً. فهو يستخدم Anthropic Messages API، ولذلك يجب ضبط
ANTHROPIC_BASE_URLعلىhttp://localhost:11434، حيث توفّر Ollama/v1/messages. - يستخدم Codex OpenAI Responses API. وتوفّر Ollama
/v1/responsesأيضاً، بدءاً من الإصدار 0.13.3. - لا يمكن إعادة توجيه وكيل لا يتيح إعداد عنوان URL أساسي، لأن نقطة النهاية مضمّنة في العميل. إذا كان الوكيل يقبل عنوان URL مخصصاً لكنه يحتاج إلى بنية API مختلفة، فضع طبقة ترجمة أمامه بدلاً من ذلك، مثل بوابة LiteLLM مستضافة ذاتياً، ثم أعد إتاحة نموذجك بالبنية التي يطلبها العميل.
يمكن لـOllama كتابة هذه الإعدادات نيابةً عنك. يشغّل ollama launch opencode OpenCode باستخدام إعداد مضمّن للنموذج الذي تختاره، وينفّذ ollama launch claude الأمر نفسه مع Claude Code، بينما يكتب ollama launch droid --config الإعدادات من دون تشغيل الأداة.
ثبّت Ollama واسحب نموذجاً يدعم استدعاء الأدوات
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama lsيضيف برنامج التثبيت وحدة systemd ويبدأ تشغيلها، لذلك يجب أن يعرض systemctl status ollama الناتج active (running). وإذا لم يعرضه، فسيعرض journalctl -e -u ollama السبب.
يجب أن يدعم النموذج استدعاء الأدوات، لأن الوكيل يعمل بهذه الطريقة. فهو يقرأ ملفاً، ويكتب patch، ويشغّل الاختبار، ثم يقرأ الفشل ويحاول مرة أخرى. النموذج الذي لا يستطيع إصدار استدعاء أداة سيصف التعديل نصياً بدلاً من تنفيذه، وقد يدخل الوكيل في حلقة أو يتوقف. ابحث عن التصنيف tools في صفحة النموذج على ollama.com قبل سحبه. يحمل qwen3-coder:30b هذا التصنيف، واعتباراً من October 2026 يكون هذا الوسم تنزيلًا بحجم 19 GB مع نافذة سياق بسعة 256K. إذا كان خادمك يعتمد على CPU فقط أو يملك قدراً قليلاً من RAM، توضّح حسابات الذاكرة الخاصة بوسم Qwen 27B على VPS ما الذي يتسع له فعلياً نطاق من 8 إلى 64 GB قبل أن تبدأ التنزيل. بعد سحب النموذج، ستُخزَّن تلك الجيجابايتات على root disk للخادم، وهو الجزء الأقل مساحة احتياطية في VPS، لذلك من المفيد قراءة مكان احتفاظ Ollama بملفات النماذج وكيفية نقلها إلى مكان آخر قبل امتلاء القرص.
تحقق الآن من الأسماء التي يوفّرها الخادم فعلياً:
curl http://localhost:11434/v1/modelsالسلاسل النصية في هذه الاستجابة هي ما يجب أن يتضمنه إعداد الوكيل، حرفياً. يؤدي التحقق منها أولاً إلى حل معظم أخطاء عدم العثور على النموذج. إذا لم يكن Ollama مثبتاً بعد، فستجد الشرح الأطول في استضافة LLM ذاتياً باستخدام Ollama على VPS.
وجّه OpenCode إلى Ollama
عدّل ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-coder:30b": {
"name": "qwen3-coder 30b"
}
}
}
}
}المفتاح ضمن models هو اسم النموذج الذي يُرسل إلى Ollama، لذلك يجب أن يطابق ollama ls تماماً. الحقل name هو مجرد التسمية التي تظهر في منتقي النماذج. شغّل opencode، وانتقل إلى موفّر Ollama، وراقب journalctl -e -u ollama للتأكد من وصول الطلب إلى خادمك بدلاً من وصوله إلى مكان آخر. يوضّح تشغيل OpenCode على VPS إعداد الوكيل نفسه.
وجّه Claude Code إلى Ollama
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3-coder:30bتم تعيين ANTHROPIC_API_KEY إلى سلسلة فارغة عمداً. يتحكم عنوان URL الأساسي في وجهة الطلبات، ويؤدي مسح المفتاح إلى إبقاء بيانات الاعتماد المستضافة خارج هذا الإعداد المحلي. يضبط ollama launch claude كل ذلك نيابةً عنك.
اعرف ما الذي لا توفره طبقة التوافق. فهي لا تطبّق tool_choice أو التخزين المؤقت للمطالبات، ولا تملك نقطة نهاية لعدّ الرموز، لذلك فإن أعداد الرموز التي تراها هي تقديرات مستمدة من أداة ترميز النموذج نفسه. كما يحمّل Claude Code مطالبة نظام كبيرة ومجموعة أدوات كبيرة، لذلك يحتاج إلى سياق أكبر مما يحتاج إليه عميل محادثة. وتتناول إمكانية الاستضافة الذاتية لـ Claude المسألة الأوسع المتعلقة بما ينتقل وما لا ينتقل.
وجّه Aider إلى Ollama
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/qwen3-coder:30bتوصي وثائق Aider باستخدام البادئة ollama_chat/ بدلاً من ollama/. يطلب Aider افتراضياً سياقاً كافياً لكل طلب، بالإضافة إلى 8k من الرموز المميزة للرد. ويتيح لك أيضاً تثبيت نافذة السياق لكل نموذج في .aider.model.settings.yml، وهذا مفيد عندما يحتاج أحد النماذج إلى نافذة مختلفة عن الإعداد الافتراضي للخادم:
- name: ollama_chat/qwen3-coder:30b
extra_params:
num_ctx: 65536لماذا ينتج إعداد يعمل نتائج غير منطقية
هذا هو القسم المهم. يختار Ollama طول السياق الافتراضي من إجمالي VRAM، أي ذاكرة الفيديو في وحدات GPU، التي يستطيع رؤيتها، ويطرح OLLAMA_GPU_OVERHEAD لكل GPU يكتشفه. يستخدم التنفيذ الحدود التالية:
البيانات وراء هذا الرسم البياني
[
{
"label": "Under 23 GiB aggregate VRAM",
"default_context_tokens": "4,096"
},
{
"label": "23 to under 47 GiB aggregate VRAM",
"default_context_tokens": "32,768"
},
{
"label": "47 GiB aggregate VRAM or more",
"default_context_tokens": "262,144"
}
]تندرج معظم خطط VPS، وكل خادم يعمل بالـCPU فقط، في الصف الأول: 4,096 من الرموز. ويمكن لعدة وحدات GPU أصغر أن تصل معاً إلى حد 47 GiB، ما يفعّل قيمة 262,144 من الرموز في الصف الأخير.
يرسل الوكيل 4096 رمزاً قبل أن ينفذ أي عمل. وتكون مطالبة النظام وتعريفات الأدوات وقائمة المستودع وأول ملف يفتحه أكبر من ذلك بالفعل. ما يحدث بعد ذلك هو جوهر المشكلة: لا يظهر أي خطأ. توضح وثائق Aider أن Ollama يتخلص بصمت من السياق الذي يتجاوز نافذة السياق. فتخرج أقدم الرموز، ويجيب النموذج بثقة عن ملف لم يعد يستطيع رؤيته، أو ينسى تعليمة أعطيتها له قبل خطوتين. تقف هذه الآلية وراء معظم التقارير التي تقول إن النموذج المحلي غبي أكثر من اللازم لكتابة التعليمات البرمجية. اختيار الرقم نفسه قرار مستقل، ويستحق ما يكلّفه كل حجم من num_ctx في ذاكرة KV cache القراءة قبل أن تستقر على قيمة.
تقول وثائق Ollama إن مهام مثل الوكلاء وأدوات البرمجة يجب ضبطها على 64000 رمز على الأقل. اضبط ذلك على الخادم:
sudo systemctl edit ollama.serviceأضف هذه الأسطر إلى ملف التجاوز:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"ثم أعد التحميل وأعد التشغيل:
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama psأرسل طلباً من وكيلك بعد إعادة التشغيل، ثم شغّل ollama ps مرة أخرى حتى يصبح هناك نموذج محمّل لفحصه. يمثل ollama ps عملية التحقق. يطبع عمود CONTEXT، ويمثل هذا الرقم ما تلقاه النموذج فعلياً. ستختلف قيمتا ID وSIZE لديك:
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:30b a1b2c3d4e5f6 24 GB 100% GPU 64000 4 minutes from nowاضبط القيمة على الخادم بدلاً من ضبطها في الوكيل، لسببين. لا يتضمن مخطط OpenAI chat completions حقلاً لطول السياق، لذلك لا يستطيع عميل متوافق مع OpenAI طلب قيمة له. كما أن الإعداد يخص الخادم، ولذلك يرثه كل وكيل توجهه إلى هذا الخادم. ولجهة الإخراج حد أعلى مستقل. وبخلاف طول السياق، ينتقل هذا الحد عبر نقطة النهاية المتوافقة، لذلك فإن num_predict وحقل max_tokens الذي يقابله هما الخياران المناسبان عندما يتوقف الرد في منتصف patch. إذا احتاج نموذج واحد إلى نافذة مختلفة، فضمّنها في نسخة منه باستخدام Modelfile:
FROM qwen3-coder:30b
PARAMETER num_ctx 65536ollama create qwen3-coder-64k -f Modelfileالسياق ليس مجانياً. تكلف النافذة الأطول ذاكرة أكبر، لذلك راقب العمود PROCESSOR. ما تريده هو 100% GPU. عندما ينتقل جزء من النموذج إلى الـCPU، ينخفض معدل الرموز بدرجة تجعل حلقة الوكيل غير قابلة للاستخدام، وتوضح طريقة قياس عدد الرموز في الثانية على LLM محلي الحد الفعلي الذي يستطيع خادمك تحمله. ويتناول مقدار RAM والـCPU الذي يحتاجه VPS لتشغيل وكيل برمجة كيفية تحديد حجم الجهاز قبل شرائه.
إبقاء النموذج محمّلاً بين الطلبات
تُفرغ Ollama النموذج من الذاكرة بعد 5 دقائق من آخر طلب افتراضياً. هذا مناسب لمربع الدردشة، لكنه غير مناسب لعمل الوكلاء. قد تتوقف لقراءة diff، وينتهي المؤقت، ثم يعيد الطلب التالي تحميل عشرات الجيجابايت من الأوزان من القرص قبل ظهور أول token. ويبدو الأمر كأنه توقف.
يقبل OLLAMA_KEEP_ALIVE سلسلة مدة مثل 10m أو 24h، أو رقماً عادياً يمثّل عدد الثواني، أو -1 لإبقاء النموذج محمّلاً بلا حد، أو 0 لإفراغه فوراً. اضبطه بجانب طول السياق:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"يتوفر حقل الطلب keep_alive في نقطتي النهاية الأصليتين /api/generate و/api/chat في Ollama، كما يتوفر كامتداد لـOllama في /v1/chat/completions. يمكن للوكيل الذي يعرّض حقول طلب إضافية إرسال هذا الحقل هناك؛ وإلا فاستخدم متغير البيئة. عندما تحتاج إلى استعادة الذاكرة، يفرغ ollama stop qwen3-coder:30b النموذج من الذاكرة دون إيقاف الخادم. إذا أردت أن يستمر الإعداد بعد إعادة التشغيل، أو أردت مقارنة إبقاء الأوزان في الذاكرة طوال اليوم باستعادة تلك الذاكرة، فإن إبقاء نموذج Ollama محمّلاً في الذاكرة يتيح الأمرين.
تشغيل Ollama على خادم منفصل
يرتبط Ollama بعنوان localhost. للوصول إليه من جهاز آخر، عيّن OLLAMA_HOST=0.0.0.0:11434 في تجاوز إعداد systemd نفسه، ثم أعد تشغيل الخدمة.
نفّذ ذلك على شبكة خاصة فقط. توضّح وثائق Ollama أن واجهة API المحلية لا تتطلب مصادقة، لذلك يعني فتح المنفذ 11434 على الإنترنت أن أي شخص يمكنه استخدام أجهزتك. هناك خياران آمنان. أبقِ الارتباط على localhost، ووجّه المنفذ عبر SSH من حاسوبك المحمول:
ssh -N -L 11434:localhost:11434 you@your-vpsسيستمر وكيلك في الإشارة إلى http://localhost:11434/v1، ولن يلاحظ الفرق. الخيار الآخر هو استخدام VPN، مع ربط Ollama بعنوان VPN بدلاً من 0.0.0.0. إذا كان عدة أشخاص أو عدة وكلاء سيشاركون جهازاً واحداً، فإن Ollama يدعم الطلبات المتوازية عندما تسمح الذاكرة بذلك، وتوضح المقارنة بين Ollama وvLLM متى يبدأ فرق معدل المعالجة في التسبب بمشكلة.
متى يتفوّق نموذج برمجي محلي، ومتى لا يتفوّق
لا يحلّ وكيل يعتمد على نموذج تستضيفه محلّ frontier API في كل مهمة. لكنه يتفوّق بوضوح في أربعة أنواع من العمل.
- التعديلات الميكانيكية واسعة النطاق، عندما يكون كل تغيير صغيراً ويمكنك التحقق منه. إعادة التسمية عبر مستودع، وإضافة type hints، وكتابة docstrings، وترجمة التعليقات. يعمل النموذج لساعات، ولا تتغير الفاتورة.
- العمل الذي يجب ألا يغادر أجهزتك. مثل شفرة عميل خاضعة لاتفاقية سرية، أو مستودع داخلي غير مسموح لك بإرساله إلى طرف ثالث.
- الأجهزة غير المتصلة بالإنترنت والمعزولة، حيث لا يوجد hosted API لاستدعائه أصلاً.
- التكلفة المتوقعة. بعد دفع تكلفة الخادم، لا يضيف الوكيل الذي يستهلك tokens داخل loop أي تكلفة إضافية، وهذا عكس API القائم على القياس. يتضمن متى تتعادل تكلفة GPU VPS مع tokens الخاصة بـAPI الحسابات.
لكنه يتراجع في المهام الطويلة متعددة الخطوات. تتطلب مهمة «اكتشف سبب فشل هذا الاختبار، وأصلح السبب، وحدّث المستدعين» عدة استدعاءات صحيحة للأدوات بالتتابع، مع بقاء السجل الكامل في السياق. قد ينتج نموذج ضمن نطاق 8B إلى 14B على خادم متواضع استدعاء أداة مشوهاً، أو يفقد الخطة بعد بضع جولات، وعندها تقضي وقتاً في توجيهه أكثر مما كانت المهمة ستستغرقه. هذه ليست مشكلة prompt يمكنك حلها بصياغة أفضل. إنها مشكلة سعة.
كما يتراجع عندما تكون تكلفة الخطأ مرتفعة ولن تقرأ كل سطر. أسند إلى النموذج المحلي مهام ضيقة تتحقق من مخرجاتها، واحتفظ بنموذج مستضاف للعمل الذي لن تراجعه خطوة بخطوة.
أنماط الفشل والرسائل التي ستظهر لك
curl: (7) Failed to connect to localhost port 11434 after 0 ms: Connection refused. الخادم لا يعمل، أو أن الوكيل يشير إلى مضيف مختلف. شغّل systemctl status ollama، ثم journalctl -e -u ollama.
يُبلغ الوكيل بأن النموذج غير موجود. الاسم في ملف الإعداد لا يطابق اسماً يوفّره الخادم. قارنه مع curl http://localhost:11434/v1/models وانسخ النص منه. العلامة جزء من الاسم، لذلك يفشل الإعداد الذي يذكر علامة لم تسحبها مطلقاً، حتى إذا كان نموذج مشابه مثبتاً.
يجيب الوكيل بنص نثري ولا يحرّر أي ملف. إما أن النموذج لا يدعم الأدوات، أو أن الطلب وتعريفات أدواته استهلكت بالفعل نافذة السياق كاملة. تحقّق من التسمية tools في صفحة النموذج، ثم تحقّق من العمود CONTEXT في ollama ps.
صمت طويل قبل الرمز الأول، ثم سرعة طبيعية. انتهت مدة keep-alive، وتجري قراءة الأوزان من القرص مرة أخرى. اضبط OLLAMA_KEEP_ALIVE.
يناقض النموذج ملفاً قرأه للتو. هذا اقتطاع للسياق. يعرض ollama ps عادةً قيمة CONTEXT أصغر مما تتوقع أنك ضبطته، لأن متغير البيئة وصل إلى shell الخاص بك بدلاً من وحدة systemd.
يعمل كل شيء، لكن ببطء، وPROCESSOR ليس 100% GPU. غالباً لا يتسع VRAM للنموذج مع سياقه. إذا كان PROCESSOR يعرض 100% CPU على جهاز يحتوي على GPU، فاستبعد السبب الآخر أولاً: قد لا يكون Ollama قد عثر على GPU أصلاً. تشير وثائق Ollama إلى أنه على Linux قد يفشل أحياناً في اكتشاف NVIDIA GPU بعد دورة suspend/resume، ويعود إلى CPU، وأن إعادة تحميل برنامج التشغيل باستخدام sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm تتجاوز هذه المشكلة. إذا عُثر على GPU واستمر التقسيم، فخفّض طول السياق، أو انتقل إلى نموذج أصغر أو quantisation أصغر. قبل إعادة السحب، يشرح ما الذي يستهلكه كل من q4_K_M وq8_0 وfp16 من الذاكرة، وأين تنخفض الجودة فعلياً مقدار المساحة التي يوفرها الانتقال إلى مستوى أدنى وما الذي ستفقده مقابله.
FAQ
هل يمكنني توجيه Claude Code إلى Ollama؟
نعم، ولكن ليس باستخدام عنوان URL متوافق مع OpenAI. يتحدث Claude Code باستخدام Anthropic Messages API، ويعرض Ollama هذا الشكل على /v1/messages عبر المنفذ نفسه 11434. صدّر ANTHROPIC_BASE_URL=http://localhost:11434 وANTHROPIC_AUTH_TOKEN=ollama، واضبط ANTHROPIC_API_KEY على قيمة فارغة، ثم شغّله باستخدام claude --model qwen3-coder:30b. يكتب ollama launch claude الإعدادات نفسها نيابةً عنك. لا تطبّق طبقة التوافق tool_choice أو التخزين المؤقت للمطالبات، ولا توفر نقطة نهاية لحساب الرموز، لذلك تكون أعداد الرموز المبلّغ عنها تقريبية.
لماذا يجيب نموذجي المحلي عن شيفرة لا يستطيع رؤيتها؟
لأن الطلب لم يعد يتسع ضمن نافذة السياق، وقد حُذف الجزء الأقدم منه من دون ظهور خطأ. يعيّن Ollama سياقه الافتراضي استناداً إلى إجمالي VRAM المكتشفة بعد طرح الحمل المكوَّن لكل GPU: عندما تكون السعة أقل من 23 GiB، يكون الإعداد الافتراضي هو 4,096 رمزاً، ومن 23 إلى أقل من 47 GiB يكون 32,768 رمزاً، وعند 47 GiB أو أكثر يكون 262,144 رمزاً. اضبط OLLAMA_CONTEXT_LENGTH=64000 في وحدة systemd، ثم أعد تشغيل Ollama، وتحقق من أن العمود CONTEXT في ollama ps يعرض القيمة الجديدة.
أي نموذج ينبغي أن أشغّل لوكيل برمجي على VPS؟
اختر أكبر نموذج يحمل وسم tools ويمكنه العمل ضمن الذاكرة مع نافذة سياق بحجم 64k، وفضّل نموذجاً محسّناً للشيفرة. يُعد qwen3-coder:30b الخيار الشائع على خادم مزود بـGPU وذاكرة VRAM كافية. إذا كان هذا الوسم يتطلب حجماً أكبر من قدرة خادمك، فإن أرقام RAM وسرعات التشغيل باستخدام CPU فقط لنموذج Nemotron 3.5 Lightning توفر مقارنة مفيدة قبل بدء التنزيل. عند أقل من نحو 14B من المعاملات، قد يجيب النموذج جيداً عن أسئلة الشيفرة، لكنه قد يفشل في التعديلات متعددة الخطوات، لأن عمل الوكيل يتأثر بأخطاء التنسيق الصغيرة في استدعاءات الأدوات. اختبره بمهمة حقيقية واحدة من مستودعك، بدلاً من استخدام مطالبة نموذجية.
هل أحتاج إلى GPU لتشغيل وكيل برمجي باستخدام نموذجي الخاص؟
نعم، عملياً. يعمل الاستدلال باستخدام CPU فقط، ويكون مناسباً للأسئلة الفردية، لكن الوكيل يرسل طلبات كثيرة لكل مهمة، ويعيد في كل طلب قراءة سجل طويل، لذلك يحوّل معدل الرموز البطيء مهمة تستغرق دقيقتين إلى مهمة تستغرق ساعة. افحص العمود PROCESSOR في ollama ps: أي قيمة غير 100% GPU تعني أن جزءاً من النموذج يعمل على CPU، وينخفض معدل الرموز بشكل حاد.