# خطة الخادم الشخصي (GPU) — بديل محلي للصوت وللـ LLM

> الهدف: جهاز شخصي واحد بكرت شاشة يعمل كـ:
> 1. **خادم صوت** (بديل ElevenLabs) — استنساخ صوت عربي/إنجليزي عبر SILMA TTS
> 2. **خادم LLM** — عبر LM Studio بكتابة الـIP فقط
> مع إمكانية تخصيص المسار **لكل عميل** أو استخدام **الافتراضي العام**.

---

## أولاً: أفضل نموذج GPU من RunPod (أسعار يوليو 2026)

### للصوت فقط (SILMA TTS — نموذج 150M خفيف)
| الخيار | VRAM | السعر | التقييم |
|--------|------|-------|---------|
| **Serverless A4000/RTX 4000** | 16GB | $0.58/ساعة (~$0.00016/ثانية) | ⭐ **الأفضل** — تدفع فقط أثناء التوليد؛ المقطع يكلف أقل من نصف سنت |
| **Pod RTX A5000** | 24GB | **$0.27/ساعة** (~$195/شهر) | ⭐ أفضل قيمة للتشغيل الدائم 24/7 |
| Pod L4 | 24GB | $0.39/ساعة | بديل حديث وموفر للطاقة |

### للصوت + LLM عربي معًا على نفس الـPod
| النموذج المستهدف | GPU الموصى به | السعر |
|------------------|---------------|-------|
| LLM حتى 14B (SILMA-9B, Qwen3-14B, ALLaM-7B) + TTS | **RTX A5000 24GB** | $0.27/ساعة |
| LLM حتى 32-34B (Jais-30B, ALLaM-34B, Qwen3-32B) + TTS | **A40 48GB** | $0.44/ساعة |
| أقصى أداء | RTX 6000 Ada 48GB | $0.77/ساعة |

**الخلاصة:** ابدأ بـ**Serverless A4000** للصوت (تكلفة شبه معدومة مع استخدامك الحالي)، وإن أضفت LLM انتقل لـ**Pod A5000** ($0.27/ساعة = أرخص 24GB في السوق).

**نقطة التعادل مع الجهاز الشخصي:** Pod A5000 يكلف ~$195/شهر = ~$2340/سنة. جهاز شخصي بـRTX 3090 مستعمل (~$1100 كامل) يسترد ثمنه خلال **5-6 أشهر**.

---

## ثانيًا: مواصفات الجهاز الشخصي الموصى بها

### الخيار الاقتصادي (~$1,100) — يكفي للصوت + LLM حتى 14B
- **GPU: RTX 3090 مستعمل (24GB)** — أهم قطعة؛ الـ24GB تفتح كل الاستخدامات
- CPU: Ryzen 5 7600 / i5-13400
- RAM: 64GB DDR5 (مهم لـLM Studio عند تحميل نماذج كبيرة)
- تخزين: NVMe 2TB (النماذج تستهلك مساحة: كل LLM مكمم 8-20GB)
- نظام: Ubuntu Server 24.04 (أو Windows إن كنت ستستخدم LM Studio بواجهته)

### الخيار الموصى به (~$2,300) — كل شيء بسرعة ممتازة
- **GPU: RTX 4090 (24GB)** — توليد صوت أقل من 0.5 ثانية، وLLM 14B بـ60+ توكن/ثانية
- CPU: Ryzen 7 7700 • RAM: 64GB • NVMe 2TB • PSU 1000W

### الخيار الأقصى (~$3,500+)
- **GPU: RTX 5090 (32GB)** أو **2× RTX 3090 (48GB مجمعة)** — يشغّل Jais-30B/ALLaM-34B محليًا

---

## ثالثًا: خطة خادم الصوت (بديل ElevenLabs)

### البرمجيات على الجهاز
```bash
# Ubuntu + تعريفات NVIDIA + CUDA
sudo apt install nvidia-driver-550
pip install silma-tts fastapi uvicorn python-multipart

# خادم SILMA API — نفس البروتوكول الذي تدعمه المنصة جاهزًا:
#   GET  /health
#   POST /synthesize (multipart: audio, text, reference_text, speed, seed)
```

### كشف الجهاز للإنترنت بأمان (اختر واحدًا)
1. **Cloudflare Tunnel (موصى به — مجاني)**: لا يحتاج IP ثابتًا ولا فتح منافذ؛ يعطيك `https://voice.yourdomain.com` مشفرًا.
   ```bash
   cloudflared tunnel create halavoice-gpu
   cloudflared tunnel route dns halavoice-gpu voice.yourdomain.com
   ```
2. **Tailscale**: شبكة خاصة بين السيرفر وجهازك (الأكثر أمانًا، لا يمر بالإنترنت العام).
3. IP ثابت + Caddy (HTTPS تلقائي) + توكن في الهيدر.

### الربط بالمنصة — **جاهز الآن بدون أي كود جديد** ✅
- **افتراضي عام (كل العملاء):** لوحة الأدمن ← Voice AI ← **RunPod GPU TTS** ← Mode: **Pod** ← ألصق رابط جهازك (`https://voice.yourdomain.com`) ← Test ← Save. (رغم الاسم، الوضع Pod يقبل أي URL — جهازك الشخصي، RunPod، أي VPS بـGPU.)
- **تخصيص لكل عميل:** إعدادات SILMA للمستخدم تحتوي حقل `apiEndpoint` — أي عميل يوضع له رابط خاص يتجاوز الافتراضي.
- **أولوية المسار (مطبقة فعلاً في الكود):** endpoint العميل ← الافتراضي العام (RunPod/جهازك) ← CPU المحلي (fallback تلقائي).

