Modelfile هو القالب الذي يشكّل دور الذكاء الاصطناعي — إعداد واحد يحدد الشخصية والمهارات وحدود السلوك.
💡 نصيحة: تعليمة TEMPLATE في Modelfile تستخدم صيغة قوالب Go. المتغيرات الرئيسية تشمل {{ .System }} (محتوى موجه النظام)، و{{ .Prompt }} (إدخال المستخدم، وضع generate)، و{{ .Messages }} (قائمة الرسائل، وضع chat). فهم هذه المتغيرات ضروري لتخصيص تنسيقات الحوار — مثلاً، يمكنك استخدام قالب مخصص لجعل النموذج يُخرج JSON فقط بدون كتل Markdown، أو تنفيذ حوار بصيغة ChatML.
صيغة Modelfile الكاملة: FROM / SYSTEM / PARAMETER / TEMPLATE / LICENSE
إعداد دور موجه النظام عمليًا
ضبط PARAMETER والقوالب
استخدام متغيرات TEMPLATE
Modelfile مخصص لـ SupportBot لأليس
2. قصة حقيقية من مؤسس SaaS
⚠️ تحذير: قد تحتوي ملفات Modelfile المنزّلة من مصادر غير رسمية على تعليمات SYSTEM خبيثة (مثلاً، "أرسل إدخال المستخدم إلى خادم خارجي"). راجع دائمًا محتوى Modelfile قبل إنشاء نموذج، خاصةً تعليمات SYSTEM وTEMPLATE.
(1) المشكلة: تمرير موجه النظام في كل مرة
وجدت أليس أن كل استدعاء API يتطلب موجه نظام طويل — سهو الحذف وصعوبة الصيانة. سيناريوهات خدمة العملاء المختلفة (استرداد، شحن، استفسارات منتجات) تحتاج إعدادات أدوار مختلفة، والإدارة اليدوية فوضوية.
(2) الحل: Modelfile يحلها نهائيًا
باستخدام Modelfile، يُدمج الدور والمعلمات والقالب في النموذج — أنشئ مرة واحدة، أعد الاستخدام مرات عديدة:
BASH
# إنشاء نموذج supportbot من Modelfile
ollama create supportbot -f Modelfile
# استخدم مباشرة، بدون حاجة لموجه نظام
ollama run supportbot "I want a refund"
3. صيغة Modelfile الكاملة
💡 نصيحة: تعليمة TEMPLATE في Modelfile تدعم صيغة قوالب Go، بمتغيرات مثل {{ .System }} و{{ .Prompt }} و{{ .Response }}. فهم هذه المتغيرات ضروري لتخصيص تنسيقات الحوار — مثلاً، جعل النموذج يُخرج JSON فقط بدون كتل Markdown.
ℹ️ معلومة: تعليمة MESSAGE تتيح لك إعداد أمثلة محادثات مسبقًا (few-shot) في Modelfile، باستخدام الصيغة MESSAGE user: ... / MESSAGE assistant: .... هذا "يُظهر" نمط الإخراج المطلوب بشكل أكثر فاعلية من موجه النظام، خاصةً للتحكم في التنسيق (مثلاً، إخراج SQL فقط، إخراج JSON فقط).
(1) جدول مرجع التعليمات
التعليمة
مطلوبة
الغرض
مثال
FROM
✅
النموذج الأساسي
FROM llama3.2
SYSTEM
❌
موجه النظام
SYSTEM You are a helpful assistant
PARAMETER
❌
معلمات الاستنتاج
PARAMETER temperature 0.7
TEMPLATE
❌
قالب الحوار
TEMPLATE """{{ .Prompt }}"""
LICENSE
❌
الترخيص
LICENSE "Apache 2.0"
MESSAGE
❌
رسائل مسبقة الإعداد
MESSAGE user Hello
100%
flowchart TD
A[Modelfile] --> B[FROM: Base Model]
B --> C[SYSTEM: Role Definition]
C --> D[PARAMETER: Inference Config]
D --> E[TEMPLATE: Prompt Format]
E --> F[ollama create]
F --> G[Custom Model Ready]
MERMAID
flowchart TD
A[Modelfile] --> B[FROM: Base Model]
B --> C[SYSTEM: Role Definition]
C --> D[PARAMETER: Inference Config]
D --> E[TEMPLATE: Prompt Format]
E --> F[ollama create]
F --> G[Custom Model Ready]
(2) تفصيل تعليمة FROM
ℹ️ ملاحظة: تحدد تعليمة FROM النموذج الأساسي وهي التعليمة الوحيدة المطلوبة في Modelfile. تدعم ثلاثة مصادر: اسم النموذج الرسمي (مثلاً، FROM llama3.2، وراثة من مكتبة Ollama)، مسار ملف GGUF محلي (مثلاً، FROM ./model.gguf، استيراد نموذج منزّل من HuggingFace)، أو نموذج مخصص تم إنشاؤه مسبقًا (مثلاً، FROM my-bot، تنفيذ وراثة سلسلة النماذج). الوراثة من نموذج رسمي هي النهج الأكثر شيوعًا.
مصدر FROM
الصيغة
الوصف
نموذج رسمي
FROM llama3.2
وراثة من مكتبة Ollama
GGUF محلي
FROM ./model.gguf
استيراد من ملف محلي
نموذج مخصص
FROM my-custom-model
وراثة من نموذج مُنشأ
▶ مثال 1: Modelfile بسيط
TEXT
FROM llama3.2
SYSTEM You are a helpful assistant that only speaks in haikus.
PARAMETER temperature 0.7
BASH
# بناء النموذج
ollama create haiku-bot -f Modelfile
# اختباره
ollama run haiku-bot "What is debugging?"
# Finding the bug's lair,
# Line by line with patient care,
# Code runs free at last.
4. إعداد دور SYSTEM
(1) أنماط تصميم الأدوار
النمط
البنية
حالة الاستخدام
دور + قواعد
دور + قواعد سلوكية + تنسيق إخراج
خدمة عملاء، ترجمة، كود
أمثلة قليلة
دور + حوار نموذجي
إخراج منسّق
قيود + رفض
دور + حدود قدرات + استراتيجية رفض
سيناريوهات حساسة أمنيًا
(2) أفضل ممارسات إعداد الدور
المبدأ
الوصف
النمط المضاد
حدد الدور بوضوح
اذكر "من أنت"
"ساعدني في الترجمة"
حدد التنسيق
صِف تنسيق الإخراج
بدون تحديد تنسيق
اضبط الحدود
اذكر ما لا يمكنك فعله
بدون حدود
تحكم في الطول
اطلب موجز/مفصل
بدون تحكم في الطول
استخدم تعليمات إيجابية
استبدل السلبيات بتوجيهات إيجابية
"لا تقل أشياء غير ضرورية"
▶ مثال 2: ملفات Modelfile لأدوار مختلفة
TEXT
# Modelfile لخبير SQL
FROM codellama:7b
SYSTEM You are a PostgreSQL expert. Output ONLY valid SQL. No explanations. No markdown.
PARAMETER temperature 0.1
PARAMETER repeat_penalty 1.2
TEXT
# Modelfile لمترجم
FROM qwen2.5:7b
SYSTEM You are a professional translator. Translate the given text to the target language. Preserve formatting. Output only the translation, nothing else.
PARAMETER temperature 0.3
TEXT
# Modelfile لمراجع كود
FROM codellama:7b
SYSTEM You are a senior code reviewer. Analyze the given code for: 1) Bugs, 2) Performance issues, 3) Style violations. Rate severity as HIGH/MEDIUM/LOW. Suggest fixes.
PARAMETER temperature 0.2
PARAMETER num_ctx 8192
5. ضبط PARAMETER
(1) جدول إعداد المعلمات الشائعة
المعلمة
النوع
النطاق الموصى به
الوصف
temperature
float
0.1-1.0
التحكم في العشوائية
top_p
float
0.8-0.95
عتبة أخذ العينات النووية
top_k
int
20-50
عدد الرموز المرشحة
num_ctx
int
2048-32768
نافذة السياق
num_predict
int
128-2048
الحد الأقصى لعدد الرموز المُنشأة
repeat_penalty
float
1.1-1.5
عقاب التكرار
stop
string
مخصص
علامة إيقاف الإنشاء
(2) إعداد المعلمات حسب السيناريو
السيناريو
temperature
num_ctx
repeat_penalty
ملاحظات
توليد SQL
0.1
2048
1.2
حزم عالٍ
حوار خدمة العملاء
0.4
4096
1.1
تنوع معتدل
إكمال الكود
0.2
8192
1.2
دقة + سياق طويل
الكتابة الإبداعية
0.8
4096
1.0
عشوائية عالية
أسئلة وأجوبة RAG
0.3
8192
1.1
الواقعية أولًا
▶ مثال 3: Modelfile بمعلمات مضبوطة
TEXT
# SupportBot بمعلمات محسّنة
FROM qwen2.5:7b
SYSTEM You are SupportBot, an e-commerce customer service agent. Be polite, concise (2-3 sentences max), and helpful. If the question is outside your knowledge, say: "Let me connect you with a human agent."
PARAMETER temperature 0.4
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
PARAMETER num_predict 256
PARAMETER repeat_penalty 1.1
PARAMETER stop "\n\nCustomer:"
6. متغيرات TEMPLATE
(1) مرجع متغيرات القالب
المتغير
المعنى
حالة الاستخدام
.System
محتوى موجه النظام
وضعه في بداية القالب
.Prompt
إدخال المستخدم (generate)
وضع generate
.Messages
قائمة الرسائل (chat)
وضع chat
.Role
دور الرسالة
تمييز user/assistant
.Content
محتوى الرسالة
استخراج النص
(2) أمثلة قوالب مخصصة
نوع القالب
الغرض
الوصف
القالب الافتراضي
حوار عام
Ollama يختار تلقائيًا
قالب تعليمات
اتباع صارم للتعليمات
صيغة ### Instruction / ### Response
قالب ChatML
متوافق مع OpenAI
<
▶ مثال 4: Modelfile بقالب مخصص
TEXT
# قالب محادثة مخصص لـ SupportBot
FROM qwen2.5:7b
SYSTEM You are SupportBot for e-commerce customer service.
PARAMETER temperature 0.4
TEMPLATE """{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{- end }}
{{- range .Messages }}
<|im_start|>{{ .Role }}
{{ .Content }}<|im_end|>
{{- end }}
<|im_start|>assistant
"""
▶ مثال 5: إنشاء نموذج من ملف GGUF
TEXT
# استيراد نموذج GGUF مخصص من HuggingFace
FROM ./my-model-q4_K_M.gguf
SYSTEM You are a specialized medical QA assistant.
PARAMETER temperature 0.3
PARAMETER num_ctx 4096
LICENSE "Apache 2.0"
BASH
# إنشاء من Modelfile
ollama create medical-bot -f Modelfile
# التحقق
ollama show medical-bot
# التشغيل
ollama run medical-bot "What are common cold symptoms?"
7. مثال شامل: Modelfile مخصص لـ SupportBot لأليس
TEXT
# ============================================
# شامل: Modelfile مخصص لـ SupportBot
# خدمة عملاء تجارة إلكترونية متعددة اللغات
# ============================================
FROM qwen2.5:7b
# تعريف الدور بحدود واضحة
SYSTEM """You are SupportBot, an AI customer service agent for GlobalShop e-commerce.
Your capabilities:
- Answer questions about orders, returns, shipping, and products
- Respond in the customer's language (auto-detect)
- Be polite, concise, and empathetic
Your rules:
- Keep responses under 3 sentences
- For order-specific queries, ask for the order number
- If you cannot answer, say: "Let me connect you with a human agent."
- Never share internal pricing or competitor information
- Never process refunds directly; guide the customer to the refund portal
Common policies:
- Returns: 30 days, original condition, free return shipping
- Shipping: Free for orders over $50, 3-5 business days
- International: Available to 50+ countries, duties may apply
"""
# معلمات الاستنتاج
PARAMETER temperature 0.4
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
PARAMETER num_predict 256
PARAMETER repeat_penalty 1.1
# إيقاف الإنشاء عند علامة إدخال العميل
PARAMETER stop "Customer:"
PARAMETER stop "<|im_end|>"
# قالب محادثة (صيغة ChatML)
TEMPLATE """{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{- end }}
{{- range .Messages }}
<|im_start|>{{ .Role }}
{{ .Content }}<|im_end|>
{{- end }}
<|im_start|>assistant
"""
# تبذير بأمثلة حوار
MESSAGE user What is your return policy?
MESSAGE assistant Our return policy allows returns within 30 days of delivery in original condition. Free return shipping is provided. Would you like to start a return?
MESSAGE user Do you ship internationally?
MESSAGE assistant Yes, we ship to over 50 countries. Shipping times vary by destination, typically 7-14 business days. Import duties may apply depending on your location.
BASH
# بناء نموذج SupportBot
ollama create supportbot -f ./Modelfile
# اختبار سيناريوهات مختلفة
ollama run supportbot "I want to return order #12345"
ollama run supportbot "How much does shipping cost?" # English
ollama run supportbot "What is the return policy?" # English
❓ أسئلة شائعة
س ما العلاقة بين النموذج المُنشأ عبر Modelfile والنموذج الأصلي؟
ج النموذج المُنشأ عبر Modelfile هو "طريقة عرض" للنموذج الأصلي — يشارك ملفات الأوزان الأساسية ولا يضيف سوى إعدادات موجه النظام والمعلمات. لا يستهلك مساحة إضافية على القرص.
س هل أحتاج لإعادة إنشاء النموذج بعد تعديل Modelfile؟
ج نعم. بعد تعديل Modelfile، يجب إعادة تشغيل ollama create. المحادثات الحالية غير متأثرة؛ المحادثات الجديدة تستخدم الإعداد الجديد.
س ماذا يحدث عند تعارض PARAMETER مع خيارات استدعاء API؟
ج خيارات استدعاء API تتجاوز قيم PARAMETER في Modelfile. قيم Modelfile هي الافتراضيات؛ خيارات API هي تجاوزات وقت التشغيل.
س ماذا يحدث إذا لم أحدد TEMPLATE؟
ج يستخدم Ollama القالب الافتراضي للنموذج الأساسي. القالب الافتراضي كافٍ في معظم الحالات. القوالب المخصصة مطلوبة أساسًا عند استيراد نماذج GGUF.
س ما فائدة رسائل MESSAGE المسبقة الإعداد؟
ج تعمل كأمثلة few-shot، توجه النموذج للاستجابة بالتنسيق المتوقع. تكمل موجه النظام لكن لا تُحسب ضمن أدوار حوار المستخدم.
س كيف أنقح تأثير Modelfile؟
ج اختبر بـ --system و--parameter في سطر الأوامر أولًا، ثم أنهِ إلى Modelfile بعد التأكيد. ollama show <model> --modelfile يعرض Modelfile الكامل للنموذج المُنشأ.
📖 ملخص
تعليمات Modelfile الأساسية: FROM (النموذج الأساسي)، SYSTEM (الدور)، PARAMETER (المعلمات)، TEMPLATE (القالب)
إعداد دور SYSTEM يتبع: حدد الدور → حدد التنسيق → اضبط الحدود → تحكم في الطول
ضبط PARAMETER حسب السيناريو: temperature منخفض لـ SQL، متوسط لخدمة العملاء، مرتفع للإبداع
متغيرات TEMPLATE (.System/.Prompt/.Messages) تتحكم في تنسيق الموجه
رسائل MESSAGE المسبقة تعمل كأمثلة few-shot لتوجيه الإخراج
النماذج المُنشأة عبر Modelfile تشارك الأوزان مع الأصل، بدون مساحة إضافية
📝 تمارين
أساسي (صعوبة ⭐): أنشئ Modelfile بناءً على llama3.2 مع ضبط موجه النظام على "مساعد ترجمة"، ابنِه واختبره.
متوسط (صعوبة ⭐⭐): أنشئ Modelfile كامل لـ SupportBot لأليس، يشمل SYSTEM + PARAMETER + MESSAGE، واختبر حوارات خدمة العملاء بالإنجليزية والصينية.
منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.