हर प्रमुख क्लाउड AI सेवा के लिए स्थानीय OpenAI-संगत प्रॉक्सी चलाएँ। API कुंजियाँ एक बार सहेजें और किसी भी क्लाइंट ऐप — डेस्कटॉप, मोबाइल या वेब — को इससे संवाद करने दें http://localhost हर टूल में कुंजियाँ पंजीकृत करने के बजाय।
आरंभ करें
1. ऐप लॉन्च करें
AIProxyServer खोलें। पहली बार लॉन्च होने पर प्रॉक्सी स्वचालित रूप से शुरू हो जाती है और पोर्ट पर सुनती है 8421 आपकी स्थानीय मशीन का। मुख्य विंडो में तीन अनुभाग दिखते हैं:
- प्रॉक्सी सर्वर — वर्तमान स्थिति, बेस URL, और लिस्नर शुरू या बंद करने का बटन
- बेयरर टोकन — वैकल्पिक प्रमाणीकरण टॉगल और टोकन डिस्प्ले
- प्रदाता — प्रत्येक समर्थित क्लाउड AI प्रदाता, जिसमें एक API कुंजी सेट करें हर पंक्ति के लिए बटन
2. अपनी पहली API कुंजी जोड़ें
- प्रदाताओं की सूची से कोई भी प्रदाता चुनें (उदाहरण के लिए OpenAI (ChatGPT))
- क्लिक करें API कुंजी प्राप्त करें अपने ब्राउज़र में प्रदाता का कंसोल खोलने के लिए, फिर एक कुंजी बनाएँ या कॉपी करें
- क्लिक करें API कुंजी सेट करें उसी पंक्ति में और मान को डायलॉग में पेस्ट करें
- क्लिक करें सहेजें। स्थिति लेबल बदलकर हो जाता है कॉन्फ़िगर किया गया हरे रंग में
3. क्लाइंट ऐप कनेक्ट करें
किसी भी OpenAI-संगत क्लाइंट को प्रॉक्सी की ओर निर्देशित करें। बेस URL है http://localhost:8421/<provider>/v1। प्रदाता खंड यह चुनता है कि अनुरोध किस क्लाउड को प्राप्त होगा।
# उदाहरण: प्रॉक्सी की ओर निर्देशित OpenAI Python SDK
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8421/openai/v1",
api_key="not-used-but-required-by-sdk",
)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
क्लाइंट वास्तविक कुंजी कभी नहीं देखता। अनुरोध अग्रेषित करते समय AIProxyServer अपस्ट्रीम क्रेडेंशियल जोड़ता है।
इंटरफ़ेस अवलोकन
प्रॉक्सी सर्वर पैनल
| फ़ील्ड | विवरण |
|---|---|
| स्थिति | चल रहा है जब लिस्नर सक्रिय हो, रुका हुआ अन्यथा। |
| बेस URL | होस्टनाम और पोर्ट सहित वह पता जिसे क्लाइंट ऐप्स को उपयोग करना चाहिए। क्लिक करें कॉपी करें इसे क्लिपबोर्ड पर कॉपी करने के लिए। |
| प्रारंभ / रोकें बटन | ऐप बंद किए बिना HTTP लिस्नर को टॉगल करें। |
बेयरर टोकन पैनल
- बेयरर टोकन प्रमाणीकरण आवश्यक करें — चेकबॉक्स जो प्रमाणीकरण को चालू या बंद करता है। आसान स्थानीय उपयोग के लिए डिफ़ॉल्ट रूप से बंद।
- टोकन फ़ील्ड — वर्तमान टोकन का केवल-पठन डिस्प्ले। बिंदुओं के रूप में दिखता है; उपयोग करें कॉपी करें इसे प्राप्त करने के लिए।
- पुनः जनरेट करें — नया यादृच्छिक टोकन जारी करें। मौजूदा क्लाइंट को नए मान से अपडेट करना होगा।
प्रदाता पैनल
हर समर्थित क्लाउड प्रदाता के लिए एक पंक्ति। प्रत्येक पंक्ति में दिखता है:
- प्रदर्शित नाम (उदाहरण के लिए Claude (Anthropic))
- कॉन्फ़िगरेशन स्थिति — हरा कॉन्फ़िगर किया गया जब API कुंजी सहेजी गई हो, धूसर कॉन्फ़िगर नहीं किया गया अन्यथा
- वह URL पथ जिसे आपके क्लाइंट उपयोग करते हैं, जैसे
/anthropic/v1/chat/completions - API कुंजी सेट करें — क्रेडेंशियल दर्ज करने के लिए डायलॉग खोलता है
- API कुंजी प्राप्त करें — आपके ब्राउज़र में प्रदाता का कंसोल खोलता है
समर्थित प्रदाता
ग्यारह क्लाउड AI सेवाएँ शामिल हैं। अधिकांश मूल रूप से OpenAI Chat Completions प्रारूप का उपयोग करती हैं और जैसी हैं वैसी प्रॉक्सी की जाती हैं। तीन (Anthropic, Gemini, ERNIE) अपने स्वयं के प्रोटोकॉल बोलती हैं; AIProxyServer चलते-फिरते अनुरोधों और उत्तरों का अनुवाद करता है, ताकि आपके क्लाइंट को हमेशा केवल OpenAI प्रारूप दिखे।
| प्रदाता | रूट उपसर्ग | आपको क्या चाहिए |
|---|---|---|
| OpenAI (ChatGPT) | /openai/v1 | से API कुंजी platform.openai.com |
| Claude (Anthropic) | /anthropic/v1 | Anthropic Console से API कुंजी |
| Gemini (Google) | /gemini/v1 | Google AI Studio से API कुंजी |
| Grok (xAI) | /grok/v1 | xAI Console से API कुंजी |
| Azure OpenAI (Copilot) | /copilot/v1 | API कुंजी और आपके डिप्लॉयमेंट एंडपॉइंट का URL |
| Perplexity | /perplexity/v1 | Perplexity सेटिंग्स से API कुंजी |
| Groq | /groq/v1 | Groq Cloud से API कुंजी |
| DeepSeek | /deepseek/v1 | DeepSeek Platform से API कुंजी |
| Kimi (Moonshot) | /kimi/v1 | Moonshot Console से API कुंजी |
| Qwen (DashScope) | /qwen/v1 | Alibaba DashScope से API कुंजी |
| ERNIE (Baidu) | /ernie/v1 | Baidu Qianfan से API Key और Secret Key दोनों |
प्रदाता-विशिष्ट टिप्पणियाँ
- Azure OpenAI — पूरा डिप्लॉयमेंट एंडपॉइंट इसमें पेस्ट करें एंडपॉइंट बेस URL फ़ील्ड, उदाहरण के लिए
https://my-resource.openai.azure.com/openai/deployments/gpt-4o। प्रॉक्सी जोड़ता है/chat/completions?api-version=2024-02-01स्वचालित रूप से। - ERNIE — Baidu Qianfan OAuth का उपयोग करता है, इसलिए दोनों API Key और Secret Key आवश्यक हैं। AIProxyServer पर्दे के पीछे एक्सेस टोकन का अनुरोध और कैश करता है।
- Gemini — प्रमाणीकरण URL क्वेरी पैरामीटर से होता है; प्रॉक्सी इसे आपके लिए जोड़ती है। निःशुल्क स्तर की प्रति-मिनट कोटा सीमाएँ फिर भी लागू होती हैं।
API संदर्भ
एंडपॉइंट
| विधि | पथ | विवरण |
|---|---|---|
| GET | /health | लाइवनेस जाँच। सेवा स्थिति और प्रदाता सूची लौटाता है। किसी प्रमाणीकरण की आवश्यकता नहीं। |
| GET | /v1/providers | कॉन्फ़िगर किए गए प्रदाता और मेटाडेटा। |
| GET | /<provider>/v1/models | दिए गए प्रदाता के लिए OpenAI प्रारूप में मॉडल सूची। |
| POST | /<provider>/v1/chat/completions | OpenAI Chat Completions अनुरोध। पास करें stream:true SSE के लिए। |
स्ट्रीमिंग
जब क्लाइंट भेजता है "stream": true, तो प्रॉक्सी OpenAI के प्रारूप में Server-Sent Events के साथ उत्तर देती है:
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant"},...}]}
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"},...}]}
data: [DONE]
Anthropic और Gemini की मूल स्ट्रीम का इस प्रारूप में अनुवाद किया जाता है, ताकि सभी क्लाइंट एक ही पार्सर का उपयोग कर सकें।
प्रमाणीकरण हेडर
जब बेयरर टोकन प्रमाणीकरण आवश्यक करें चालू हो, तो हर अनुरोध के साथ मुख्य विंडो से टोकन भेजें:
Authorization: Bearer <token-shown-in-app>
सेटिंग्स
नीचे के टूलबार में गियर आइकन से सेटिंग्स विंडो खोलें।
| सेटिंग | डिफ़ॉल्ट | विवरण |
|---|---|---|
| प्रॉक्सी पोर्ट | 8421 | TCP पोर्ट जिससे लिस्नर बाइंड होता है। बदलने के लिए प्रॉक्सी को पुनः प्रारंभ करना आवश्यक है। |
| सर्वर स्वतः प्रारंभ करें | चालू | ऐप लॉन्च होने पर प्रॉक्सी शुरू करें। |
| LAN पहुँच की अनुमति दें | बंद | बंद होने पर, प्रॉक्सी केवल इससे बाइंड होती है 127.0.0.1। चालू होने पर, आपके Wi-Fi पर अन्य डिवाइस प्रॉक्सी तक पहुँच सकते हैं। |
| बेयरर टोकन आवश्यक करें | बंद | चालू होने पर, हर अनुरोध में मुख्य विंडो में दिखाया गया टोकन शामिल होना चाहिए। Allow LAN Access चालू होने पर इसकी दृढ़ता से अनुशंसा की जाती है। |
क्लाइंट उदाहरण
cURL
# OpenAI (पारदर्शी अग्रेषण)
curl http://localhost:8421/openai/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Hello"}]
}'
# उसी OpenAI प्रारूप के माध्यम से Claude
curl http://localhost:8421/anthropic/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"messages": [{"role": "user", "content": "Hello"}],
"max_tokens": 1024
}'
OpenAI Python SDK
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8421/gemini/v1",
api_key="placeholder", # Bearer Token बंद होने पर अनदेखा किया जाता है
)
stream = client.chat.completions.create(
model="gemini-2.0-flash",
messages=[{"role": "user", "content": "Tell me a joke"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
Flutter / Dart
// किसी भी OpenAI-संगत Dart क्लाइंट का उपयोग करते हुए
final client = OpenAIClient(
baseUrl: 'http://localhost:8421/anthropic/v1',
apiKey: '', // Bearer Token बंद होने पर अप्रयुक्त
);
localhost अपने Mac के LAN IP से (जब LAN पहुँच की अनुमति दें चालू हो तो बेस URL फ़ील्ड में दिखाया जाता है)।सुझाव
- स्थानीय रूप से विकास करते समय बेयरर टोकन बंद रखें; LAN पहुँच सक्षम करते ही इसे चालू करें।
- अपने क्लाइंट कोड में प्रत्येक प्रदाता के लिए अलग बेस URL का उपयोग करें, ताकि एक कॉन्स्टैंट बदलकर प्रदाता बदल सकें।
- प्रॉक्सी स्वतः शुरू होती है, लेकिन यदि पोर्ट टकराव हो तो आप मुख्य विंडो से इसे अस्थायी रूप से रोक सकते हैं।
- यदि किसी प्रदाता का निःशुल्क स्तर आपकी दर सीमित करता है, तो अपस्ट्रीम त्रुटि संदेश ज्यों का त्यों अग्रेषित होता है। क्लाइंट से कोई पुनः प्रयास तर्क नहीं छिपाया जाता।
- यह
/v1/providersएंडपॉइंट रनटाइम पर कॉन्फ़िगर किए गए प्रदाताओं को खोजने के लिए उपयोगी है।
समस्या निवारण
प्रॉक्सी शुरू नहीं होगी
- कोई अन्य प्रक्रिया पहले से पोर्ट 8421 का उपयोग कर रही हो सकती है। सेटिंग्स में पोर्ट बदलें और प्रॉक्सी पुनः प्रारंभ करें।
- प्रारंभ समय पर प्रदर्शित त्रुटि संदेश के लिए सिस्टम लॉग जाँचें।
किसी अनुरोध पर 401 Unauthorized मिलता है
- बेयरर टोकन आवश्यकता चालू है, लेकिन क्लाइंट ने मेल खाता हुआ
Authorization: Bearer ...हेडर नहीं भेजा। - प्रदाता की स्वयं की API कुंजी अमान्य हो सकती है — अपस्ट्रीम त्रुटि अग्रेषित होती है, इसलिए संदेश का मुख्य भाग जाँचें।
किसी अनुरोध पर "API key is not configured" मिलता है
- प्रदाता सूची खोलें और क्लिक करें API कुंजी सेट करें संबंधित प्रदाता के लिए।
- ERNIE के लिए API Key और Secret Key दोनों भरे होने चाहिए। Azure OpenAI के लिए Endpoint Base URL भी आवश्यक है।
मोबाइल डिवाइस प्रॉक्सी तक नहीं पहुँच सकता
- चालू करें LAN पहुँच की अनुमति दें सेटिंग्स में।
- बेस URL फ़ील्ड में दिखाए गए LAN IP का उपयोग करें, न कि
localhost. - सुनिश्चित करें कि दोनों डिवाइस एक ही Wi-Fi नेटवर्क पर हैं और आपका फ़ायरवॉल प्रॉक्सी पोर्ट पर आने वाले कनेक्शन की अनुमति देता है।
स्ट्रीमिंग प्रतिक्रियाएँ एक साथ आती हैं
- सुनिश्चित करें कि आपका क्लाइंट भेजता है
"stream": trueJSON बॉडी में। - कुछ HTTP लाइब्रेरी डिफ़ॉल्ट रूप से SSE को बफर करती हैं — क्लाइंट पक्ष पर प्रतिक्रिया बफरिंग अक्षम करें।
गोपनीयता
- API कुंजियाँ Fernet से एन्क्रिप्ट करके इसमें संग्रहीत की जाती हैं
~/Library/Application Support/AIProxyServer/credentials.enc। इसमें एन्क्रिप्शन कुंजीmaster.keyको 0600 अनुमतियाँ प्राप्त हैं। - सक्षम होने पर बेयरर टोकन भी केवल एन्क्रिप्टेड वॉल्ट में संग्रहीत होता है और सामान्य सेटिंग्स फ़ाइल में कभी नहीं लिखा जाता।
- प्रॉक्सी केवल उन प्रदाताओं को अनुरोध अग्रेषित करती है जिन्हें आपने स्पष्ट रूप से कॉन्फ़िगर किया है। यह कोई अन्य आउटबाउंड कॉल नहीं करती।
- कोई टेलीमेट्री नहीं, कोई एनालिटिक्स नहीं, कोई क्रैश रिपोर्टिंग नहीं।
- डिफ़ॉल्ट नेटवर्क बाइंडिंग है
127.0.0.1केवल। LAN एक्सपोज़र वैकल्पिक है। - वार्तालाप की सामग्री संग्रहीत नहीं की जाती। AIProxyServer बाइट्स को अग्रेषित करता है और तुरंत भूल जाता है।