تشغيل LFM2.5-24B-A2B على VPS بلا GPU مع اختبار للعربية
دليل عملي لتشغيل نموذج LFM2.5-24B-A2B من Liquid AI عبر llama-server على خادم VPS بلا بطاقة رسومية: حساب الذاكرة، خدمة systemd مغلقة على 127.0.0.1، واختبار عربي تجريه بنفسك.
الجواب المختصر
يمكنك تشغيل LFM2.5-24B-A2B على VPS بلا بطاقة رسومية (GPU) باستخدام llama-server من مشروع llama.cpp، مع ملف GGUF بتكميم Q4_K_M حجمه 14.5 GB. تحتاج إلى خادم بذاكرة 24 GB على الأقل، والأريح 32 GB. يعمل الخادم كخدمة systemd تستمع على 127.0.0.1 فقط، وتصل إليه من جهازك عبر نفق SSH. لا تدفع شيئًا مقابل كل توكن، والنصوص التي ترسلها تبقى على خادمك.
كتبنا هذا الدليل لمطوّر أو صاحب عمل صغير في العالم العربي يريد نموذجًا يفهم العربية على خادم يملكه. الأوامر مكتوبة لـ Ubuntu 24.04، ومثبّتة على إصدار محدد من llama.cpp وعلى ملف محدد من Hugging Face، حتى تحصل على النتيجة نفسها بعد شهر.
ما هو LFM2.5-24B-A2B، ولماذا يناسب معالجًا عاديًا؟
LFM2.5-24B-A2B نموذج نصي من شركة Liquid AI. تذكر بطاقة النموذج على Hugging Face أن فيه 24.0 مليار معامل (parameter) إجمالًا، ولا يعمل منها لكل توكن إلا 2.45 مليار. السبب أن النموذج من نوع MoE (خليط الخبراء، mixture of experts): فيه 64 خبيرًا، ويختار الموجِّه 4 منها لكل توكن. وتصفه البطاقة أيضًا بأنه نموذج استدلال (reasoning)، أي أنه قد يكتب خطوات تفكير قبل الجواب.
هذا التصميم مهم على خادم بلا GPU. سرعة توليد النص على المعالج (CPU) تتوقف في الغالب على كمية الأوزان التي يقرؤها من الذاكرة لكل توكن، وهذا النموذج يقرأ جزءًا صغيرًا من أوزانه لكل توكن. لكن الخبراء يتغيرون من توكن إلى آخر، لذلك يجب أن يبقى الملف كله في الذاكرة. الذاكرة إذن هي الشرط الأول، ويأتي المعالج بعدها.
بنية النموذج أيضًا غير مألوفة. يذكر ملف config.json أن فيه 40 طبقة: 10 منها طبقات انتباه (attention) كاملة، و30 طبقة التفاف قصير (short convolution). طبقات الالتفاف لا تخزّن ذاكرة سياق تكبر مع طول المحادثة، ولذلك يبقى السياق الطويل رخيصًا نسبيًا، كما سترى في الحساب التالي. أقصى طول للسياق في البطاقة 131,072 توكن.
أما العربية، فالبطاقة تضعها في قائمة اللغات المدعومة، وفي القائمة 16 لغة. لكن البطاقة لا تنشر أي اختبار أداء (benchmark) خاص بالعربية، ولا نتائج مفصلة لكل لغة. لذلك لا نقول لك إن مستواه في العربية جيد أو ضعيف. ستجد في آخر الدليل أربعة أسئلة تجربها بنفسك ثم تحكم.
كم ذاكرة RAM يحتاج LFM2.5-24B-A2B على VPS؟
نبدأ بحجم الملف لأنه أكبر بند. هذه أحجام ملفات GGUF كما تعرضها صفحة المستودع LiquidAI/LFM2.5-24B-A2B-GGUF بتاريخ 17 أكتوبر 2026:
البيانات وراء هذا الرسم البياني
[
{
"label": "Q4_K_M",
"file_gb": 14.5
},
{
"label": "QAD-Q4_0",
"file_gb": 13.6
},
{
"label": "Q5_K_M",
"file_gb": 17
},
{
"label": "Q6_K",
"file_gb": 19.7
},
{
"label": "Q8_0",
"file_gb": 25.5
},
{
"label": "BF16",
"file_gb": 48
}
]البند الثاني هو ذاكرة السياق، واسمها KV cache (ذاكرة المفاتيح والقيم). نحسبها من config.json مباشرة: 10 طبقات انتباه، و8 رؤوس للمفاتيح والقيم، وبُعد كل رأس 64 (أي 2048 مقسومة على 32 رأسًا). النوع الافتراضي لهذه الذاكرة في llama-server هو f16، أي بايتان لكل رقم. فيكون الحساب لكل توكن: 2 (مفتاح وقيمة) × 10 × 8 × 64 × 2 بايت = 20 KiB.
البيانات وراء هذا الرسم البياني
[
{
"label": "8K",
"context_tokens": 8192,
"kv_mib": 160
},
{
"label": "32K",
"context_tokens": 32768,
"kv_mib": 640
},
{
"label": "128K",
"context_tokens": 131072,
"kv_mib": 2560
}
]إذن يكلّف سياق طوله 32768 توكن نحو 640 MiB فقط. وحتى السياق الكامل (131072 توكن) يكلّف نحو 2560 MiB. السبب أن 10 طبقات فقط من 40 تخزّن السياق.
البند الثالث لا نستطيع حسابه من الأوراق: ذاكرة العمل المؤقتة التي يحجزها llama.cpp للحساب، ونظام التشغيل نفسه، وأي برنامج آخر على الخادم. لم نجد رقمًا منشورًا لهذا النموذج، لذلك نضيف من عندنا هامشًا قدره 3 إلى 4 GB. هذا افتراض منا وليس رقمًا من Liquid، وستقيسه بنفسك بعد التشغيل.
النتيجة لملف Q4_K_M مع سياق 32K: 14.5 GB للملف، وأقل من 1 GB للسياق، و3 إلى 4 GB هامشًا، والمجموع قرابة 19 GB. خادم بذاكرة 16 GB لا يكفي، لأن الملف وحده يأخذ معظمها ولا يبقى شيء يُذكر للنظام. خادم 24 GB يكفي، و32 GB أريح إذا كان الخادم يشغّل خدمات أخرى. أما ملف Q8_0 (25.5 GB) فيحتاج إلى 32 GB على الأقل. وإذا أردت الطريقة العامة التي تصلح لأي نموذج، فاقرأ كيف تحسب حجم النموذج الذي تتسع له ذاكرة RAM.
الترخيص: هل يحق لشركتك استخدامه تجاريًا؟
النموذج منشور بترخيص LFM Open License v1.0، وليس بترخيص مفتوح عام مثل Apache 2.0. اقرأ هذا القسم قبل أن تبني عليه منتجًا.
يعرّف القسم 1 من الترخيص "الحد" (Threshold) بأنه إيراد سنوي قدره 10 ملايين دولار أمريكي أو أكثر. ويقول القسم 5(b) إن أي استخدام تجاري من كيان قانوني (Legal Entity) يتجاوز هذا الحد غير مرخّص بموجب هذه الاتفاقية. انتبه لتعريف "الكيان القانوني" في القسم 1: هو الجهة التي تستخدم النموذج، ومعها كل جهة تسيطر عليها، أو تسيطر هي عليها، أو تخضع معها لسيطرة مشتركة. لذلك قد يدخل فرع صغير لمجموعة كبيرة تحت الحد بسبب المجموعة الأم.
النتيجة العملية: يستطيع متجر إلكتروني أو وكالة صغيرة دون الحد أن يستخدمه تجاريًا بشروط الترخيص. أما شركة سعودية أو إماراتية كبيرة إيرادها 10 ملايين دولار أو أكثر، فهذا الترخيص لا يعطيها حقًا تجاريًا، وتحتاج إلى اتفاق منفصل مع Liquid AI. نص الترخيص لا يذكر طريقة للحصول على هذا الاتفاق، فالطريق هو التواصل مع الشركة مباشرة. وفي القسم 5(c) استثناء للمنظمات غير الربحية المؤهلة، في الاستخدام غير التجاري أو البحثي. هذا ملخص وليس استشارة قانونية، فاقرأ ملف LICENSE في المستودع بنفسك.
بناء llama.cpp من إصدار مثبّت
يعلن ملف GGUF أن بنيته lfm2moe. هذه البنية معرّفة في الملف src/llama-arch.cpp في الإصدار b11712 من llama.cpp، وهو الإصدار الذي نثبّت عليه هنا. يصدر llama.cpp إصدارًا جديدًا كل ساعة تقريبًا، لذلك لا نكتب "أحدث إصدار"، بل نكتب رقمًا محددًا ونضعه في اسم المجلد.
sudo apt update
sudo apt install -y build-essential cmake git curl jq libssl-dev
sudo mkdir -p /opt/llama.cpp-b11712
sudo chown "$USER": /opt/llama.cpp-b11712
git clone https://github.com/ggml-org/llama.cpp /opt/llama.cpp-b11712
cd /opt/llama.cpp-b11712
git checkout b11712
cmake -B build
cmake --build build --config Release -j "$(nproc)"
./build/bin/llama-server --versionيجب أن يطبع الأمر الأخير رقم الإصدار. نبني داخل /opt وليس في مجلد المستخدم، لأن الخدمة ستعمل لاحقًا بمستخدم آخر لا يرى /home. ووضعنا رقم الإصدار في اسم المجلد لسبب عملي: عند الترقية تبني الإصدار الجديد في مجلد جديد وتغيّر سطرًا واحدًا في ملف الخدمة، ويبقى القديم جاهزًا للرجوع إليه. التفاصيل في تثبيت إصدارات llama.cpp على الخادم والترقية بأمان.
ملاحظة عن البناء: يُبنى llama.cpp افتراضيًا لمعالج الجهاز الذي يجري عليه البناء. فإذا نقل مزوّد الخدمة خادمك إلى جهاز بمعالج أقدم، قد يتوقف البرنامج بإشارة SIGILL (تعليمة غير مدعومة). الحل أن تعيد البناء على الخادم نفسه.
تنزيل ملف GGUF والتحقق منه
نثبّت الملف على commit محدد من المستودع وليس على الفرع main، حتى لا يتغير الملف دون أن تعرف.
sudo mkdir -p /srv/models
sudo chown "$USER": /srv/models
cd /srv/models
curl -L --fail -o LFM2.5-24B-A2B-Q4_K_M.gguf \
https://huggingface.co/LiquidAI/LFM2.5-24B-A2B-GGUF/resolve/0912d33141f77e10705345a6732bfd83f0252fdc/LFM2.5-24B-A2B-Q4_K_M.gguf
echo "d3334405b96228eb9908cdebb5c6194908f2da64282bda852afc3a3910c64e7d LFM2.5-24B-A2B-Q4_K_M.gguf" | sha256sum -c
chmod 644 LFM2.5-24B-A2B-Q4_K_M.ggufإذا كان الملف سليمًا فسينتهي سطر sha256sum بكلمة OK. أما إذا رأيت FAILED مع التحذير WARNING: 1 computed checksum did NOT match، فالملف ناقص أو تالف. احذفه ونزّله من جديد، ولا تشغّل ملفًا لم يطابق.
مستخدم خاص للخدمة، ومفتاح API
لا تشغّل الخادم بحساب root. أنشئ مستخدم نظام لا يستطيع تسجيل الدخول، ثم أنشئ ملف مفاتيح لا يقرؤه غيره.
sudo useradd --system --no-create-home --shell /usr/sbin/nologin llama
sudo mkdir -p /etc/llama
openssl rand -hex 32 | sudo tee /etc/llama/api-keys > /dev/null
sudo chown root:llama /etc/llama/api-keys
sudo chmod 640 /etc/llama/api-keysيقرأ الخيار --api-key-file مفتاحًا واحدًا في كل سطر. بدون مفتاح يستطيع أي برنامج على الخادم استخدام النموذج، لأن القيمة الافتراضية لـ --api-key هي "لا شيء". أما نقطة /health فتبقى عامة بلا مفتاح، كما تقول وثائق الخادم.
تشغيل llama-server كخدمة systemd على 127.0.0.1
أنشئ الملف /etc/systemd/system/llama-server.service:
[Unit]
Description=llama-server (LFM2.5-24B-A2B Q4_K_M, llama.cpp b11712)
After=network-online.target
Wants=network-online.target
[Service]
User=llama
Group=llama
ExecStart=/opt/llama.cpp-b11712/build/bin/llama-server \
-m /srv/models/LFM2.5-24B-A2B-Q4_K_M.gguf \
--host 127.0.0.1 --port 8080 \
-c 32768 -np 1 \
--api-key-file /etc/llama/api-keys
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
[Install]
WantedBy=multi-user.targetلكل خيار هنا سبب. --host 127.0.0.1 يجعل الخادم غير مرئي من الإنترنت. كتبنا --port 8080 صراحة لأن المنفذ الافتراضي في هذا الإصدار هو 9931، وكان مختلفًا في إصدارات أقدم. -c 32768 يحدد طول السياق، ولو تركته لكانت القيمة الافتراضية 0، وهي تعني "خذ الطول من النموذج"، أي 131,072 توكن. -np 1 يعطي الخادم خانة واحدة (slot)، فيحصل كل طلب على السياق كله. القيمة الافتراضية "تلقائي"، وفيها يُقسَم السياق على عدة خانات. ProtectSystem=strict يجعل نظام الملفات كله للقراءة فقط بالنسبة للخدمة، وProtectHome=true يخفي عنها /home و/root.
sudo systemctl daemon-reload
sudo systemctl enable --now llama-server
journalctl -u llama-server -fتحميل الملف يأخذ وقتًا. أثناء التحميل يرد الأمر التالي بالرمز 503 ومعه الرسالة Loading model، وبعد انتهاء التحميل يرد بالرمز 200.
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/healthالآن قِس الذاكرة الحقيقية بدل الاعتماد على حسابنا. شغّل free -h واقرأ عمود available، ثم اقرأ ذاكرة العملية نفسها:
free -h
grep VmRSS /proc/$(pgrep -f llama-server | head -n1)/statusأرسل طلبًا أو طلبين أولًا ثم أعد القياس، لأن أجزاء الملف لا تُقرأ من القرص إلا عند أول استخدام لها. إذا بقيت قيمة available بعد ذلك أقل من 1 GB، فالخادم أصغر من أن يحمل هذا التكميم.
الوصول من جهازك عبر نفق SSH
يستمع الخادم على 127.0.0.1، فلا يصل إليه أحد من الخارج. افتح من جهازك الشخصي نفقًا:
ssh -N -L 8080:127.0.0.1:8080 user@203.0.113.10الخيار -N يعني: لا تنفّذ أي أمر على الخادم، واكتفِ بتمرير المنفذ. ما دام هذا الأمر يعمل، فإن http://127.0.0.1:8080 على جهازك يصل إلى الخادم. وأي أداة تتعامل بصيغة OpenAI تستطيع استخدامه عبر /v1/chat/completions، مع وضع المفتاح في الترويسة Authorization: Bearer. إذا احتجت إلى وصول دائم من تطبيق آخر عبر HTTPS، فضع أمام الخادم وكيلًا عكسيًا (reverse proxy) بشهادة TLS (أمان طبقة النقل)، وأبقِ مفتاح API مفعّلًا. شرحنا ذلك بالتفصيل في دليل تشغيل llama.cpp server على VPS.
اختبر العربية بنفسك: أربعة أسئلة
لا يوجد رقم منشور عن جودة هذا النموذج في العربية، فالحكم لك. إليك أربعة أسئلة: واحد بالفصحى، وواحد باللهجة الخليجية، وواحد باللهجة المصرية، وسؤال تقني يخلط العربية بالإنجليزية. شغّلها على الخادم نفسه:
cat > ~/ar-prompts.txt <<'EOF'
اشرح لصاحب متجر إلكتروني صغير، في خمس جمل، ما النسخ الاحتياطي ولماذا يحتاجه.
شلون أسوي نسخة احتياطية لقاعدة البيانات كل يوم بالليل؟ أبي الخطوات بالترتيب وبكلام بسيط.
إزاي أعرف إن السيرفر بتاعي قرب يتملي؟ قولّي الأوامر واشرحلي كل أمر بيعمل إيه.
عندي حاوية Docker تعيد التشغيل كل دقيقتين، والأمر docker inspect يعرض OOMKilled: true. ما السبب، وكيف أضبط memory limit في docker-compose.yml؟
EOF
LLAMA_KEY=$(sudo head -n1 /etc/llama/api-keys)
while IFS= read -r q; do
echo "=== $q"
jq -n --arg q "$q" '{messages: [{role: "user", content: $q}], max_tokens: 1500}' \
| curl -s http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LLAMA_KEY" -d @- \
| jq -r '.choices[0].message.content'
done < ~/ar-prompts.txtنستخدم jq --arg لبناء طلب JSON، لأن كتابة نص عربي يدويًا داخل JSON في الصدفة تكسر علامات الاقتباس بسهولة. إذا طبع الأمر سطرًا فارغًا أو null، فاحذف آخر jq -r من السلسلة واقرأ JSON كاملًا. هذا نموذج استدلال، وقد يضع الخادم التفكير والجواب في حقلين مختلفين.
ماذا تراقب في الأجوبة؟ هل يرد على السؤال الخليجي بلهجة قريبة منه أم يتحول إلى الفصحى؟ هل يفهم أن "قرب يتملي" تعني امتلاء القرص؟ هل الأوامر التي يقترحها في السؤال المصري حقيقية؟ جرّبها على خادم تجريبي. وفي السؤال الرابع، هل يشرح أن OOMKilled يعني أن النواة أوقفت العملية لأنها تجاوزت حد الذاكرة؟ وهل يترك الأسماء التقنية بالإنجليزية كما هي؟ أعد كل سؤال مرتين أو ثلاثًا، لأن الجواب يتغير من مرة إلى أخرى. توصي Liquid بإعدادات عيّنات محددة (temperature 0.1، وtop_k 50، وrepetition penalty 1.05)، وتقول صفحة GGUF إن هذه الإعدادات مخزّنة داخل الملف وإن llama.cpp يطبّقها تلقائيًا.
كم توكنًا تستهلك الجملة العربية مقارنة بالإنجليزية؟
عدد التوكنات يحدد أمرين: كم من النص يتسع له السياق، وكم من الوقت يأخذ التوليد. فإذا قسّم المقسِّم (tokenizer) النص العربي إلى توكنات أكثر من النص الإنجليزي، فإن الجواب العربي نفسه يأخذ وقتًا أطول. لا نعطيك نسبة هنا، لأنها تختلف من نص إلى آخر. قِسها على نصوصك أنت عبر نقطة /tokenize في الخادم:
LLAMA_KEY=$(sudo head -n1 /etc/llama/api-keys)
for t in "النسخ الاحتياطي اليومي يحمي بيانات المتجر من الضياع." \
"A daily backup protects the store data from loss."; do
jq -n --arg t "$t" '{content: $t, add_special: false}' \
| curl -s http://127.0.0.1:8080/tokenize \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LLAMA_KEY" -d @- \
| jq '.tokens | length'
doneالرد كائن JSON فيه الحقل tokens، وطوله هو عدد التوكنات. ثبّت add_special على القيمة نفسها في الجملتين، وإلا أُضيف توكن البداية (BOS) إلى إحداهما فقط. ولترى كيف قُسّمت الكلمات، أضف with_pieces: true إلى الطلب. جرّب نصوصًا من عملك الحقيقي، مثل رسائل العملاء وأوصاف المنتجات، ولا تكتفِ بجملة واحدة.
قِس سرعة التوليد على خادمك أنت
لا ننشر رقم سرعة لخادم VPS لأننا لم نقسه. الأرقام المنشورة الوحيدة مصدرها Liquid نفسها: 184 توكنًا في الثانية على Apple M5 Max، و114 على AMD Ryzen AI Max+ 395، قاستها بـ llama.cpp وتكميم Q4_K_M وسياق إدخال 4K. هذه أرقام يعلنها المورّد عن أجهزة ذات عرض نطاق ذاكرة عالٍ جدًا، فلا تتوقع رقمًا قريبًا منها على VPS عادي.
تحتوي استجابة /completion على الحقل timings، وفيه predicted_per_second، أي سرعة التوليد الفعلية:
LLAMA_KEY=$(sudo head -n1 /etc/llama/api-keys)
jq -n '{prompt: "اكتب فقرة طويلة عن تاريخ الخط العربي.", n_predict: 256}' \
| curl -s http://127.0.0.1:8080/completion \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LLAMA_KEY" -d @- \
| jq '.timings'شغّله ثلاث مرات، وتجاهل أول مرة بعد تشغيل الخدمة لأنها تقرأ أجزاء من الملف من القرص. وإذا كان الخادم يشغّل خدمات أخرى، فقِس في وقت الضغط المعتاد. ستجد طريقة القياس الكاملة، والفرق بين سرعة قراءة السؤال وسرعة التوليد، في قياس عدد التوكنات في الثانية لنموذج محلي.
أعطال شائعة، والرسائل التي ستراها
الخدمة تتوقف ثم تعود مرارًا. شغّل journalctl -k | grep -i "out of memory". إذا ظهر سطر يبدأ بـ Out of memory: Killed process ويذكر llama-server، فهذا يعني أن النواة أوقفت الخادم لأن الذاكرة نفدت. الحل: خادم أكبر، أو تكميم أصغر، أو سياق أقصر عبر -c.
الخدمة تتوقف بعد صيانة عند المزوّد. يعرض systemctl status llama-server القيمة status=4/ILL. هذه إشارة SIGILL، ومعناها أن البرنامج مبني لتعليمات معالج غير موجودة في الجهاز الجديد. أعد البناء بأمرَي cmake في المجلد نفسه.
النفق لا يفتح. الرسالة bind [127.0.0.1]:8080: Address already in use على جهازك تعني أن برنامجًا محليًا يستخدم المنفذ 8080. استخدم منفذًا آخر على جهازك، مثل -L 18080:127.0.0.1:8080، ثم اتصل بـ http://127.0.0.1:18080.
الخادم يعمل لكن الطلب يُرفض. يرد /health بالرمز 200، لكن /v1/chat/completions يرفض الطلب. السبب أن الترويسة Authorization: Bearer مفقودة، أو أن المفتاح فيها لا يطابق ملف /etc/llama/api-keys. تذكّر أن /health لا يتحقق من المفتاح، فنجاحه لا يثبت أن مفتاحك صحيح.
وماذا عن Ollama؟
تعرض صفحة GGUF على Hugging Face أمرًا لتشغيل الملف عبر Ollama. لم نختبر هذا الأمر على إصدار Ollama مثبّت، لذلك لا نعتمد عليه هنا. اخترنا llama.cpp لأننا تحققنا من أن الإصدار b11712 يعرّف البنية lfm2moe التي يعلنها الملف. إذا كنت تفضّل Ollama عمومًا، فستجد المقارنة بين الأداتين في Ollama أم llama.cpp: أيهما تختار لخادمك. ولمقارنة هذا النموذج بخيارات أخرى تعمل على خادمك، راجع أي نماذج ذكاء اصطناعي يمكنك استضافتها بنفسك.
الأسئلة الشائعة (FAQ)
هل يعمل LFM2.5-24B-A2B على VPS بذاكرة 16 GB؟
لا ننصح بذلك. ملف Q4_K_M وحده حجمه 14.5 GB، فلا يبقى بعده ما يكفي لنظام التشغيل وذاكرة العمل المؤقتة. الحد الأدنى العملي 24 GB، و32 GB أريح. ملف QAD-Q4_0 أصغر قليلًا (13.6 GB)، لكنه لا يغيّر هذه النتيجة.
هل يجيد النموذج العربية؟
تذكر بطاقة النموذج العربية ضمن 16 لغة مدعومة، لكنها لا تنشر أي اختبار أداء خاص بالعربية. لذلك لا يوجد رقم يقول إن مستواه فيها جيد أو ضعيف. جرّب أربعة أسئلة على الأقل: بالفصحى، وبالخليجية، وبالمصرية، وسؤالًا تقنيًا مختلطًا، ثم احكم على الأجوبة بنفسك قبل أن تعتمد عليه مع عملائك.
هل تستطيع شركة كبيرة في السعودية أو الإمارات استخدامه تجاريًا؟
لا تستطيع ذلك بهذا الترخيص إذا كان إيرادها السنوي 10 ملايين دولار أو أكثر. يعرّف ترخيص LFM Open License v1.0 هذا الحد في القسم 1، ويقول في القسم 5(b) إن الاستخدام التجاري لكيان يتجاوزه غير مرخّص. تعريف الكيان يشمل الشركات المسيطِرة والتابعة، وتحتاج الشركة في هذه الحالة إلى اتفاق منفصل مع Liquid AI. اقرأ نص الترخيص بنفسك، فهذا ليس استشارة قانونية.
لماذا لا أفتح المنفذ 8080 للإنترنت مباشرة؟
لأن أي شخص يجد المنفذ يستطيع استخدام معالج خادمك، ويرسل طلبات طويلة تبطئه أو توقفه. ربط الخادم بـ 127.0.0.1 يمنع ذلك تمامًا، ونفق ssh -N -L 8080:127.0.0.1:8080 يعطيك وحدك الوصول من جهازك. إذا احتجت إلى وصول عام، فضع أمامه وكيلًا عكسيًا مع TLS، وأبقِ مفتاح API مفعّلًا.
كيف أعرف عدد التوكنات التي يستهلكها نصي العربي؟
أرسل النص إلى POST /tokenize على الخادم مع "add_special": false، واقرأ طول الحقل tokens بالأمر jq '.tokens | length'. أرسل الترجمة الإنجليزية للنص نفسه بالإعداد نفسه، ثم قارن العددين. النسبة تختلف من نص إلى آخر، فقِسها على نصوص من عملك الحقيقي.