ओपनकोड एक खुला प्रोग्रामिंग एजेंट है जो टर्मिनल में काम करता है: प्रोजेक्ट फाइलें पढ़ता है, कोड संपादित करता है, कमांड चलाता है और परीक्षण करता है, रिपॉजिटरी खोजता है और गिट के साथ काम करता है। यह किसी एक मॉडल प्रदाता से बंधा नहीं है, इसलिए लगभग किसी भी OpenAI-संगत सेवा को इससे जोड़ा जा सकता है।
FreeLLMAPI एक खुला स्व-होस्टेड राउटर है जो एक OpenAI-संगत /v1 पते के तहत दर्जनों AI प्रदाताओं से मुफ्त योजनाएं एकत्र करता है। तीस कुंजियों, तीस सीमाओं और तीस स्थानों के बजाय जहां अनुरोध विफल हो सकता है, आपके पास एक स्थानीय गेटवे और एक एकीकृत कुंजी है। राउटर स्वयं एक उपलब्ध मॉडल का चयन करता है, त्रुटि 429 या 5xx होने पर अगले मॉडल पर स्विच करता है, और यह सुनिश्चित करता है कि अनुरोध मुफ्त टैरिफ के कोटा से अधिक न हों।
इस पोस्ट में मैं फ्रीएलएलएमएपीआई स्थापित करने, प्रदाताओं को जोड़ने और गेटवे को ओपनकोड से जोड़ने का वर्णन करूंगा।
आपको क्या चाहिए
काम करने के लिए आपको चार चीजों की आवश्यकता है:
- OpenCode इंस्टॉल हो गया है। यदि एजेंट अभी तक इंस्टॉल नहीं हुआ है, तो मैंने OpenCode और DeepSeek के बारे में एक अलग नोट में इंस्टॉलेशन प्रक्रिया पर चर्चा की है।
- FreeLLMAPI चल रहा है। सबसे आसान तरीका डेस्कटॉप एप्लिकेशन या डॉकर कंटेनर इंस्टॉल करना है।
- Node.js 20.18 या बाद का। यह CLI जनरेटर के लिए आवश्यक है जो OpenCode को कॉन्फ़िगर करता है। ओपनकोड स्वयं नोड के बिना स्थापित किया जा सकता है।
- कम से कम एक प्रदाता की कुंजी। कैटलॉग से Google AI स्टूडियो, ग्रोक, सेरेब्रस, मिस्ट्रल, ओपनराउटर, NVIDIA, हगिंगफेस और अन्य सेवाओं की मुफ्त योजनाएं उपयुक्त हैं।
FreeLLMAPI इंस्टॉल कर रहा है
प्रोजेक्ट में कई इंस्टॉलेशन पथ हैं। वह चुनें जो आपके सिस्टम के लिए अधिक सुविधाजनक हो।
डेस्कटॉप एप्लिकेशन
विंडोज़ और मैकओएस के लिए सबसे आसान विकल्प रिलीज़ पेज से तैयार इंस्टॉलर है। विंडोज़ पर यह .exe है, MacOS पर यह Apple सिलिकॉन या Intel के लिए .dmg है। एप्लिकेशन ट्रे में रहता है और नियंत्रण कक्ष के साथ-साथ राउटर को स्थानीय स्तर पर उठाता है।
डेस्कटॉप संस्करण के लिए पासवर्ड की आवश्यकता नहीं है: पैनल एक छिपे हुए स्थानीय खाते के माध्यम से स्वयं लॉग इन करता है। आपको जिस एकमात्र क्रेडेंशियल की आवश्यकता होगी वह ट्रे पॉप-अप विंडो से या कुंजी पेज हेडर से एकीकृत कुंजी है।
एप्लिकेशन डेटा एक निर्देशिका में स्थित है:
- Windows — %APPDATA%\FreeLLMAPI\
- macOS — ~/Library/Application Support/FreeLLMAPI/
- Linux — ~/.config/FreeLLMAPI/
Docker
यदि डॉकर पहले से ही स्थापित है, तो सर्वर को एक कमांड के साथ ऊपर उठाया जाता है। स्क्रिप्ट ~/freellmapi निर्देशिका बनाती है, एक एन्क्रिप्शन कुंजी उत्पन्न करती है, छवि डाउनलोड करती है और कंटेनर शुरू करती है:
curl -fsSL https://freellmapi.co/install.sh | bash
स्क्रिप्ट को दोबारा चलाना सुरक्षित है: .env फ़ाइल और एन्क्रिप्शन कुंजी सहेजी जाती है, और कंटेनर को नवीनतम संस्करण में अपडेट किया जाता है। विंडोज़ पर, यह विधि WSL या किसी बैश वातावरण में काम करती है।
लॉन्च के बाद, पैनल यहां खुलता है:
http://localhost:3001
सर्वर इंस्टालेशन के लिए, आपको एक ईमेल और पासवर्ड के साथ एक खाता बनाना होगा। यदि पासवर्ड भूल गया है, तो रीसेट कोड कंटेनर लॉग में मुद्रित होता है:
docker compose logs -f freellmapi
Docker Compose
यदि आप कॉन्फ़िगरेशन को गिट में रखना चाहते हैं और लॉन्च को मैन्युअल रूप से प्रबंधित करना चाहते हैं, तो नियमित कंपोज़ करेगा। MacOS और Linux पर:
git clone https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
ENCRYPTION_KEY="$(openssl rand -hex 32)"
printf "ENCRYPTION_KEY=%s\nPORT=3001\n" "$ENCRYPTION_KEY" > .env
docker compose up -d
विंडोज़ पॉवरशेल में:
git clone https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
$Bytes = New-Object Byte[] 32
[Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($Bytes)
$ENCRYPTION_KEY = -join ($Bytes | ForEach-Object { "{0:x2}" -f $_ })
"ENCRYPTION_KEY=$ENCRYPTION_KEY`nPORT=3001" | Out-File -Encoding utf8 .env
docker compose up -d
ENCRYPTION_KEY कुंजी आवश्यक है: इसका उपयोग SQLite डेटाबेस में प्रदाता कुंजियों को एन्क्रिप्ट करने के लिए किया जाता है। आप इसे तुरंत नहीं बदल सकते – पुराने रहस्य अब डिक्रिप्ट नहीं किए जाएंगे। रोटेशन के लिए, प्रोजेक्ट में एक अलग कमांड रोटेट-एन्क्रिप्शन-की है।
स्रोत से चल रहा है
विकास या डिबगिंग के लिए, आप प्रोजेक्ट को Node.js के माध्यम से चला सकते हैं:
git clone https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
npm install
ENCRYPTION_KEY="$(node -e 'console.log(require("crypto").randomBytes(32).toString("hex"))')"
printf "ENCRYPTION_KEY=%s\nPORT=3001\n" "$ENCRYPTION_KEY" > .env
npm run dev
इस मोड में, एपीआई और पैनल को पोर्ट 3001 पर उठाया जाता है, और वाइट इंटरफ़ेस को 5173 पर उठाया जाता है।
प्रथम लॉन्च और प्रदाता कुंजी
पैनल खोलें, कुंजियाँ पृष्ठ पर जाएँ और हमारे द्वारा उपयोग की जाने वाली सेवाओं की कुंजियाँ जोड़ें। प्रत्येक प्रदाता के लिए, इंटरफ़ेस में पंजीकरण के लिए एक लिंक और कुंजी कहाँ से प्राप्त करें, इसका संकेत होता है। एक या दो से शुरुआत करना पर्याप्त है: उदाहरण के लिए, Google AI स्टूडियो और ग्रोक।
एक बार जोड़ने के बाद, कुंजी की स्वास्थ्य जांच की जाती है। यदि प्रदाता ने त्रुटि के साथ उत्तर दिया है, तो कुंजी सूची में रहेगी, लेकिन अस्वस्थ के रूप में चिह्नित की जाएगी – इसे दोबारा जांचा जा सकता है या हटाया जा सकता है।
इसके बाद, आपको मॉडल पृष्ठ पर जाना चाहिए और देखना चाहिए कि कौन से मॉडल उपलब्ध हैं। वहां आप रूटिंग रणनीति और फॉलबैक चेन के क्रम को भी कॉन्फ़िगर कर सकते हैं – वह चेन जिसके साथ राउटर त्रुटियों और सीमाओं की स्थिति में जाता है। ऑटो मॉडल का अर्थ है कि चुनाव राउटर द्वारा ही किया जाता है। इसके अतिरिक्त, auto:fast, auto:smart और विशिष्ट कार्यों के लिए नामित प्रोफ़ाइल जैसे विकल्प उपलब्ध हैं।
यह भी जांचने लायक है कि श्रृंखला में ऐसे मॉडल हैं जो टूल का समर्थन करते हैं। ओपनकोड सक्रिय रूप से टूल कॉलिंग का उपयोग करता है, और इस सुविधा के बिना एक मॉडल सामान्य रूप से फ़ाइलों को पढ़ने या कमांड चलाने में सक्षम नहीं होगा।
एकीकृत कुंजी वहां, कुंजी पृष्ठ पर, या डेस्कटॉप एप्लिकेशन की ट्रे में ली जाती है। यह उपसर्ग के साथ एक स्ट्रिंग जैसा दिखता है:
freellmapi-...
यह कुंजी है, न कि व्यक्तिगत प्रदाताओं की कुंजी, जिसे ओपनकोड में दर्शाया गया है।
OpenCode से कनेक्ट करें
FreeLLMAPI में एक कॉन्फ़िगरेशन जनरेटर है जो स्वयं चल रहे गेटवे से मॉडल निर्देशिका को पढ़ता है, मौजूदा कॉन्फ़िगरेशन की बैकअप प्रतिलिपि बनाता है और प्रदाता को सावधानीपूर्वक इसमें जोड़ता है।
सबसे पहले, आइए एकीकृत कुंजी को पर्यावरण चर पर सेट करें। जनरेटर इसे एक अलग ध्वज के बजाय पढ़ता है, इसलिए रहस्य कमांड इतिहास में समाप्त नहीं होगा।
MacOS और Linux पर:
export FREELLMAPI_API_KEY=freellmapi-YOUR_KEY
विंडोज़ पॉवरशेल में:
$env:FREELLMAPI_API_KEY="freellmapi-YOUR_KEY"
अब आइए देखें कि वास्तव में क्या दर्ज किया जाएगा:
npx freellmapi setup-opencode --url http://localhost:3001 --dry-run
यदि अंतर संतोषजनक है, तो ध्वज के बिना आदेश दोहराएं:
npx freellmapi setup-opencode --url http://localhost:3001
जनरेटर वैश्विक ओपनकोड कॉन्फ़िगरेशन लिखता है:
~/.config/opencode/opencode.json
फ्रीलमैपी प्रदाता इसमें @ai-sdk/openai-compatible पैकेज, आधार पता http://localhost:3001/v1 और लाइव कैटलॉग से मॉडलों का एक नक्शा के साथ दिखाई देता है। डिफ़ॉल्ट मॉडल फ्रीलमैपी/ऑटो बन जाता है।
कुंजी स्वयं फ़ाइल में समाप्त नहीं होती है: कॉन्फ़िगरेशन में प्रतिस्थापन {env:FREELLMAPI_API_KEY} होता है। इसलिए, एजेंट शुरू होने पर वेरिएबल सेट रहना चाहिए:
opencode
यह विधि सुविधाजनक भी है क्योंकि रहस्य कॉन्फ़िगरेशन में समाप्त नहीं होता है और गिट में समाप्त नहीं होगा। सीआई और वन-टाइम रन के लिए, यह कुंजी को फ़ाइल में संग्रहीत करने से अधिक सही है।
मैन्युअल सेटिंग
यदि आप जनरेटर नहीं चलाना चाहते हैं, तो आप प्रदाता का मैन्युअल रूप से opencode.json में वर्णन कर सकते हैं। न्यूनतम विकल्प इस प्रकार दिखता है:
{
"$schema": "https://opencode.ai/config.json",
"model": "freellmapi/auto",
"provider": {
"freellmapi": {
"npm": "@ai-sdk/openai-compatible",
"name": "FreeLLMAPI",
"options": {
"baseURL": "http://localhost:3001/v1",
"apiKey": "{env:FREELLMAPI_API_KEY}"
},
"models": {
"auto": {
"name": "FreeLLMAPI Auto Router",
"limit": { "context": 1048576, "output": 65536 }
}
}
}
}
}
शीर्ष स्तर पर मॉडल फ़ील्ड महत्वपूर्ण है: इसके बिना, ओपनकोड पिछले मॉडल का उपयोग जारी रख सकता है या नए इंस्टॉलेशन पर कुछ भी नहीं चुन सकता है। गेटवे प्रतिक्रिया से संदर्भ और आउटपुट सीमाएं लेना बेहतर है, बजाय उनका आविष्कार करने के:
curl http://localhost:3001/v1/models
यदि आपको मैन्युअल रूप से उन पर स्विच करने की आवश्यकता है तो आप मॉडल सूची में विशिष्ट पहचानकर्ता जोड़ सकते हैं। लेकिन रोजमर्रा के काम के लिए, ऑटो पर्याप्त है: राउटर स्वयं एक लाइव मॉडल का चयन करेगा और सीमा समाप्त होने पर स्विच करेगा।
इसका उपयोग कैसे करें
ओपनकोड लॉन्च करने के बाद, मॉडलों की सूची एक परिचित कमांड के साथ खुलती है:
/models
इसमें एक FreeLLMAPI प्रदाता और एक ऑटो मॉडल होगा। फिर कार्य सामान्य रूप से आगे बढ़ता है: हम कार्य का वर्णन करते हैं, @ के माध्यम से फ़ाइलें निर्दिष्ट करते हैं, टैब कुंजी के साथ योजना मोड को स्विच करते हैं, /पूर्ववत करें कमांड के साथ संपादन वापस रोल करते हैं। किसी नए प्रोजेक्ट के लिए, एजेंट द्वारा AGENTS.md बनाने के लिए /init चलाना उपयोगी होता है।
कुछ व्यावहारिक सुझाव:
- रूटिंग। रूटीन के लिए, इसे ऑटो पर छोड़ दें। यदि आपको गति की आवश्यकता है, तो ऑटो: फास्ट आज़माएं, यदि गुणवत्ता ऑटो: स्मार्ट है या कैटलॉग से एक विशिष्ट मजबूत मॉडल है।
- डायग्नोस्टिक्स प्रत्येक गेटवे प्रतिक्रिया में प्रदाता और मॉडल के नाम के साथ एक एक्स-रूटेड-वाया हेडर होता है जो वास्तव में अनुरोध को पूरा करता है। यह दिखाता है कि राउटर ने कार्य कहां भेजा है।
- एनालिटिक्स। एनालिटिक्स पेज पर, पैनल अनुरोधों की मात्रा, सफलता, p50/p95 देरी और प्रदाता द्वारा टोकन खपत दिखाता है।
- संवाद की निरंतरता। बातचीत के बीच में मॉडल स्विच करते समय, गेटवे संदर्भ के हस्तांतरण के बारे में एक संक्षिप्त नोट जोड़ सकता है। वेरिएबल FREELLMAPI_CONTEXT_HANDOFF=on_model_switch द्वारा सक्षम।
यदि OpenCode एक कंटेनर में चल रहा है और FreeLLMAPI एक होस्ट पर चल रहा है, तो लोकलहोस्ट कंटेनर को ही इंगित करेगा। इस मामले में, आपको Host.docker.internal या बेसयूआरएल में कंटेनर से पहुंच योग्य किसी अन्य पते का उपयोग करने की आवश्यकता है।
किस बात पर ध्यान दें
FreeLLMAPI सशुल्क मॉडल का प्रतिस्थापन नहीं है और न ही SLA वाली सेवा है। यह मुफ़्त योजनाओं को एक साफ-सुथरे गेटवे में बंडल करने का एक तरीका है। इसलिए कई प्रतिबंध हैं:
- गुणवत्ता में उतार-चढ़ाव होता है। मुफ्त टैरिफ समाप्त हो जाते हैं, और देर शाम, दैनिक कोटा समाप्त होने के करीब, राउटर कमजोर मॉडल पर स्विच कर सकता है। कोटा आमतौर पर आधी रात यूटीसी पर रीसेट हो जाता है।
- विलंबताएं परिवर्तनशील होती हैं। अलग-अलग प्रदाता अलग-अलग प्रतिक्रिया देते हैं, और बैकअप मॉडल पर स्विच करते समय, अनुरोध में काफी अधिक समय लग सकता है।
- कोई फ्लैगशिप मॉडल नहीं हैं। अच्छे, लेकिन टॉप-एंड नहीं, मॉडल मुफ्त प्लान में उपलब्ध हैं। जटिल आर्किटेक्चर के लिए यह विचार करने योग्य है।
- गेटवे चालू होना चाहिए। यदि एप्लिकेशन या कंटेनर बंद हो जाता है, तो OpenCode को कोई प्रतिक्रिया नहीं मिलेगी। ट्रे में एप्लिकेशन को स्वत: प्रारंभ करने या कंटेनर नीति को पुनरारंभ करने से यह समस्या हल हो जाती है।
- प्रोजेक्ट एक उपयोगकर्ता के लिए डिज़ाइन किया गया है। प्रदाता कुंजियाँ स्थानीय रूप से संग्रहीत और एन्क्रिप्टेड हैं, लेकिन कई लोगों के लिए एक साझा पैनल इस टूल के लिए परिदृश्य नहीं है। एकीकृत कुंजी और .env को नियमित रहस्य की तरह ही संरक्षित किया जाना चाहिए।
और एक और बारीकियां: मॉडल कैटलॉग खुद को अपडेट करता है, लेकिन मुफ्त इंस्टॉलेशन को लगभग तीस दिनों की देरी से कैटलॉग का स्नैपशॉट प्राप्त होता है। प्रीमियम भुगतान योजना अद्यतन को गति देती है, लेकिन परियोजना से परिचित होने की आवश्यकता नहीं है – राउटर स्वयं मुफ़्त और खुला रहता है।
लिंक
https://github.com/tashfeenahmed/freellmapi
https://freellmapi.co/
https://freellmapi.co/models
https://github.com/tashfeenahmed/freellmapi/releases/latest
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/install/01-install.md
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/01-agent-clients.md
https://github.com/tashfeenahmed/freellmapi/blob/main/cli/README.md
https://opencode.ai/
https://opencode.ai/docs/
https://opencode.ai/docs/providers/
स्रोत
https://github.com/tashfeenahmed/freellmapi
https://github.com/tashfeenahmed/freellmapi/blob/main/README.ru.md
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/install/01-install.md
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/01-agent-clients.md
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/02-supported-agents.md
https://github.com/tashfeenahmed/freellmapi/blob/main/cli/README.md
https://opencode.ai/docs/providers/
Leave a Reply