कंटेंट पर जाएँ
एन्क्रिप्टेड, Tor और I2P endpoints

एन्क्रिप्टेड, Tor और I2P endpoints

API Tor onion सेवा और I2P eepsite के रूप में भी प्रकाशित है। वही रूट, वही key; केवल बेस URL और प्रॉक्सी बदलते हैं।

बेस URL

चार पते एक ही API तक ले जाते हैं। वह चुनें जो आपके नेटवर्क के अनुकूल हो, उसी API key और उन्हीं अनुरोधों के साथ।

नेटवर्क बेस URL आप वहाँ कैसे पहुँचते हैं
क्लियर वेब https://api.shannon-ai.com/v1 सीधे, HTTPS पर।
एन्क्रिप्टेड मिरर https://api-encrypted.shannon-ai.com/v1 सीधे, HTTPS पर। उसी API का दूसरा होस्ट नाम।
Tor (onion सेवा) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Tor क्लाइंट के ज़रिए: एक SOCKS5 प्रॉक्सी, डिफ़ॉल्ट रूप से 127.0.0.1:9050 पर।
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 I2P राउटर के ज़रिए: एक HTTP प्रॉक्सी, डिफ़ॉल्ट रूप से 127.0.0.1:4444 पर।
  • OpenAI SDK बेस URL को दिखाए अनुसार /v1 के साथ लेता है। Anthropic SDK उसे /v1 के बिना लेता है।
  • पता जाँचने के लिए https://api.shannon-ai.com के उत्तर हेडर पढ़ें: Onion-Location में onion पता होता है और X-I2P-Location में I2P पता। onion पता shannon से शुरू होता है।

कौन से रूट काम करते हैं

हर /v1 रूट चारों पतों पर उत्तर देता है:

  • POST /v1/chat/completions
  • POST /v1/responses
  • POST /v1/messages
  • POST /v1/messages/count_tokens
  • POST /v1/tokenize
  • GET /v1/models

GET /v1/models को key नहीं चाहिए, इसलिए यह जाँचने का तेज़ तरीका है कि आपकी प्रॉक्सी API तक पहुँचती है।

क्या समान है और क्या अलग

मद समान? ब्योरा
रूट, अनुरोध फ़ील्ड, उत्तर, एरर समान हर पते पर समान। कोई रूट होस्ट नाम के अनुसार अलग व्यवहार नहीं करता।
API key समान एक key हर पते पर काम करती है, Authorization: Bearer या x-api-key के रूप में। /v1 पर कुकीज़ कभी नहीं पढ़ी जातीं।
बैलेंस और सीमाएँ समान वही बैलेंस और प्रति मिनट 120 अनुरोध की वही सीमा। दोनों प्रति अकाउंट गिने जाते हैं, प्रति पता नहीं।
अनुरोध का आकार समान प्रति अनुरोध बॉडी 32 MiB तक।
स्कीम अलग क्लियर वेब पर और मिरर पर https://। .onion और .b32.i2p पतों पर http://, जहाँ नेटवर्क खुद कनेक्शन को शुरू से अंत तक एन्क्रिप्ट करता है।
प्रॉक्सी अलग क्लियर वेब पर कोई नहीं। Tor के लिए SOCKS5 प्रॉक्सी, I2P के लिए HTTP प्रॉक्सी। नाम प्रॉक्सी को हल करना चाहिए, आपकी मशीन को नहीं।
गति अलग दोनों नेटवर्क हर बाइट में देरी जोड़ते हैं। दोनों में I2P धीमा है।

बैलेंस और सीमाएँ अपने पेज पर वर्णित हैं। सीमाएँ और बैलेंस

Tor के ज़रिए cURL

अपनी मशीन पर Tor क्लाइंट चलाएँ। वह 127.0.0.1:9050 पर SOCKS5 प्रॉक्सी देता है। --socks5-hostname .onion नाम उस प्रॉक्सी को सौंपता है।

cURL · Tor
# 1. Is the onion service reachable? No key needed.
curl --socks5-hostname 127.0.0.1:9050 http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1/models

# 2. A streamed chat call. -N prints the stream as it arrives.
curl -N --socks5-hostname 127.0.0.1:9050 http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shannon-3",
    "stream": true,
    "messages": [{"role": "user", "content": "Hello over Tor"}]
  }'

I2P के ज़रिए cURL

अपनी मशीन पर I2P राउटर चलाएँ। वह 127.0.0.1:4444 पर एक HTTP प्रॉक्सी देता है, जो .b32.i2p नाम को जैसा है वैसा लेता है।

