انکرپٹڈ، Tor اور I2P اینڈ پوائنٹس
API Tor onion سروس اور I2P eepsite کے طور پر بھی شائع ہے۔ وہی روٹس، وہی کلید؛ صرف بیس URL اور پراکسی بدلتے ہیں۔
بیس URLs
چار ایڈریس ایک ہی 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 میں دونوں سرکاری SDKs 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 سیکنڈ میں ایک کمنٹ لائن۔ | ہوسٹڈ اوپن ویٹ ماڈلز |
"stream": trueبھیجیں۔ سٹریم کیا گیا جواب ماڈل کے لکھتے ہی آنا شروع ہو جاتا ہے، اور keep-alive ظاہر کرتا ہے کہ درخواست پر ابھی کام ہو رہا ہے۔ غیر سٹریم جواب پورا جواب تیار ہونے تک کچھ نہیں بھیجتا۔- کلائنٹ کو لمبا read timeout دیں۔ نمونوں میں 600 سیکنڈ استعمال ہوئے ہیں۔ 15 سیکنڈ سے کم کا ٹائم آؤٹ دو keep-alives کے درمیان سٹریم ختم کر سکتا ہے۔
- اپنے SSE ریڈر کو کمنٹ لائنیں اور
pingایونٹس چھوڑنے دیں۔ SDKs یہ پہلے ہی کرتے ہیں۔ - کنکشن ٹوٹتے ہی درخواست دوبارہ نہ بھیجیں۔ جو درخواست 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
اس ویب سائٹ کے تینوں نیٹ ورکس پر ایڈریس یہاں درج ہیں: انکرپٹڈ رسائی