Endpoints ikkriptati, Tor & I2P
L-API hija ppubblikata wkoll bħala servizz onion ta' Tor u eepsite ta' I2P. L-istess routes, l-istess ċavetta; jinbidlu biss il-base URL u l-proxy.
Base URLs
Erba' indirizzi jwasslu għall-istess API. Uża dak li jaqbel man-netwerk tiegħek, bl-istess ċavetta tal-API u bl-istess talbiet.
| Netwerk | Base URL | Kif tilħaqha |
|---|---|---|
| Web ċara | https://api.shannon-ai.com/v1 | Direttament, fuq HTTPS. |
| Mirror ikkriptat | https://api-encrypted.shannon-ai.com/v1 | Direttament, fuq HTTPS. It-tieni isem ta' host għall-istess API. |
| Tor (servizz onion) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Permezz ta' klijent Tor: proxy SOCKS5, b'default fuq 127.0.0.1:9050. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | Permezz ta' router I2P: proxy HTTP, b'default fuq 127.0.0.1:4444. |
- SDK ta' OpenAI jieħu l-base URL kif murija, b'
/v1. SDK ta' Anthropic jieħodha mingħajr/v1. - Biex tivverifika indirizz, aqra l-headers tat-tweġiba ta'
https://api.shannon-ai.com:Onion-Locationiġorr l-indirizz onion uX-I2P-Locationl-indirizz I2P. L-indirizz onion jibda b'shannon.
Liema routes jaħdmu
Kull route ta' /v1 iwieġeb fuq l-erba' indirizzi kollha:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models ma jeħtieġ l-ebda ċavetta, u dan jagħmlu test mgħaġġel li l-proxy tiegħek jilħaq l-API.
X'inhu l-istess u x'inhu differenti
| Punt | L-istess? | Dettal |
|---|---|---|
| Routes, kampi tat-talba, tweġibiet, żbalji | L-istess | L-istess fuq kull indirizz. L-ebda route ma jġib ruħu b'mod differenti skont l-isem tal-host. |
| Ċavetta tal-API | L-istess | Ċavetta waħda taħdem fuq kull indirizz, bħala Authorization: Bearer jew x-api-key. Il-cookies qatt ma jinqraw fuq /v1. |
| Bilanċ u limiti | L-istess | L-istess bilanċ u l-istess limitu ta' 120 talba kull minuta. It-tnejn jingħaddu għal kull kont, mhux għal kull indirizz. |
| Daqs tat-talba | L-istess | Sa 32 MiB għal kull body ta' talba. |
| Skema | Differenti | https:// fuq il-web ċara u fuq il-mirror. http:// fuq l-indirizzi .onion u .b32.i2p, fejn in-netwerk innifsu jikkripta l-konnessjoni minn tarf sa tarf. |
| Proxy | Differenti | L-ebda wieħed fuq il-web ċara. Proxy SOCKS5 għal Tor, proxy HTTP għal I2P. L-isem irid jiġi riżolt mill-proxy, mhux mill-magna tiegħek. |
| Veloċità | Differenti | Iż-żewġ netwerks iżidu dewmien ma' kull byte. I2P huwa l-iktar bil-mod miż-żewġ netwerks. |
Il-bilanċ u l-limiti huma deskritti fil-paġna tagħhom. Limiti u bilanċ
cURL permezz ta' Tor
Ħaddem klijent Tor fuq il-magna tiegħek. Joffri proxy SOCKS5 fuq 127.0.0.1:9050. --socks5-hostname jgħaddi l-isem .onion lil dak il-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"}]
}' cURL permezz ta' I2P
Ħaddem router I2P fuq il-magna tiegħek. Joffri proxy HTTP fuq 127.0.0.1:4444, li jieħu l-isem .b32.i2p kif inhu.
# 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"}]
}' Base URL tal-SDK
SDK jeħtieġ żewġ tibdiliet: il-base URL tan-netwerk, u klijent HTTP li jgħaddi mill-proxy. Fi Python iż-żewġ SDKs uffiċjali jieħdu klijent httpx. Għal proxy SOCKS installa 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) Streaming u keep-alive fuq links bil-mod
L-istreaming jaħdem fuq iż-żewġ netwerks. Waqt li stream ikun miftuħ u l-mudell għad m'għandu xejn x'jibgħat, l-API tibgħat keep-alive, biex il-konnessjoni ma tidhirx mejta għal proxy jew għall-klijent tiegħek.
| Endpoint | Keep-alive fuq stream miftuħ | Mibgħut għal |
|---|---|---|
/v1/chat/completions | Linja ta' kummentarju (tibda b':) kull 15-il sekonda. | Il-mudelli kollha |
/v1/messages | event: ping, jew linja ta' kummentarju, kull 15-il sekonda. | Il-mudelli kollha |
/v1/responses | Linja ta' kummentarju kull 15-il sekonda. | Mudelli open-weight ospitati |
- Ibgħat
"stream": true. Tweġiba fi stream tibda tasal hekk kif jikteb il-mudell, u l-keep-alive juri li t-talba għadha qed tinħadem. Tweġiba mhux fi stream ma tibgħat xejn sakemm it-tweġiba kollha tkun lesta. - Agħti lill-klijent read timeout twil. L-eżempji jużaw 600 sekonda. Timeout iqsar minn 15-il sekonda jista' jtemm stream bejn żewġ keep-alives.
- Ħalli lill-qarrej SSE tiegħek jaqbeż il-linji ta' kummentarju u l-avvenimenti
ping. L-SDKs diġà jagħmlu dan. - Terġax tibgħat talba hekk kif tinqata' konnessjoni. Talba li waslet sal-API taħdem sa tmiemha u tingħadd, anke meta l-konnessjoni tkun spiċċat.
- Ittestja l-path b'
GET /v1/modelsl-ewwel. Ma jeħtieġ l-ebda ċavetta u jagħti lura lista JSON qasira.
Problemi ta' konnessjoni
| Sintomu | Kawża u soluzzjoni |
|---|---|
Il-konnessjoni ma' 127.0.0.1:9050 jew 127.0.0.1:4444 tiġi rifjutata | L-ebda klijent Tor jew router I2P ma jaħdem fuq il-magna tiegħek, jew jisma' fuq port ieħor. Tor Browser joffri l-proxy SOCKS tiegħu fuq il-port 9150. |
Could not resolve host għall-isem .onion | Il-klijent ipprova jirriżolvi l-isem waħdu. Uża --socks5-hostname f'cURL u socks5h:// f'URL ta' proxy, biex il-klijent Tor jirriżolvih. |
| Il-proxy I2P iwieġeb bil-paġna tal-iżball tiegħu stess | Ir-router għadu ma sabx l-indirizz. Router jeħtieġ ftit minuti wara li jibda. Erġa' pprova. |
401 b'Missing authentication | It-talba waslet mingħajr ċavetta. Ibgħat l-istess header bħal fuq il-web ċara. |
Kull żball ieħor huwa l-istess bħal fuq il-web ċara. Ġestjoni tal-iżbalji
Iċ-ċavetta tiegħek mingħajr JavaScript
Shannon għandha wkoll sit mingħajr JavaScript, li jintlaħaq fuq il-web ċara, bħala servizz onion u bħala eepsite. Il-paġna /keys tiegħu turi ċ-ċavetta tal-API tiegħek u tħallik tibdilha, biex tkun tista' tikseb ċavetta mingħajr ma titlaq minn Tor jew I2P. encrypted.shannon-ai.com/keys
L-indirizzi ta' dak is-sit fit-tliet netwerks kollha huma elenkati hawn: Aċċess ikkriptat