منصوبے کے بارے میں

llama-swap ایک پراکسی ہے جو ایک ہی مشین پر متعدد جنریٹو AI ماڈلز چلانے اور طلب پر ان کے درمیان سوئچ کرنے کے لیے استعمال ہوتی ہے۔ یہ کسی بھی OpenAI یا Anthropic-API کے مطابق انفرنس سرور کے سامنے بیٹھتی ہے، ہر آنے والی درخواست سے `model` فیلڈ پڑھتی ہے، اور اسے پیش کرنے کے لیے مطلوبہ اپ اسٹریم سرور شروع یا تبدیل کرتی ہے۔ یہ پروجیکٹ Go میں لکھا گیا ہے، ایک بائنری اور ایک کنفیگریشن فائل کے طور پر فراہم کیا جاتا ہے، اور اس میں کوئی بیرونی انحصار رپورٹ نہیں کیا گیا۔ معاون اپ اسٹریمز میں llama.cpp اور اس کے فورکس، vllm، stable-diffusion.cpp، whisper.cpp، audio.cpp اور ComfyUI شامل ہیں۔ چونکہ یہ پراکسی پروٹوکول کی سطح پر ہے نہ کہ کسی مخصوص انجن سے منسلک، README نوٹ کرتا ہے کہ انفرنس سرورز کو آزادانہ طور پر اپ گریڈ کیا جا سکتا ہے۔ API سطح - OpenAI طرز کے اینڈ پوائنٹس: `v1/completions`، `v1/chat/completions`، `v1/responses`، `v1/embeddings`، `v1/models`، `v1/audio/speech`، `v1/audio/transcriptions`، `v1/audio/voices`، `v1/images/generations` اور `v1/images/edits`۔ - Anthropic طرز کے اینڈ پوائنٹس: `v1/messages` اور `v1/messages/count_tokens`۔ - llama-server کے اضافی: `v1/rerank`، `v1/reranking`، `/rerank`، `/infill`، `/completion`، `/models` اور `/props`۔ - stable-diffusion.cpp کے سرور سے SDAPI اینڈ پوائنٹس، نیز audio.cpp ٹاسک اینڈ پوائنٹس اور ایک `/comfyui/` کسٹم اینڈ پوائنٹ۔ - مینجمنٹ اینڈ پوائنٹس: `/ui`، `/upstream/:model_id`، `/running`، `POST /api/models/unload` (تمام ماڈلز) اور `POST /api/models/unload/:model_id`، پروفائل کی فہرست اور `/api/profiles` کے ذریعے ایکٹیویشن، `/health`، اور Prometheus سسٹم اور GPU میٹرکس کے لیے `/metrics`۔ - لاگ اینڈ پوائنٹس: بفر شدہ سادہ متن لاگز کے لیے `/logs`، لائیو اسٹریمنگ کے لیے `/logs/stream`، ساتھ `/logs/stream/proxy`، `/logs/stream/upstream` اور `/logs/stream/{model_id}` اقسام؛ `?no-history` صرف نئی لائنیں اسٹریم کرتا ہے۔ کنفیگریشن اور خصوصیات ایک کم سے کم کنفیگ میں `models` میپ کا اعلان ہوتا ہے جہاں ہر اندراج کی ایک ID اور ایک `cmd` ہوتی ہے؛ `${PORT}` کو خودکار طور پر تفویض کردہ پورٹ سے بدل دیا جاتا ہے۔ اختیاری ترتیبات میں غیر فعالیت کے بعد خودکار ان لوڈنگ کے لیے `ttl`، `unloadTimeout`، مانوس ماڈل ناموں کے لیے `aliases`، `env` ویری ایبلز، نرم Docker/Podman بندش کے لیے `cmdStop`، `useModelName`، درخواست `filters` (`stripParams`، `setParams`، `setParamsByID`)، اسٹارٹ اپ پر پری لوڈنگ کے لیے `hooks`، `macros`، اور حسب ضرورت سوئپ منطق کے ساتھ متوازی ماڈلز چلانے کے لیے ایک `matrix` DSL شامل ہیں۔ API کیز کی تعریف کی جا سکتی ہے تاکہ اینڈ پوائنٹ تک رسائی محدود کی جائے، اور پروفائلز رن ٹائم پر ماڈل-ID روٹنگ کو تبدیل کرنے کی اجازت دیتے ہیں۔ شامل ویب UI ایک پلے گراؤنڈ، ٹوکن میٹرکس، درخواست/جواب کی جانچ، دستی ماڈل لوڈ اور ان لوڈ، اور ریئل ٹائم لاگ اسٹریمنگ فراہم کرتا ہے۔ ایک Help صفحہ llama-swap کی اپنی دستاویزات کے خلاف ایک مقامی ٹول کے قابل ماڈل چلاتا ہے، اور وہی ٹولز `/api/mcp` پر ایک MCP اینڈ پوائنٹ کے طور پر دستیاب ہیں۔ تنصیب درج اختیارات میں Docker، Homebrew، MacPorts، WinGet، ریلیز بائنریز (Linux، macOS، Windows، FreeBSD) اور Go اور Node.js کے ساتھ سورس سے بلڈ کرنا شامل ہیں۔ نائٹلی Docker امیجز دو خاندانوں میں آتی ہیں: متحد امیجز جو llama-server، ik-llama-server، stable-diffusion.cpp، whisper.cpp، audio.cpp اور llama-swap کو بنڈل کرتی ہیں (CUDA 12، CUDA 13 اور Vulkan اقسام، تجویز کردہ)، اور llama.cpp کے اپنے `llama-server` کنٹینر پر مبنی ایک لیگیسی امیج۔ متحد امیجز کو `LLAMA_SWAP_*` ماحولیاتی ویری ایبلز کے ذریعے کنفیگر کیا جا سکتا ہے جو کمانڈ لائن فلیگز سے میپ ہوتے ہیں۔ آپریشنل نوٹس README مشورہ دیتا ہے کہ llama-swap کو nginx کے پیچھے رکھتے وقت رسپانس بفرنگ کو غیر فعال کریں، کیونکہ بفرنگ SSE اور اسٹریمنگ چیٹ کمپلیشنز کو توڑ دیتی ہے؛ llama-swap SSE جوابات پر `X-Accel-Buffering: no` بھی سیٹ کرتا ہے۔ Python پر مبنی سرورز جیسے vllm یا tabbyAPI کے لیے، ماحولیاتی تنہائی اور درست `SIGTERM` ہینڈلنگ کے لیے انہیں Podman یا Docker کے تحت چلانے کی سفارش کی جاتی ہے۔