منصوبے کے بارے میں
# XTokenHub
ایکس ٹوکن ہب LLM فراہم کنندگان کی API کے لیے ایک سیلف ہوسڈ ایگریگیشن گیٹ وے ہے۔ یہ ان اے پی آئی کلیز کو ایک چینل بیسڈ پینل میں جمع کرتا ہے جو آپ کے پاس پہلے سے موجود ہیں، صارفین کے لیے معیاری پروٹوکول اینڈ پوائنٹس فراہم کرتا ہے، اور ٹوکن استعمال اور کیچ ہٹ ریٹ کو لائیو دکھاتا ہے۔ اس کی واضح ڈیزائن اصول یہ ہے کہ جتنا ممکن ہو ٹریفک کو فراہم کنندہ کے مقامی پروٹوکول سے گزرے، اور تبدیلی کو بطور فال بیک استعمال کرے۔
## بنیادی صلاحیتیں
- **چینل بیسڈ کنفیگریشن** — ہر فراہم کنندہ کے پوائنٹ کے لیے ایک اندراج، دستیابی چیک، آن/آف سوئچنگ، اور بیلنس پوچھنا جہاں فراہم کنندہ فراہم کرے۔
- **ماڈل گروپنگ اور راؤٹنگ** — ہر چینل اپنی ماڈل لسٹ رکھتا ہے (اپ اسٹریم سے ضرورت کے وقت حاصل کی جاتی ہے)، اور تمام اپ اسٹریمز کو ایک سنگل ماڈل لسٹنگ اینڈ پوائنٹ میں ملا دیا جاتا ہے۔ راؤٹنگ ترجیح اور وزن والے بے ترتیب انتخاب پر کام کرتی ہے، اور ایک ہی ماڈل کے لیے خدمات فراہم کرنے والے چینلز میں خودکار فال اوور ہوتا ہے۔
- **استعمال کی معلومات** — ڈیش بورڈ درخواستوں کی تعداد، ٹوکن استعمال، کیچ ہٹ ریٹ اور اوسط لیٹنسی رپورٹ کرتا ہے، ماڈل، چینل یا کالر کی بنیاد پر جمع شدہ، GitHub طرز کی ایکٹوٹی ہیٹ مپی اور روزانہ رجحانات کے چارٹس کے ساتھ جو WebSocket کے ذریعے بھیجے جاتے ہیں۔
- **پروٹوکول تبدیلی** — گیٹ وے ایک ساتھ OpenAI انداز کی چیٹ اور رسپانس اینڈ پوائنٹس اور Anthropic انداز کا میسیجز اینڈ پوائنٹ فراہم کرتا ہے۔ صرف تب تبدیلی ہوتی ہے جب داخل ہونے والا اور اپ اسٹریم پروٹوکول مختلف ہوں؛ ملنے والے پروٹوکول کو بغیر دوبارہ لکھے آگے بڑھایا جاتا ہے، جس سے ٹول کالز اور ملٹی موڈل پیلوڈز محفوظ رہتے ہیں۔
- **گیٹ وے کلیدیں اور فی کالر شماریات** — مختلف کالرز کے لیے کلیمینٹ فیس کلیدیں جاری کی جاتی ہیں، اور فی کلید درخواست/ٹوکن مجموعے جمع کیے جاتے ہیں۔
- **سنگل بائنری سیلف ہوسٹنگ** — فرنٹ اینڈ Go بائنری میں ضم ہے، اس لیے ایک بلڈ سے ایک اسٹیٹک آرٹیفیکٹ بنتا ہے (CGO کے بغیر) جسے Linux یا macOS مشین پر کاپی کیا جا سکتا ہے۔
## راؤٹنگ اور پیمائش کیسے کام کرتی ہے
README میں چار مرحلوں کا بہاؤ بیان کیا گیا ہے:
1. چینل بنائیں جس میں فراہم کنندہ کا بیس یو آر ایل، اے پی آئی کلید اور ماڈل لسٹ ہو۔ API انداز (OpenAI ہم آہنگ کے لیے Bearer، Anthropic ہم آہنگ کے لیے x-api-key) بیس یو آر ایل سے خود کار طریقے سے تشخیص کیا جاتا ہے اور اوور رائڈ کیا جا سکتا ہے۔ کئی بیس یو آر ایل فارمز تعاون یافتہ ہیں جن میں خالص ڈومینز، /v1 سنکس، /anthropic جیسے سب پیتھ ماؤنٹس، اور ورژنڈ ماؤنٹس شامل ہیں۔
2. مقامی پروٹوکول پروب ہر پروٹوکول اینڈ پوائنٹ پر ایک کم از کم درخواست بھیجتا ہے؛ 2xx رسپانس اس پروٹوکول کو چینل کے لیے مقامی قرار دیتا ہے، جسے دستی طور پر بھی درست کیا جا سکتا ہے۔
3. آنے والی درخواستیں ماڈل کے لیے خدمات فراہم کرنے والے فعال چینلز تک محدود ہوتی ہیں، مقامی چینلز کو ترجیح دی جاتی ہے، اور تبدیل شدہ چینلز صرف فال بیک کے طور پر استعمال ہوتے ہیں۔ انتخاب ترجیح کے ارتقاء کے ساتھ وزن والے بے ترتیب انتخاب پر ہوتا ہے، اور ناکامیاں جیسے نیٹ ورک ایرر، 401/403/408/429 یا 5xx فال اوور کو متحرک کرتی ہیں۔
4. استعمال اپ اسٹریم رسپانس سے parse کیا جاتا ہے جہاں اطلاع دی گئی ہو (اسٹریمنگ استعمال کے آپشنز خودکار طور پر شامل کیے جاتے ہیں)؛ جب اپ اسٹریم کچھ اطلاع نہیں دیتا تو مقامی تقویں اندازہ استعمال کیا جاتا ہے۔ کیچ ہٹ ریٹ فراہم کنندہ کے کیچڈ ٹوکن فیلڈز سے آتا ہے، اور ہر درخواست لاگ ٹیبل میں لکھی جاتی ہے اور UI پر بھیجی جاتی ہے۔
## ڈیش بورڈ اور API سطح
ادمین API میں چینلز، گیٹ وے کلیدیں، رکاوٹ صفائی کے ساتھ درخواستوں کی لاگز، اور شماریات کے اینڈ پوائنٹس کا سیٹ (خلاصہ، روزانہ رجحان، ماڈل کے لحاظ سے، چینل کے لحاظ سے، کلید کے لحاظ سے، زندگی بھر کے مجموعے، اور ماڈل کے رجحان کے لحاظ سے) شامل ہیں، جس کے علاوہ ہیلتھ اینڈ پوائنٹ اور WebSocket اینڈ پوائنٹ لائیو واقعات کے لیے ہے۔ گیٹ وے اینڈ پوائنٹس میں متحدہ ماڈل لسٹ اور چیٹ، رسپانس اور میسیجز راستے شامل ہیں۔ کالر کی توثیق Bearer ٹوکن یا x-api-key ہیڈر قبول کرتی ہے اور کنفیگریشن سے بند کیا جا سکتی ہے۔
## ترتیب اور آپریشنز
ترتیبات کا ترجیحی نظام: ماحولیاتی متغیرات، پھر YAML فائل، پھرbuiltin ڈیفالٹس۔ ڈیٹا SQLite میں WAL موڈ میں ذخیرہ ہوتا ہے جس میں سنگل رائٹر کنکشن ہوتا ہے۔ درخواستوں کی لاگز ڈیفالٹ کے مطابق بغیر حدود کے بڑھتی ہیں، اس لیے ایک ریٹینشن جاب قابل ترتیب دنوں سے پرانی قطاریں حذف کرتی ہے، جن میں سائیکل وقفہ، بیچ سائز اور اختیاری VACUUM کے سیٹنگز ہیں۔ پروجیکٹ نوٹ کرتا ہے کہ حذف کرنے کے بعد SQLite فائل خود بخود سکڑتی نہیں ہے۔
## ٹیسٹنگ
یونٹ ٹیسٹس منقولہ خارجی ٹیسٹ پیکیج لے آئوٹ میں موجود ہیں اور ترتیبات لوڈنگ، ان میموری SQLite ریپوزٹریز، ایونٹ bus، WebSocket رویہ، فراہم کنندہ پروبنگ،.fake اپ اسٹریمز کے ساتھ تبدیلی، گیٹ وے انتخاب اور شماریات کی مستقل مزاجی، اور اینڈ ٹو اینڈ ہینڈلر/راؤٹر راستوں کا احاطہ کرتے ہیں۔ README ایک مکمل ری سس اینبلڈ ٹیسٹ رن اور 87.6٪ بیان کی کوریج کی رپورٹ کرتی ہے، ساتھ ہی WebSocket دوبارہ کنکشن اور ڈیٹا ٹرانسفارمز کے لیے فرنٹ اینڈ ٹیسٹس۔
## پروجیکٹ کے ذریعے بتائی گئی معلوم حدود
- تبدیلی کا راستہ صرف ٹیکسٹ چیٹ کو ہینڈل کرتا ہے؛ ٹول کالز، ملٹی موڈل اور کیچ کنٹرول پیلوڈز کو مقامی پاس تھرو چینلز کی ضرورت ہے۔
- بیلنس پوچھنا فی الحال صرف DeepSeek کو کور کرتا ہے، کیونکہ دیگر فراہم کنندگان کی بیلنس APIs غیر مصدقہ ہیں، ختم ہونے والے کوکی اتھ کی ضرورت ہے، یا عوامی نہیں ہیں۔
- مقامی ٹوکن اندازہ تقویں پر مبنی ہے اور صرف فال بیک کے طور پر استعمال ہوتا ہے۔
- ادمین API میں لاگ ان اتھنٹیکیشن نہیں ہے اور یہ سیلف ہوسڈ انٹرا نیٹ استعمال کے لیے ہے جس میں بیرونی نیٹ ورک الگ تھلگ ہے؛ کلیدیں پلین ٹیکسٹ میں ذخیرہ کی جاتی ہیں۔
- کیچ ہٹ ریٹ اور فی کلید ایگریگیشن درخواست لاگ کے عکس پر انحصار کرتی ہے، اس لیے ایک حذف شدہ کلید کا تاریخی استعمال اس کے نام کے تحت رہتا ہے۔
## ساتھی ایپ اور لائسنس
ایک الگ SwiftUI مینو بار ایپ وہی ادمین API اور WebSocket استعمال کرتی ہے بغیر بیک اینڈ تبدیلی کی ضرورت کے۔ XTokenHub MIT لائسنس کے تحت شائع ہوتا ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.