### توسعة مستقبلية للصوت (اختياري)
- إضافة **faster-whisper large-v3-turbo** على نفس الجهاز = STT عربي محلي (بديل تفريغ المكالمات السحابي).
- إضافة **Lahgtna** للهجات (مصري/سعودي/مغربي/عراقي) خلف نفس الـAPI.

---

## رابعًا: خطة خادم الـ LLM المحلي (LM Studio)

### على الجهاز الشخصي
1. ثبّت **LM Studio** → حمّل النماذج (GGUF مكمم Q4_K_M):

| النموذج | الحجم | VRAM المطلوب | الأفضل في |
|---------|-------|---------------|-----------|
| **SILMA-9B-Instruct** | ~6GB | 12GB | عربي ممتاز + خفيف ⭐ للبداية |
| **Qwen3-14B** | ~9GB | 16GB | توازن عربي/منطق ⭐ الموصى به |
| ALLaM-7B | ~5GB | 10GB | عربي سعودي رسمي |
| Jais-13B | ~8GB | 16GB | لهجات عربية |
| Qwen3-32B | ~20GB | 24GB (بالكاد) | الأقوى على 3090/4090 |

2. فعّل **Developer → Local Server** في LM Studio → يعمل على `http://0.0.0.0:1234/v1` (متوافق مع OpenAI API بالكامل).
3. اكشفه بنفس طريقة الصوت (Cloudflare Tunnel: `llm.yourdomain.com`).
4. **للإنتاج الجاد** (عدة عملاء متزامنين): استبدل LM Studio بـ**vLLM** أو **Ollama** — نفس واجهة OpenAI API، لكن أداء تزامن أعلى بكثير. البنية في المنصة واحدة لا تتغير.

### التكامل المطلوب بناؤه في المنصة (خطة التنفيذ)

**المرحلة 1 — إعداد عام (أدمن):** ~يوم عمل
- إعدادات `custom_llm` في global_settings: `{ enabled, baseUrl, apiKey?, modelId, name }`
- بطاقة أدمن "Custom LLM (LM Studio / OpenAI-compatible)" بجانب بطاقة RunPod: حقل **Base URL** (هنا تُكتب `http://IP:1234/v1` أو رابط الـtunnel) + زر Test (يستدعي `GET {baseUrl}/models`)
- إضافة صف في `llm_models` بمزود `custom` ليظهر في قوائم اختيار النموذج

**المرحلة 2 — توجيه الطلبات:** ~يوم عمل
- نقاط الدمج (كلها تستخدم OpenAI SDK أو fetch مباشر — التعديل هو تمرير `baseURL`):
  - ردود واتساب الآلية: `plugins/whatsapp-integration/server/evolution-service.js` (الرابط ثابت حاليًا `api.openai.com` — يصبح قابلاً للتهيئة)
  - منفّذ التدفقات: `server/services/whatsapp-flow-executor.ts` (`new OpenAI({ apiKey, baseURL })`)
  - تحليلات المكالمات والـCRM: `call-insights.service.ts`, `crm-lead.service.ts`
- المنطق: إذا كان النموذج المختار مزوده `custom` → استخدم baseUrl المخصص

**المرحلة 3 — تخصيص لكل عميل:** ~يوم عمل
- جدول `user_custom_llm` (userId, baseUrl, apiKey, modelId, isActive) + تبويب في إعدادات المستخدم
- **أولوية المسار:** endpoint العميل ← الافتراضي العام ← OpenAI/Groq السحابي

**⚠️ حدود مهمة يجب معرفتها:**
- LM Studio **لا يدعم OpenAI Realtime API** (الصوت اللحظي في المكالمات) — المكالمات الصوتية اللحظية تبقى على OpenAI/ElevenLabs. الـLLM المحلي يخدم: **واتساب، الشات، التدفقات، التحليلات، التلخيص** (وهي الأكثر استهلاكًا للتوكنز أصلًا).
- أمّن الرابط: LM Studio بلا مصادقة افتراضيًا — لا تكشف المنفذ 1234 مباشرة أبدًا؛ استخدم Tunnel + Access policy أو Tailscale.

---

## خامسًا: ملخص التنفيذ بالترتيب

| # | الخطوة | الحالة |
|---|--------|--------|
| 1 | تكامل RunPod (صوت) بوضعيه | ✅ **منجز** |
| 2 | تجربة Serverless A4000 للصوت فورًا | جاهز — يحتاج حساب RunPod فقط |
| 3 | شراء/تجهيز الجهاز الشخصي (3090/4090) | قرار شراء |
| 4 | خادم الصوت على الجهاز + ربطه كـPod URL | بدون كود جديد — إعداد فقط |
| 5 | تكامل Custom LLM (المراحل 1-3 أعلاه) | ~3 أيام عمل تطوير |
| 6 | STT محلي (Whisper) على نفس الجهاز | توسعة لاحقة |
