एन्क्रिप्टेड, Tor आणि I2P एंडपॉइंट्स
API Tor onion सेवा आणि I2P eepsite म्हणूनही प्रकाशित केली आहे. तेच रूट्स, तीच की; फक्त बेस URL आणि प्रॉक्सी बदलतात.
बेस URL
चार पत्ते त्याच API कडे नेतात. तुमच्या नेटवर्कला योग्य असलेला वापरा, त्याच API कीसह आणि त्याच रिक्वेस्ट्ससह.
| नेटवर्क | बेस 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/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models ला की लागत नाही, त्यामुळे तुमची प्रॉक्सी API पर्यंत पोहोचते का हे तपासण्याची ती झटपट चाचणी आहे.
काय सारखे आहे आणि काय वेगळे
| बाब | सारखे? | तपशील |
|---|---|---|
| रूट्स, रिक्वेस्ट फील्ड्स, उत्तरे, त्रुटी | सारखे | प्रत्येक पत्त्यावर सारखेच. कोणताही रूट होस्ट नावानुसार वेगळा वागत नाही. |
| API की | सारखे | एकच की प्रत्येक पत्त्यावर चालते, 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 नाव त्या प्रॉक्सीकडे सोपवते.
# 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 नाव जसेच्या तसे घेते.
# 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) # pip install openai
import httpx
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1",
http_client=httpx.Client(proxy="http://127.0.0.1:4444", timeout=600),
)
stream = client.chat.completions.create(
model="shannon-3",
messages=[{"role": "user", "content": "Hello over I2P"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True) # pip install anthropic "httpx[socks]"
import anthropic
import httpx
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion",
http_client=httpx.Client(proxy="socks5h://127.0.0.1:9050", timeout=600),
)
with client.messages.stream(
model="shannon-1.6-lite",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello over Tor"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True) संथ लिंकवर स्ट्रीमिंग आणि keep-alive
स्ट्रीमिंग दोन्ही नेटवर्क्सवर चालते. स्ट्रीम उघडा असताना आणि मॉडेलकडे अजून पाठवण्यासारखे काही नसताना API keep-alive पाठवते, त्यामुळे कनेक्शन प्रॉक्सीला किंवा तुमच्या क्लायंटला मृत वाटत नाही.
| एंडपॉइंट | उघड्या स्ट्रीमवरील keep-alive | कोणासाठी पाठवले जाते |
|---|---|---|
/v1/chat/completions | दर 15 सेकंदांनी एक कमेंट ओळ (ती : ने सुरू होते). | सर्व मॉडेल्स |
/v1/messages | दर 15 सेकंदांनी event: ping, किंवा कमेंट ओळ. | सर्व मॉडेल्स |
/v1/responses | दर 15 सेकंदांनी एक कमेंट ओळ. | होस्ट केलेली open-weight मॉडेल्स |
"stream": trueपाठवा. मॉडेल लिहू लागताच स्ट्रीम केलेले उत्तर येऊ लागते, आणि keep-alive रिक्वेस्टवर अजून काम चालू असल्याचे दाखवतो. स्ट्रीम नसलेले उत्तर पूर्ण उत्तर तयार होईपर्यंत काहीही पाठवत नाही.- क्लायंटला मोठा रीड टाइमआउट द्या. नमुने 600 सेकंद वापरतात. 15 सेकंदांपेक्षा कमी टाइमआउट दोन keep-alive च्या मध्ये स्ट्रीम संपवू शकतो.
- तुमच्या SSE रीडरला कमेंट ओळी आणि
pingइव्हेंट्स वगळू द्या. SDK हे आधीच करतात. - कनेक्शन तुटताच रिक्वेस्ट पुन्हा पाठवू नका. API पर्यंत पोहोचलेली रिक्वेस्ट शेवटपर्यंत चालते आणि मोजली जाते, कनेक्शन गेले तरीही.
- आधी
GET /v1/modelsने मार्ग तपासा. त्याला की लागत नाही आणि ते लहान 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 | रिक्वेस्ट कीशिवाय आली. क्लिअर वेबवर वापरता तोच हेडर पाठवा. |
इतर प्रत्येक त्रुटी क्लिअर वेबवर जशी आहे तशीच आहे. त्रुटी हाताळणी
JavaScript शिवाय तुमची की
Shannon ची JavaScript शिवायची वेबसाइटही आहे, जी क्लिअर वेबवर, onion सेवा म्हणून आणि eepsite म्हणून पोहोचता येते. तिचे /keys पान तुमची API की दाखवते आणि बदलू देते, त्यामुळे Tor किंवा I2P सोडल्याशिवाय तुम्हाला की मिळवता येते. encrypted.shannon-ai.com/keys
त्या वेबसाइटचे तिन्ही नेटवर्क्सवरील पत्ते येथे दिले आहेत: एन्क्रिप्टेड अॅक्सेस