cURL · I2P
# 1. Is the eepsite reachable? No key needed.
curl --proxy http://127.0.0.1:4444 http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1/models

# 2. A streamed chat call.
curl -N --proxy http://127.0.0.1:4444 http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shannon-3",
    "stream": true,
    "messages": [{"role": "user", "content": "Hello over I2P"}]
  }'

SDK बेस URL

SDK में दो बदलाव चाहिए: नेटवर्क का बेस URL, और ऐसा HTTP क्लाइंट जो प्रॉक्सी से गुज़रे। Python में दोनों आधिकारिक SDK httpx क्लाइंट लेते हैं। SOCKS प्रॉक्सी के लिए httpx[socks] इंस्टॉल करें।

# pip install openai "httpx[socks]"
import httpx
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1",
    http_client=httpx.Client(proxy="socks5h://127.0.0.1:9050", timeout=600),
)

stream = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Hello over Tor"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

स्ट्रीमिंग दोनों नेटवर्क पर काम करती है। जब स्ट्रीम खुली हो और मॉडल के पास भेजने को अभी कुछ न हो, तब API एक keep-alive भेजती है, ताकि कनेक्शन प्रॉक्सी या आपके क्लाइंट को मरा हुआ न लगे।

Endpoint खुली स्ट्रीम पर keep-alive किसके लिए भेजा जाता है
/v1/chat/completions हर 15 सेकंड पर एक कमेंट पंक्ति (वह : से शुरू होती है)। सभी मॉडल
/v1/messages हर 15 सेकंड पर एक event: ping, या एक कमेंट पंक्ति। सभी मॉडल
/v1/responses हर 15 सेकंड पर एक कमेंट पंक्ति। होस्टेड ओपन-वेट मॉडल
  • "stream": true भेजें। स्ट्रीम किया गया उत्तर मॉडल के लिखते ही आना शुरू हो जाता है, और keep-alive दिखाता है कि अनुरोध पर अब भी काम हो रहा है। स्ट्रीम न किया गया उत्तर पूरा जवाब तैयार होने तक कुछ नहीं भेजता।
  • क्लाइंट को लंबा रीड टाइमआउट दें। नमूने 600 सेकंड इस्तेमाल करते हैं। 15 सेकंड से छोटा टाइमआउट दो keep-alive के बीच स्ट्रीम खत्म कर सकता है।
  • अपने SSE रीडर को कमेंट पंक्तियाँ और ping इवेंट छोड़ने दें। SDK यह पहले से करते हैं।
  • कनेक्शन टूटते ही अनुरोध दोबारा न भेजें। जो अनुरोध API तक पहुँच गया वह अंत तक चलता है और गिना जाता है, कनेक्शन चले जाने पर भी।
  • रास्ते को पहले GET /v1/models से जाँचें। इसे key नहीं चाहिए और यह एक छोटी JSON सूची लौटाता है।

कनेक्शन की समस्याएँ

लक्षण कारण और समाधान
127.0.0.1:9050 या 127.0.0.1:4444 से कनेक्शन अस्वीकार हो गया आपकी मशीन पर कोई Tor क्लाइंट या I2P राउटर नहीं चल रहा, या वह किसी दूसरे पोर्ट पर सुन रहा है। Tor Browser अपनी SOCKS प्रॉक्सी पोर्ट 9150 पर देता है।
.onion नाम के लिए Could not resolve host क्लाइंट ने नाम खुद हल करने की कोशिश की। cURL में --socks5-hostname और प्रॉक्सी URL में socks5h:// इस्तेमाल करें, ताकि Tor क्लाइंट उसे हल करे।
I2P प्रॉक्सी अपना एरर पेज दिखाती है राउटर को अभी पता नहीं मिला है। राउटर को शुरू होने के बाद कुछ मिनट चाहिए। फिर कोशिश करें।
Missing authentication के साथ 401 अनुरोध बिना key के पहुँचा। वही हेडर भेजें जो क्लियर वेब पर भेजते हैं।

बाकी हर एरर वैसा ही है जैसा क्लियर वेब पर। त्रुटि प्रबंधन

JavaScript के बिना आपकी key

Shannon की एक बिना JavaScript वाली वेबसाइट भी है, जो क्लियर वेब पर, onion सेवा के रूप में और eepsite के रूप में उपलब्ध है। उसका /keys पेज आपकी API key दिखाता है और उसे बदलने देता है, इसलिए आप Tor या I2P छोड़े बिना key पा सकते हैं। encrypted.shannon-ai.com/keys

उस वेबसाइट के तीनों नेटवर्क पर पते यहाँ सूचीबद्ध हैं: एन्क्रिप्टेड एक्सेस