LocalAI: كيف تستبدل OpenAI API بنسخة خاصة على سيرفرك

عندك تطبيق يستخدم OpenAI API؟ غيّر endpoint واحد بس. LocalAI يشغّل نماذج مفتوحة المصدر بنفس الـ API.
ما هو LocalAI؟
LocalAI هو بديل مفتوح المصدر لـ OpenAI API يعمل بالكامل على سيرفرك المحلي. يوفر نفس واجهة API التي يستخدمها OpenAI — يعني أي تطبيق يعمل مع OpenAI يعمل مع LocalAI بتغيير سطر واحد فقط: عنوان الـ API.
الفكرة الأساسية: بدلاً من إرسال بياناتك لسيرفرات OpenAI في أمريكا، تشغّل النماذج محلياً وتستخدم نفس الـ API. التطبيق لا يعرف الفرق.
لماذا LocalAI وليس Ollama؟
| المعيار | LocalAI | Ollama |
|---|---|---|
| توافق OpenAI API | كامل 100% | جزئي |
| النماذج المدعومة | LLM + صور + صوت + Embeddings | LLM + Embeddings فقط |
| توليد صور | نعم (Stable Diffusion) | لا |
| تحويل نص لصوت | نعم (TTS) | لا |
| تحويل صوت لنص | نعم (Whisper) | لا |
| Function Calling | نعم | جزئي |
| Embedding API | نعم | نعم |
| سهولة التثبيت | متوسطة | سهلة جداً |
| استهلاك الموارد | أعلى | أقل |
الخلاصة: Ollama أسهل إذا تحتاج نماذج نصية فقط. LocalAI أشمل إذا تحتاج API كامل متوافق مع OpenAI يشمل صور وصوت.
ماذا يمكن تشغيله على LocalAI؟
نماذج اللغة (Chat/Completion)
| النموذج | الحجم (Q4) | الاستخدام |
|---|---|---|
| Llama 3.1 8B | 4.7 GB | محادثات عامة |
| Mistral 7B | 4.1 GB | تحليل وتصنيف |
| Qwen 2.5 7B | 4.4 GB | محتوى عربي |
| Phi-3 Mini | 2.2 GB | مهام خفيفة |
| CodeLlama 7B | 4.0 GB | برمجة |
نماذج أخرى
| الوظيفة | النموذج | الحجم |
|---|---|---|
| توليد صور | Stable Diffusion | 4-7 GB |
| تحويل صوت لنص | Whisper | 1.5 GB |
| تحويل نص لصوت | Piper TTS | 100 MB |
| Embeddings | all-MiniLM-L6 | 80 MB |
| توليد رمز | StarCoder | 3-7 GB |
متطلبات السيرفر
بدون GPU (نماذج نصية فقط)
| المكون | الحد الأدنى | المفضّل |
|---|---|---|
| المعالج | 4 vCPU | 8 vCPU |
| الذاكرة | 8 GB RAM | 16 GB RAM |
| التخزين | 40 GB SSD | 80 GB SSD |
| النظام | Ubuntu 22.04 | Ubuntu 24.04 |
مع GPU (كل الوظائف)
| المكون | الحد الأدنى | المفضّل |
|---|---|---|
| GPU | 8 GB VRAM | 16-24 GB VRAM |
| المعالج | 4 vCPU | 8 vCPU |
| الذاكرة | 16 GB RAM | 32 GB RAM |
| التخزين | 100 GB SSD | 200 GB SSD |
التثبيت خطوة بخطوة
الخطوة 1: تجهيز Docker
sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo usermod -aG docker $USER
newgrp docker
الخطوة 2: إنشاء ملف Docker Compose
mkdir -p /opt/localai && cd /opt/localai
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
localai:
image: localai/localai:latest-cpu
# أو للـ GPU:
# image: localai/localai:latest-gpu-nvidia-cuda-12
restart: always
ports:
- "8080:8080"
environment:
- MODELS_PATH=/models
- THREADS=4
- CONTEXT_SIZE=2048
- DEBUG=false
volumes:
- ./models:/models
- ./config:/config
# إذا عندك GPU:
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
volumes:
localai_models:
EOF
docker compose up -d
الخطوة 3: تحميل النماذج
# تحميل Llama 3.1 8B
curl http://localhost:8080/models/apply -H "Content-Type: application/json" \
-d '{"id": "huggingface://TheBloke/Llama-3.1-8B-GGUF/llama-3.1-8b.Q4_K_M.gguf"}'
# أو تحميل نموذج جاهز من معرض LocalAI
curl http://localhost:8080/models/apply -H "Content-Type: application/json" \
-d '{"id": "llama3.1-8b-instruct"}'
الخطوة 4: التحقق من التشغيل
# قائمة النماذج المتاحة
curl http://localhost:8080/v1/models
# اختبار محادثة
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.1-8b-instruct",
"messages": [
{"role": "user", "content": "مرحباً، ما هو LocalAI؟"}
]
}'
إعداد ملفات التكوين
ملف تكوين النموذج
cat > /opt/localai/config/llama3.yaml << 'EOF'
name: llama3.1-8b-instruct
parameters:
model: llama-3.1-8b.Q4_K_M.gguf
temperature: 0.7
top_p: 0.9
top_k: 40
max_tokens: 2048
context_size: 4096
threads: 4
template:
chat_message: |
<|start_header_id|>{{.RoleName}}<|end_header_id|>
{{.Content}}<|eot_id|>
chat: |
<|begin_of_text|>{{.Input}}<|start_header_id|>assistant<|end_header_id|>
EOF
ملف تكوين Embeddings
cat > /opt/localai/config/embeddings.yaml << 'EOF'
name: text-embedding-ada-002
parameters:
model: all-MiniLM-L6-v2-q4_0.bin
backend: sentencetransformers
embeddings: true
EOF
استبدال OpenAI في تطبيقك
Python
from openai import OpenAI
# بدلاً من:
# client = OpenAI(api_key="sk-xxx")
# استخدم:
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="not-needed" # LocalAI لا يحتاج مفتاح
)
response = client.chat.completions.create(
model="llama3.1-8b-instruct",
messages=[
{"role": "system", "content": "أنت مساعد مفيد."},
{"role": "user", "content": "اكتب خطة مشروع قصيرة."}
]
)
print(response.choices[0].message.content)
JavaScript/Node.js
const OpenAI = require('openai');
const client = new OpenAI({
baseURL: 'http://localhost:8080/v1',
apiKey: 'not-needed',
});
const response = await client.chat.completions.create({
model: 'llama3.1-8b-instruct',
messages: [
{ role: 'user', content: 'ما هي أفضل ممارسات أمن المعلومات؟' }
],
});
console.log(response.choices[0].message.content);
cURL (أي لغة)
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.1-8b-instruct",
"messages": [{"role": "user", "content": "مرحباً"}],
"temperature": 0.7
}'
Embeddings API
curl http://localhost:8080/v1/embeddings \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-ada-002",
"input": "نص للتحويل إلى متجه"
}'
النتيجة: متجه بنفس تنسيق OpenAI — يعمل مباشرة مع pgvector أو أي قاعدة متجهات.
تحويل النص إلى صوت (TTS)
# تحميل نموذج TTS
curl http://localhost:8080/models/apply -H "Content-Type: application/json" \
-d '{"id": "voice-en-us-amy-low"}'
# تحويل نص لصوت
curl http://localhost:8080/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "voice-en-us-amy-low",
"input": "Welcome to our service.",
"voice": "amy"
}' --output speech.wav
التطبيقات المتوافقة
أي تطبيق يستخدم OpenAI API يعمل مع LocalAI مباشرة:
| التطبيق | نوعه | تغيير مطلوب |
|---|---|---|
| Open WebUI | واجهة محادثة | تغيير Base URL فقط |
| n8n | أتمتة | تغيير Credentials |
| Langflow | بناء تطبيقات AI | تغيير Base URL |
| Flowise | بناء شات بوت | تغيير Base URL |
| LangChain | مكتبة Python | تغيير base_url |
| أي تطبيق مخصص | متنوع | تغيير API endpoint |
المراقبة والصيانة
مراقبة الأداء
# حالة الخدمة
curl http://localhost:8080/readyz
# استخدام الموارد
docker stats localai
النسخ الاحتياطي
# نسخ النماذج والتكوين
tar -czf localai-backup-$(date +%Y%m%d).tar.gz /opt/localai/
مقارنة التكلفة: LocalAI مقابل OpenAI API
| المقارنة | OpenAI API | LocalAI على كلاود |
|---|---|---|
| GPT-4o Mini (1M tokens) | 0.60 USD | 0 (ثابت) |
| Embeddings (1M tokens) | 0.10 USD | 0 (ثابت) |
| TTS (1M characters) | 15 USD | 0 (ثابت) |
| Whisper (دقيقة) | 0.006 USD | 0 (ثابت) |
| تكلفة السيرفر الشهرية | 0 | ~بأسعار تنافسية |
| نقطة التعادل | ~2,000 طلب/يوم | — |
للاستخدام المكثف (أكثر من 2,000 طلب يومياً)، LocalAI يوفر أكثر من 70% من التكلفة.
الخلاصة
LocalAI يحول سيرفرك إلى بديل كامل لـ OpenAI — نفس الـ API، نفس التنسيق، لكن البيانات تبقى عندك. مع خادم سحابي من كلاود (cloud.net.sa) في الرياض، تحصل على زمن استجابة زمن استجابة منخفض جداً وامتثال كامل لأنظمة حماية البيانات السعودية. باقة مؤسسة (8 vCPU، 16 GB) تشغّل LocalAI مع نماذج 7B بكفاءة. القالب جاهز بنقرة واحدة — غيّر سطر واحد في كودك وانتقل من OpenAI لسيرفرك الخاص.
ابدأ الآن
جاهز تشغّل الذكاء الاصطناعي على سيرفرك؟ اكتشف حلول استضافة AI أو صمم سيرفرك بالمواصفات المطلوبة.


