Mga encrypted, Tor at I2P endpoint
Inilalathala rin ang API bilang Tor onion service at I2P eepsite. Parehong mga route, parehong key; ang base URL at ang proxy lang ang nagbabago.
Mga base URL
Apat na address ang patungo sa iisang API. Gamitin ang angkop sa iyong network, na may parehong API key at parehong mga request.
| Network | Base URL | Paano ito maaabot |
|---|---|---|
| Clear web | https://api.shannon-ai.com/v1 | Direkta, sa HTTPS. |
| Encrypted na mirror | https://api-encrypted.shannon-ai.com/v1 | Direkta, sa HTTPS. Pangalawang host name para sa parehong API. |
| Tor (onion service) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Sa pamamagitan ng Tor client: isang SOCKS5 proxy, by default sa 127.0.0.1:9050. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | Sa pamamagitan ng I2P router: isang HTTP proxy, by default sa 127.0.0.1:4444. |
- Tinatanggap ng OpenAI SDK ang base URL ayon sa ipinapakita, na may
/v1. Tinatanggap ito ng Anthropic SDK nang walang/v1. - Para suriin ang isang address, basahin ang mga reply header ng
https://api.shannon-ai.com: dala ngOnion-Locationang onion address at ngX-I2P-Locationang I2P address. Nagsisimula sashannonang onion address.
Aling mga route ang gumagana
Sumasagot ang bawat /v1 route sa lahat ng apat na address:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
Walang key na kailangan ang GET /v1/models, kaya mabilis itong pagsubok na naaabot ng iyong proxy ang API.
Ano ang pareho at ano ang magkaiba
| Item | Pareho? | Detalye |
|---|---|---|
| Mga route, request field, reply, error | Pareho | Pareho sa bawat address. Walang route na iba ang gawi ayon sa host name. |
| API key | Pareho | Isang key ang gumagana sa bawat address, bilang Authorization: Bearer o x-api-key. Hindi kailanman binabasa ang cookies sa /v1. |
| Balance at mga limitasyon | Pareho | Parehong balance at parehong limitasyong 120 request kada minuto. Parehong binibilang kada account, hindi kada address. |
| Laki ng request | Pareho | Hanggang 32 MiB kada request body. |
| Scheme | Magkaiba | https:// sa clear web at sa mirror. http:// sa mga address na .onion at .b32.i2p, kung saan mismong ang network ang nag-e-encrypt ng koneksyon mula dulo hanggang dulo. |
| Proxy | Magkaiba | Wala sa clear web. SOCKS5 proxy para sa Tor, HTTP proxy para sa I2P. Dapat i-resolve ng proxy ang pangalan, hindi ng iyong makina. |
| Bilis | Magkaiba | Parehong nagdaragdag ng delay sa bawat byte ang dalawang network. Ang I2P ang mas mabagal sa dalawa. |
Inilalarawan sa sarili nilang pahina ang balance at mga limitasyon. Mga limitasyon at balance
cURL sa pamamagitan ng Tor
Magpatakbo ng Tor client sa iyong makina. Nag-aalok ito ng SOCKS5 proxy sa 127.0.0.1:9050. Ibinibigay ng --socks5-hostname ang pangalang .onion sa proxy na iyon.
# 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 sa pamamagitan ng I2P
Magpatakbo ng I2P router sa iyong makina. Nag-aalok ito ng HTTP proxy sa 127.0.0.1:4444, na tumatanggap ng pangalang .b32.i2p ayon sa kung ano ito.
# 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 ng SDK
Dalawang pagbabago ang kailangan ng SDK: ang base URL ng network, at isang HTTP client na dumadaan sa proxy. Sa Python, parehong tumatanggap ang dalawang opisyal na SDK ng httpx client. Para sa SOCKS proxy, i-install ang 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 at keep-alive sa mabagal na link
Gumagana ang streaming sa parehong network. Habang bukas ang stream at wala pang maipadala ang model, nagpapadala ang API ng keep-alive, para hindi magmukhang patay ang koneksyon sa proxy o sa iyong client.
| Endpoint | Keep-alive sa bukas na stream | Ipinapadala para sa |
|---|---|---|
/v1/chat/completions | Isang comment line (nagsisimula sa :) tuwing 15 segundo. | Lahat ng model |
/v1/messages | Isang event: ping, o comment line, tuwing 15 segundo. | Lahat ng model |
/v1/responses | Isang comment line tuwing 15 segundo. | Mga hosted open-weight model |
- Magpadala ng
"stream": true. Ang naka-stream na reply ay nagsisimulang dumating sa sandaling magsulat ang model, at ipinapakita ng keep-alive na pinoproseso pa ang request. Ang reply na hindi naka-stream ay walang ipinapadala hanggang handa na ang buong sagot. - Bigyan ang client ng mahabang read timeout. Gumagamit ng 600 segundo ang mga sample. Ang timeout na mas maikli sa 15 segundo ay maaaring magtapos ng stream sa pagitan ng dalawang keep-alive.
- Hayaang laktawan ng iyong SSE reader ang mga comment line at
pingevent. Ginagawa na ito ng mga SDK. - Huwag ipadala muli ang request sa sandaling maputol ang koneksyon. Ang request na nakarating sa API ay tumatakbo hanggang dulo at binibilang, kahit wala na ang koneksyon.
- Subukan muna ang path gamit ang
GET /v1/models. Walang key na kailangan at nagbabalik ito ng maikling listahang JSON.
Mga problema sa koneksyon
| Sintomas | Sanhi at ayos |
|---|---|
Tinanggihan ang koneksyon sa 127.0.0.1:9050 o 127.0.0.1:4444 | Walang Tor client o I2P router na tumatakbo sa iyong makina, o nakikinig ito sa ibang port. Nag-aalok ang Tor Browser ng SOCKS proxy nito sa port 9150. |
Could not resolve host para sa pangalang .onion | Sinubukan ng client na i-resolve mismo ang pangalan. Gamitin ang --socks5-hostname sa cURL at socks5h:// sa proxy URL, para ang Tor client ang mag-resolve nito. |
| Sumasagot ang I2P proxy ng sarili nitong error page | Hindi pa nakikita ng router ang address. Kailangan ng router ng ilang minuto pagkatapos itong magsimula. Subukan muli. |
401 na may Missing authentication | Dumating ang request na walang key. Ipadala ang parehong header tulad sa clear web. |
Pareho ng sa clear web ang bawat ibang error. Paghawak ng Error
Ang iyong key nang walang JavaScript
May website din ang Shannon na walang JavaScript, na maaabot sa clear web, bilang onion service at bilang eepsite. Ipinapakita ng pahinang /keys nito ang iyong API key at pinapayagan kang i-rotate ito, kaya makakakuha ka ng key nang hindi umaalis sa Tor o I2P. encrypted.shannon-ai.com/keys
Nakalista rito ang mga address ng website na iyon sa lahat ng tatlong network: Encrypted na access