ਐਨਕ੍ਰਿਪਟਡ, Tor ਅਤੇ I2P endpoints
API ਨੂੰ Tor onion ਸੇਵਾ ਅਤੇ I2P eepsite ਵਜੋਂ ਵੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਉਹੀ routes, ਉਹੀ key; ਸਿਰਫ਼ base URL ਅਤੇ proxy ਬਦਲਦੇ ਹਨ।
Base URLs
ਚਾਰ ਪਤੇ ਇੱਕੋ API ਤੱਕ ਲੈ ਜਾਂਦੇ ਹਨ। ਉਹ ਵਰਤੋ ਜੋ ਤੁਹਾਡੇ ਨੈੱਟਵਰਕ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੋਵੇ, ਉਹੀ API key ਅਤੇ ਉਹੀ ਰਿਕੁਐਸਟਾਂ ਨਾਲ।
| ਨੈੱਟਵਰਕ | Base URL | ਇਸ ਤੱਕ ਕਿਵੇਂ ਪਹੁੰਚਣਾ ਹੈ |
|---|---|---|
| ਸਾਧਾਰਨ ਵੈੱਬ | https://api.shannon-ai.com/v1 | ਸਿੱਧਾ, HTTPS ਰਾਹੀਂ। |
| ਐਨਕ੍ਰਿਪਟਡ mirror | https://api-encrypted.shannon-ai.com/v1 | ਸਿੱਧਾ, HTTPS ਰਾਹੀਂ। ਇਸੇ API ਲਈ ਦੂਜਾ host ਨਾਮ। |
| Tor (onion ਸੇਵਾ) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Tor ਕਲਾਇੰਟ ਰਾਹੀਂ: ਇੱਕ SOCKS5 proxy, ਮੂਲ ਰੂਪ ਵਿੱਚ 127.0.0.1:9050 ਉੱਤੇ। |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | I2P router ਰਾਹੀਂ: ਇੱਕ HTTP proxy, ਮੂਲ ਰੂਪ ਵਿੱਚ 127.0.0.1:4444 ਉੱਤੇ। |
- OpenAI SDK base URL ਨੂੰ
/v1ਸਮੇਤ, ਜਿਵੇਂ ਦਿਖਾਇਆ ਹੈ ਉਵੇਂ ਲੈਂਦਾ ਹੈ। Anthropic SDK ਇਸਨੂੰ/v1ਤੋਂ ਬਿਨਾਂ ਲੈਂਦਾ ਹੈ। - ਪਤੇ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ
https://api.shannon-ai.comਦੇ ਜਵਾਬ headers ਪੜ੍ਹੋ:Onion-Locationਵਿੱਚ onion ਪਤਾ ਹੁੰਦਾ ਹੈ ਅਤੇX-I2P-Locationਵਿੱਚ I2P ਪਤਾ। onion ਪਤਾshannonਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ।
ਕਿਹੜੇ routes ਕੰਮ ਕਰਦੇ ਹਨ
ਹਰ /v1 route ਚਾਰੇ ਪਤਿਆਂ ਉੱਤੇ ਜਵਾਬ ਦਿੰਦਾ ਹੈ:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models ਨੂੰ key ਦੀ ਲੋੜ ਨਹੀਂ, ਇਸ ਲਈ ਇਹ ਇਹ ਪਰਖਣ ਦਾ ਤੇਜ਼ ਤਰੀਕਾ ਹੈ ਕਿ ਤੁਹਾਡਾ proxy API ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ।
ਕੀ ਇੱਕੋ ਜਿਹਾ ਹੈ ਅਤੇ ਕੀ ਵੱਖਰਾ
| ਮੱਦ | ਇੱਕੋ ਜਿਹਾ? | ਵੇਰਵਾ |
|---|---|---|
| Routes, ਰਿਕੁਐਸਟ ਫੀਲਡ, ਜਵਾਬ, ਗਲਤੀਆਂ | ਇੱਕੋ ਜਿਹਾ | ਹਰ ਪਤੇ ਉੱਤੇ ਇੱਕੋ ਜਿਹੇ। ਕੋਈ route host ਨਾਮ ਅਨੁਸਾਰ ਵੱਖਰਾ ਵਿਹਾਰ ਨਹੀਂ ਕਰਦਾ। |
| API key | ਇੱਕੋ ਜਿਹਾ | ਇੱਕ key ਹਰ ਪਤੇ ਉੱਤੇ ਕੰਮ ਕਰਦੀ ਹੈ, Authorization: Bearer ਜਾਂ x-api-key ਵਜੋਂ। /v1 ਉੱਤੇ ਕੁਕੀਜ਼ ਕਦੇ ਨਹੀਂ ਪੜ੍ਹੀਆਂ ਜਾਂਦੀਆਂ। |
| ਬੈਲੇਂਸ ਅਤੇ ਸੀਮਾਵਾਂ | ਇੱਕੋ ਜਿਹਾ | ਉਹੀ ਬੈਲੇਂਸ ਅਤੇ ਪ੍ਰਤੀ ਮਿੰਟ 120 ਰਿਕੁਐਸਟਾਂ ਦੀ ਉਹੀ ਸੀਮਾ। ਦੋਵੇਂ ਹਰ ਖਾਤੇ ਦੇ ਹਿਸਾਬ ਨਾਲ ਗਿਣੇ ਜਾਂਦੇ ਹਨ, ਹਰ ਪਤੇ ਦੇ ਹਿਸਾਬ ਨਾਲ ਨਹੀਂ। |
| ਰਿਕੁਐਸਟ ਦਾ ਆਕਾਰ | ਇੱਕੋ ਜਿਹਾ | ਹਰ ਰਿਕੁਐਸਟ ਬਾਡੀ 32 MiB ਤੱਕ। |
| Scheme | ਵੱਖਰਾ | ਸਾਧਾਰਨ ਵੈੱਬ ਅਤੇ mirror ਉੱਤੇ https://। .onion ਅਤੇ .b32.i2p ਪਤਿਆਂ ਉੱਤੇ http://, ਜਿੱਥੇ ਨੈੱਟਵਰਕ ਆਪ ਕਨੈਕਸ਼ਨ ਨੂੰ ਸਿਰੇ ਤੋਂ ਸਿਰੇ ਤੱਕ ਐਨਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ। |
| Proxy | ਵੱਖਰਾ | ਸਾਧਾਰਨ ਵੈੱਬ ਉੱਤੇ ਕੋਈ ਨਹੀਂ। Tor ਲਈ SOCKS5 proxy, I2P ਲਈ HTTP proxy। ਨਾਮ ਨੂੰ proxy ਹੱਲ ਕਰੇ, ਤੁਹਾਡੀ ਮਸ਼ੀਨ ਨਹੀਂ। |
| ਗਤੀ | ਵੱਖਰਾ | ਦੋਵੇਂ ਨੈੱਟਵਰਕ ਹਰ ਬਾਈਟ ਵਿੱਚ ਦੇਰੀ ਜੋੜਦੇ ਹਨ। I2P ਦੋਵਾਂ ਵਿੱਚੋਂ ਹੌਲੀ ਹੈ। |
ਬੈਲੇਂਸ ਅਤੇ ਸੀਮਾਵਾਂ ਦਾ ਵੇਰਵਾ ਉਨ੍ਹਾਂ ਦੇ ਆਪਣੇ ਪੰਨੇ ਉੱਤੇ ਹੈ। ਸੀਮਾਵਾਂ ਅਤੇ ਬੈਲੇਂਸ
Tor ਰਾਹੀਂ cURL
ਆਪਣੀ ਮਸ਼ੀਨ ਉੱਤੇ Tor ਕਲਾਇੰਟ ਚਲਾਓ। ਇਹ 127.0.0.1:9050 ਉੱਤੇ SOCKS5 proxy ਦਿੰਦਾ ਹੈ। --socks5-hostname .onion ਨਾਮ ਨੂੰ ਉਸ proxy ਦੇ ਹਵਾਲੇ ਕਰਦਾ ਹੈ।
# 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 router ਚਲਾਓ। ਇਹ 127.0.0.1:4444 ਉੱਤੇ HTTP proxy ਦਿੰਦਾ ਹੈ, ਜੋ .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 base URL
SDK ਨੂੰ ਦੋ ਬਦਲਾਅ ਚਾਹੀਦੇ ਹਨ: ਨੈੱਟਵਰਕ ਦਾ base URL, ਅਤੇ ਇੱਕ HTTP ਕਲਾਇੰਟ ਜੋ proxy ਰਾਹੀਂ ਜਾਵੇ। Python ਵਿੱਚ ਦੋਵੇਂ ਅਧਿਕਾਰਤ SDK httpx ਕਲਾਇੰਟ ਲੈਂਦੇ ਹਨ। SOCKS proxy ਲਈ 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 ਭੇਜਦਾ ਹੈ, ਤਾਂ ਜੋ ਕਨੈਕਸ਼ਨ proxy ਜਾਂ ਤੁਹਾਡੇ ਕਲਾਇੰਟ ਨੂੰ ਮਰਿਆ ਹੋਇਆ ਨਾ ਲੱਗੇ।
| ਐਂਡਪੁਆਇੰਟ | ਖੁੱਲ੍ਹੀ ਸਟ੍ਰੀਮ ਉੱਤੇ Keep-alive | ਕਿਨ੍ਹਾਂ ਲਈ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ |
|---|---|---|
/v1/chat/completions | ਹਰ 15 ਸਕਿੰਟ ਬਾਅਦ ਇੱਕ ਕੁਮੈਂਟ ਲਾਈਨ (ਇਹ : ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ)। | ਸਾਰੇ ਮਾਡਲ |
/v1/messages | ਹਰ 15 ਸਕਿੰਟ ਬਾਅਦ ਇੱਕ event: ping, ਜਾਂ ਇੱਕ ਕੁਮੈਂਟ ਲਾਈਨ। | ਸਾਰੇ ਮਾਡਲ |
/v1/responses | ਹਰ 15 ਸਕਿੰਟ ਬਾਅਦ ਇੱਕ ਕੁਮੈਂਟ ਲਾਈਨ। | ਹੋਸਟ ਕੀਤੇ open-weight ਮਾਡਲ |
"stream": trueਭੇਜੋ। ਸਟ੍ਰੀਮ ਹੋਇਆ ਜਵਾਬ ਮਾਡਲ ਦੇ ਲਿਖਦੇ ਹੀ ਆਉਣਾ ਸ਼ੁਰੂ ਹੋ ਜਾਂਦਾ ਹੈ, ਅਤੇ keep-alive ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਰਿਕੁਐਸਟ ਉੱਤੇ ਅਜੇ ਕੰਮ ਹੋ ਰਿਹਾ ਹੈ। ਬਿਨਾਂ ਸਟ੍ਰੀਮ ਵਾਲਾ ਜਵਾਬ ਪੂਰਾ ਜਵਾਬ ਤਿਆਰ ਹੋਣ ਤੱਕ ਕੁਝ ਨਹੀਂ ਭੇਜਦਾ।- ਕਲਾਇੰਟ ਨੂੰ ਲੰਬਾ read timeout ਦਿਓ। ਨਮੂਨੇ 600 ਸਕਿੰਟ ਵਰਤਦੇ ਹਨ। 15 ਸਕਿੰਟ ਤੋਂ ਛੋਟਾ timeout ਦੋ keep-alive ਵਿਚਕਾਰ ਸਟ੍ਰੀਮ ਨੂੰ ਖਤਮ ਕਰ ਸਕਦਾ ਹੈ।
- ਆਪਣੇ SSE ਰੀਡਰ ਨੂੰ ਕੁਮੈਂਟ ਲਾਈਨਾਂ ਅਤੇ
pingਇਵੈਂਟ ਛੱਡਣ ਦਿਓ। SDK ਇਹ ਪਹਿਲਾਂ ਹੀ ਕਰਦੇ ਹਨ। - ਕਨੈਕਸ਼ਨ ਟੁੱਟਦੇ ਹੀ ਰਿਕੁਐਸਟ ਦੁਬਾਰਾ ਨਾ ਭੇਜੋ। ਜੋ ਰਿਕੁਐਸਟ API ਤੱਕ ਪਹੁੰਚ ਗਈ, ਉਹ ਅੰਤ ਤੱਕ ਚੱਲਦੀ ਹੈ ਅਤੇ ਗਿਣੀ ਜਾਂਦੀ ਹੈ, ਕਨੈਕਸ਼ਨ ਚਲੇ ਜਾਣ ਉੱਤੇ ਵੀ।
- ਪਹਿਲਾਂ ਰਸਤੇ ਨੂੰ
GET /v1/modelsਨਾਲ ਪਰਖੋ। ਇਸਨੂੰ key ਦੀ ਲੋੜ ਨਹੀਂ ਅਤੇ ਇਹ ਛੋਟੀ JSON ਸੂਚੀ ਵਾਪਸ ਕਰਦਾ ਹੈ।
ਕਨੈਕਸ਼ਨ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ
| ਲੱਛਣ | ਕਾਰਨ ਅਤੇ ਹੱਲ |
|---|---|
127.0.0.1:9050 ਜਾਂ 127.0.0.1:4444 ਨਾਲ ਕਨੈਕਸ਼ਨ ਰੱਦ ਕੀਤਾ ਜਾਂਦਾ ਹੈ | ਤੁਹਾਡੀ ਮਸ਼ੀਨ ਉੱਤੇ ਕੋਈ Tor ਕਲਾਇੰਟ ਜਾਂ I2P router ਨਹੀਂ ਚੱਲ ਰਿਹਾ, ਜਾਂ ਉਹ ਕਿਸੇ ਹੋਰ port ਉੱਤੇ ਸੁਣਦਾ ਹੈ। Tor Browser ਆਪਣਾ SOCKS proxy port 9150 ਉੱਤੇ ਦਿੰਦਾ ਹੈ। |
.onion ਨਾਮ ਲਈ Could not resolve host | ਕਲਾਇੰਟ ਨੇ ਨਾਮ ਆਪ ਹੱਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। cURL ਵਿੱਚ --socks5-hostname ਅਤੇ proxy URL ਵਿੱਚ socks5h:// ਵਰਤੋ, ਤਾਂ ਜੋ Tor ਕਲਾਇੰਟ ਇਸਨੂੰ ਹੱਲ ਕਰੇ। |
| I2P proxy ਆਪਣੇ ਗਲਤੀ ਪੰਨੇ ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ | router ਨੂੰ ਪਤਾ ਅਜੇ ਨਹੀਂ ਮਿਲਿਆ। ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਬਾਅਦ router ਨੂੰ ਕੁਝ ਮਿੰਟ ਚਾਹੀਦੇ ਹਨ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। |
401 ਅਤੇ Missing authentication | ਰਿਕੁਐਸਟ ਬਿਨਾਂ key ਦੇ ਪਹੁੰਚੀ। ਉਹੀ header ਭੇਜੋ ਜੋ ਸਾਧਾਰਨ ਵੈੱਬ ਉੱਤੇ ਭੇਜਦੇ ਹੋ। |
ਹਰ ਹੋਰ ਗਲਤੀ ਸਾਧਾਰਨ ਵੈੱਬ ਵਾਂਗ ਹੀ ਹੈ। ਗਲਤੀਆਂ
JavaScript ਤੋਂ ਬਿਨਾਂ ਤੁਹਾਡੀ key
Shannon ਦੀ JavaScript ਤੋਂ ਬਿਨਾਂ ਵੈੱਬਸਾਈਟ ਵੀ ਹੈ, ਜੋ ਸਾਧਾਰਨ ਵੈੱਬ ਉੱਤੇ, onion ਸੇਵਾ ਵਜੋਂ ਅਤੇ eepsite ਵਜੋਂ ਪਹੁੰਚਯੋਗ ਹੈ। ਇਸਦਾ /keys ਪੰਨਾ ਤੁਹਾਡੀ API key ਦਿਖਾਉਂਦਾ ਹੈ ਅਤੇ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਬਦਲਣ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ ਤੁਸੀਂ Tor ਜਾਂ I2P ਛੱਡੇ ਬਿਨਾਂ key ਲੈ ਸਕਦੇ ਹੋ। encrypted.shannon-ai.com/keys
ਉਸ ਵੈੱਬਸਾਈਟ ਦੇ ਤਿੰਨਾਂ ਨੈੱਟਵਰਕਾਂ ਉੱਤੇ ਪਤੇ ਇੱਥੇ ਦਿੱਤੇ ਹਨ: ਐਨਕ੍ਰਿਪਟਡ ਪਹੁੰਚ