প্রকল্প সম্পর্কে

# XTokenHub XTokenHub হলো LLM প্রদত্তকারীর API-গুলোর জন্য একটি সেल्फ-হোস্টেড এগ্রিগেশন গেটওয়ে। এটি আপনার কাছে থাকা API কীগুলোকে একচেটে চ্যানেল-ভিত্তিক প্যানেলে সম্মিলিত করে, স্ট্যান্ডার্ডাইজড প্রোটোকল এন্ডপয়েন্ট প্রদান করে এবং টোকেন ব্যবহার ও ক্যাশে হিট রেট সরাসরি রিপোর্ট করে। এর নকশার মূলনীতি হলো যে কোনোভাবেই ট্রাফিক প্রদত্তকারীর নেটিভ প্রোটোকলে চালনা করা, রূপান্তর কেবল ফলব্যাক হিসেবে。 ## মৌলিক সক্ষমতা - **চ্যানেল-ভিত্তিক কী ব্যবস্থাপনা** — প্রতিটি প্রদত্তকারীর এন্ডপয়েন্টের জন্য একটি এন্ট্রি, উপলব্ধতা পরীক্ষা, চালু/বন্ধ সুইচিং এবং ব্যালেন্স ক্যুয়েরি যেখানে প্রদত্তকারী তা খোলে। - **মডেল গ্রুপিং ও রাউটিং** — প্রতিটি চ্যানেলে নিজস্ব মডেল তালিকা থাকে (আপস্ট্রিম থেকে অন-ডিমান্ডে তোলা), এবং সকল আপস্ট্রিম একটি একক মডেল তালিকা এন্ডপয়েন্টে একত্রিত হয়। রাউটিং অগ্রাধিকার ও ওজনযুক্ত র‍্যান্ডম নির্বাচনের মাধ্যমে চলে, একই মডেল পরিবেশনকারী চ্যানেলের মধ্যে স্বয়ংক্রিয় ফেইলওভার সহ。 - **ব্যবহার অন্তর্দৃষ্টি** — ড্যাশবোর্ড অনুরোধ সংখ্যা, টোকেন ব্যবহার, ক্যাশে হিট রেট ও গড় লেটেন্সি দেখায়, মডেল, চ্যানেল বা কলার কী অনুযায়ী এগregate করে, GitHub-স্টাইলের অ্যাক্টিভিটি হিটম্যাপ ও দৈনিক ট্রেন্ড চার্ট WebSocket-এ পাঠায়। - **প্রোটোকল রূপান্তর** — গেটওয়ে একসাথে OpenAI-স্টাইলের চ্যাট ও রেসপন্স এন্ডপয়েন্ট ও Anthropic-স্টাইলের মেसेज এন্ডপয়েন্ট খোলে। অনবডিং ও আপস্ট্রিম প্রোটোকল ভিন্ন হলেই রূপান্তর করা হয়; একই প্রোটোকলে অনরূপে ফরওয়ার্ড করা হয়, যা প্রকল্পের মতে টুল কল ও মাল্টিমডাললোড বজায় রাখে。 - **গেটওয়ে কী ও প্রতি-কলকার পরিসংখ্যান** — বিভিন্ন কলারের জন্য ক্লায়েন্ট-মুখী কী জারি করা হয়, এবং প্রতিটি কীর জন্য অনুরোধ/টোকেন মোট সংখ্যা এগregate করা হয়。 - **সিংঘল-বাইনারি সেल्ფ-হোস্টিং** — ফ্রন্টএন্ড Go বাইনারিতে এমবেডেড, তাই একটি বিল্ড একক স্ট্যাটিক আর্টিফ্যাক্ট তৈরি করে (CGO ছাড়া) যা Linux বা macOS মেশিনে কপি করা যায়। ## রাউটিং ও মিটারিং如何 কাজ করে README-তে বর্ণিত চার ধাপের প্রবাহ: 1. প্রদত্তকারীর বেস URL, API কী ও মডেল তালিকা দিয়ে একটি চ্যানেল তৈরি করুন。API স্টাইল (Bearer for OpenAI-compatible, x-api-key for Anthropic-compatible) বেস URL থেকে স্বয়ংক্রিয়ভাবে সনাক্ত হয় এবং ওভাররাইড করা যায়。বাহ্যিক ডোমেইন, /v1 suffix, /anthropic-সদৃশ সাব-প্যাথ মাউন্ট ও ভার্সনযুক্ত মাউন্ট সহ বেশ কিছু বেস-URL ফর্ম সমর্থিত。 2. একটি নেটিভ-প্রোটোকল প্রোব প্রতিটি প্রোটোকল এন্ডপয়েন্টে একটি ক্ষুদ্র অনুরোধ পাঠায়; 2xx রেসপন্স সেই প্রোটোকলকে চ্যানেলের জন্য নেটিভ হিসেবে চিহ্নিত করে, যা ম্যানুয়ালিও ঠিক করা যায়。 3. ইনকামিং রিকোয়েস্টগুলো চালু চ্যানেলে স্ক্রিন হয়ে মডেল পরিবেশন করে, নেটিভ চ্যানেল অগ্রাধিকার পায়, আর রূপান্তরিত চ্যানেল শুধুমাত্র ফলব্যাক হিসেবে ব্যবহৃত হয়। নির্বাচন অগ্রাধিকার-ক্রমানুসারে ওজনযুক্ত র‍্যান্ডমনেটে, নেটওয়ার্ক ত্রুটি, 401/403/408/429 বা 5xx-সদৃশ ব্যর্থতা ফেইলওভার ট্রিগার করে。 4. ব্যবহার তথ্য আপস্ট্রিম রেসপন্স থেকে প্যার্স করা হয় (স্ট্রিমিং ব্যবহার অপশন স্বয়ংক্রিয়ভাবে যোগ হয়); যখন আপস্ট্রিম কিছুই দেয় না, তখন একটি লোকাল হিউরিস্টিক অনুমান ব্যবহার করা হয়। ক্যাশে হিট রেট প্রদত্তকারীর ক্যাশ-টোকেন ফিল্ড থেকে আসে, এবং প্রতিটি অনুরোধ লগ টেবিলে লেখা হয় ও UI-তে পাঠানো হয়。 ## ড্যাশবোর্ড ও API সারফেস অ্যাডমিন API-তে চ্যানেল, গেটওয়ে কী, অনুরোধ লগ (রিটেনশন ক্লিনআপ সহ), এবং পরিসংখ্যান এন্ডপয়েন্টের একটি সেট (সারসংক্ষেপ, দৈনিক ট্রেন্ড, মডেল-ভিত্তিক, চ্যানেল-ভিত্তিক, কী-ভিত্তিক, জীবনকালীন মোট ও মডেল-ট্রেন্ড) আছে, তাছাড়া একটি হেলথ এন্ডপয়েন্ট ও WebSocket এন্ডপয়েন্ট। গেটওয়ে এন্ডপয়েন্টে মার্জিত মডেল তালিকা ও চ্যাট, রেসপন্স ও মেसेज রাউট আছে। কলার autentikasi Bearer টোকেন বা x-api-key হেডার গ্রহণ করে, এবং কনফিগারেশনে বন্ধ করা যায়。 ## কনফিগারেশন ও অপারেশন কনফিগারেশন পিছনের ক্রম: পরিবেশ চলক, তারপর YAML ফাইল, তারপর বিল্ট-ইন ডিফল্ট। তথ্য WAL মোডে SQLite-এ সংরক্ষিত হয়, একক রাইটার সংযোগ সহ。অনুরোধ লগ ডিফল্টভাবে সীমাবদ্ধতা ছাড়াই বেড়ে যায়, তাই একটি রিটেনশন জব কনফিগারযোগ্য দিন সংখ্যার চেয়ে পুরনো সারি মুছে ফেলে, সাইকেল ইন্টারভ্যাল, ব্যাচ সাইজ ও বৈকল্পিক VACUUM-এর সেটিংস সহ। প্রকল্প উল্লেখ করে যে SQLite ফাইল মুছার পর স্বয়ংক্রিয়ভাবে সংকুচিত হয় না。 ## পরীক্ষা ইউনিট টেস্ট একটি আভ্যন্তরীণ টেস্ট প্যাকেজ লেআউটে থাকে, যা কনফিগারেশন লোডিং, ইনমেমরি SQLite রিপোজিটরি, ইভেন্ট বাস, WebSocket আচরণ, প্রদত্তকারী প্রোব ও রূপান্তর (ফেক আপস্ট্রিম দিয়ে), গেটওয়ে নির্বাচন ও পরিসংখ্যান ধারাবাহিকতা, এবং এন্ড-টু-এন্ড হ্যান্ডলার/রাউটার পথ কভার করে। README-তে সম্পূর্ণ রেস-এনেবলড টেস্ট রান ও 87.6% স্টেটমেন্ট কভারেজ, তাছাড়া WebSocket রিকানেকশন ও ডেটা ট্রান্সফর্মের জন্য ফ্রন্টএন্ড টেস্ট রয়েছে。 ## প্রকল্প দ্বারা ঘোষিত সীমাবদ্ধতা - রূপান্তর পথ কেবল টেক্সট চ্যাট হ্যান্ডেল করে; টুল কল, মাল্টিমডাল ও ক্যাশ-কন্ট্রোল লোডের জন্য নেটিভ পাসথ্রু চ্যানেল প্রয়োজন。 - ব্যালেন্স ক্যুয়েরি বর্তমানে DeepSeek-এর জন্যই আছে, কারণ অন্যান্য প্রদত্তকারীদের ব্যালেন্স API অদ্বিতীয়া, এক্সপায়ারিং কুকি autentikasi প্রয়োজন, বা পাবলিক নয়。 - লোকাল টোকেন অনুমান হিউরিস্টিক ও শুধুমাত্র ফলব্যাক হিসেবে ব্যবহৃত হয়。 - অ্যাডমিন API-তে লগিন autentikasi নেই, এটি সেल्ফ-হোস্টেড ইনট্রানেট ব্যবহার ও এক্সটার্নাল নেটওয়ার্ক আইসোলেশনের জন্য নকশা করা; কী প্লেইনটেক্সটে সংরক্ষিত। - ক্যাশে হিট রেট ও প্রতি-কী এগregেশন অনুরোধ লগ স্ন্যাপশটের ওপর নির্ভরশীল, তাই মুছে ফেলা কী-এর ঐতিহাসিক ব্যবহার নাম অনুযায়ী থেকে যায়। ## কম্প্যানিয়ন অ্যাপ ও লাইসেন্স একটি পৃথক SwiftUI মেনু বার অ্যাপ একই অ্যাডমিন API ও WebSocket ব্যবহার করে, ব্যাকএন্ড পরিবর্তন ছাড়াই। XTokenHub MIT লাইসেন্সের অধীনে প্রকাশিত।