Spaces:
Sleeping
Sleeping
Download run.sh from gijl/plo3: direct link, hf CLI and curl.
- Browser
- Download file 4.49 kB
-
https://huggingface.co/spaces/gijl/plo3/resolve/main/run.sh
- Command line
-
hf download hf://spaces/gijl/plo3/run.sh
-
curl -L -o run.sh https://huggingface.co/spaces/gijl/plo3/resolve/main/run.sh
4.49 kB
| set -euo pipefail | |
| # ===================================================================== | |
| # تحديث: تم الانتقال من تنزيل ملف GGUF يدويًا من Hugging Face إلى استخدام | |
| # نموذج Gemma 4 الرسمي المتوفر مباشرة في مكتبة Ollama (gemma4) — أبسط | |
| # وأكثر ثباتًا، ويتضمن دعم الرؤية تلقائيًا بدون ملف mmproj منفصل. | |
| # كما تمت إضافة أدوات Open WebUI: بحث الويب، تنفيذ الأكواد، واستدعاء | |
| # الأدوات بالطريقة الأصلية (Native Function Calling) التي يدعمها Gemma 4. | |
| # ===================================================================== | |
| # تحديد مسارات المخزن الدائم (في مساحات HF عادة يكون /data) | |
| OLLAMA_DATA_DIR="/data/ollama" | |
| WEBUI_DATA_DIR="/data/webui" | |
| # نموذج Gemma 4 من مكتبة Ollama الرسمية (يمكن تغييره عبر متغير بيئة بدون إعادة بناء الصورة) | |
| # الخيارات المتاحة: e2b (الأخف ~7.2GB) | e4b (~9.6GB) | 12b | 26b (MoE) | 31b | |
| BASE_MODEL="${BASE_MODEL:-gemma4:e2b}" | |
| OLLAMA_MODEL_NAME="${OLLAMA_MODEL_NAME:-my-gemma}" | |
| # سياق المحادثة: الحد الأقصى لـ e2b/e4b هو 128000، و256000 لما هو أكبر (12b/26b/31b) | |
| # قلّل هذا الرقم إذا كانت موارد المساحة (RAM) محدودة وواجهت مشاكل في الذاكرة | |
| NUM_CTX="${NUM_CTX:-128000}" | |
| NUM_THREAD="${NUM_THREAD:-$(nproc)}" | |
| # ---------------------- إعدادات أدوات Open WebUI ---------------------- | |
| # بحث الويب عبر DuckDuckGo (لا يحتاج مفتاح API) | |
| export ENABLE_WEB_SEARCH="${ENABLE_WEB_SEARCH:-true}" | |
| export WEB_SEARCH_ENGINE="${WEB_SEARCH_ENGINE:-duckduckgo}" | |
| export WEB_SEARCH_RESULT_COUNT="${WEB_SEARCH_RESULT_COUNT:-3}" | |
| export WEB_SEARCH_CONCURRENT_REQUESTS="${WEB_SEARCH_CONCURRENT_REQUESTS:-1}" | |
| export USER_AGENT="${USER_AGENT:-Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Safari/537.36}" | |
| # منفّذ الأكواد المدمج (Pyodide) - مفعّل افتراضيًا في Open WebUI، موضوع هنا للوضوح والتأكيد | |
| export ENABLE_CODE_EXECUTION="${ENABLE_CODE_EXECUTION:-true}" | |
| export ENABLE_CODE_INTERPRETER="${ENABLE_CODE_INTERPRETER:-true}" | |
| # تفعيل استدعاء الأدوات بالطريقة "الأصلية" (Native) التي يدعمها Gemma 4 أصلاً | |
| # (هذا ما يجعل بحث الويب وتنفيذ الأكواد تعمل بشكل موثوق مع النموذج) | |
| if [ -z "${DEFAULT_MODEL_PARAMS:-}" ]; then | |
| DEFAULT_MODEL_PARAMS='{"function_calling": "native"}' | |
| fi | |
| export DEFAULT_MODEL_PARAMS | |
| # إنشاء المجلدات المطلوبة في المخزن إن لم تكن موجودة | |
| mkdir -p "$OLLAMA_DATA_DIR" "$WEBUI_DATA_DIR" | |
| # تشغيل خادم Ollama في الخلفية | |
| echo "Starting Ollama server..." | |
| OLLAMA_MODELS="$OLLAMA_DATA_DIR" ollama serve & | |
| # الانتظار حتى يصبح خادم Ollama جاهزًا فعليًا لتلقي الطلبات | |
| # (بدل الانتظار الثابت sleep 4 في النسخة السابقة، وهو غير موثوق) | |
| echo "Waiting for Ollama to be ready..." | |
| for i in $(seq 1 60); do | |
| if ollama list >/dev/null 2>&1; then | |
| echo "Ollama server is ready." | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| if ! ollama list >/dev/null 2>&1; then | |
| echo "ERROR: Ollama server did not become ready in time." >&2 | |
| exit 1 | |
| fi | |
| # تنزيل نموذج Gemma 4 من مكتبة Ollama الرسمية | |
| # هذه العملية آمنة لإعادة التشغيل تلقائيًا: إذا كانت طبقات النموذج موجودة | |
| # بالفعل في $OLLAMA_DATA_DIR فلن تُعاد تنزيلها | |
| echo "Pulling $BASE_MODEL..." | |
| ollama pull "$BASE_MODEL" | |
| # إنشاء ملف إعدادات النموذج (Modelfile) لتوسيع سياق المحادثة وضبط عدد المسارات | |
| echo "Creating Modelfile..." | |
| cat <<EOF > /tmp/Modelfile | |
| FROM $BASE_MODEL | |
| PARAMETER num_ctx $NUM_CTX | |
| PARAMETER num_thread $NUM_THREAD | |
| EOF | |
| # تسجيل النموذج المخصص داخل Ollama | |
| echo "Registering model '$OLLAMA_MODEL_NAME' with Ollama..." | |
| ollama create "$OLLAMA_MODEL_NAME" -f /tmp/Modelfile | |
| # تشغيل واجهة Open WebUI (الأمر الافتراضي للصورة الأساسية) | |
| echo "Starting Open WebUI..." | |
| cd /app/backend | |
| exec bash start.sh | |