Titkosított, Tor és I2P végpontok
Az API Tor onion szolgáltatásként és I2P eepsite-ként is közzé van téve. Ugyanazok az útvonalak, ugyanaz a kulcs; csak az alap URL és a proxy változik.
Alap URL-ek
Négy cím vezet ugyanahhoz az API-hoz. Azt használd, amelyik a hálózatodhoz illik, ugyanazzal az API-kulccsal és ugyanazokkal a kérésekkel.
| Hálózat | Alap URL | Hogyan éred el |
|---|---|---|
| Nyílt web | https://api.shannon-ai.com/v1 | Közvetlenül, HTTPS-en. |
| Titkosított tükör | https://api-encrypted.shannon-ai.com/v1 | Közvetlenül, HTTPS-en. Ugyanazon API második hosztneve. |
| Tor (onion szolgáltatás) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Tor kliensen keresztül: SOCKS5 proxy, alapértelmezés szerint a 127.0.0.1:9050 címen. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | I2P routeren keresztül: HTTP proxy, alapértelmezés szerint a 127.0.0.1:4444 címen. |
- Az OpenAI SDK az alap URL-t úgy veszi, ahogy látod,
/v1résszel. Az Anthropic SDK/v1nélkül veszi. - Egy cím ellenőrzéséhez olvasd a
https://api.shannon-ai.comválaszfejléceit: azOnion-Locationaz onion címet, azX-I2P-Locationaz I2P címet hordozza. Az onion címshannonelőtaggal kezdődik.
Mely útvonalak működnek
Minden /v1 útvonal válaszol mind a négy címen:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
A GET /v1/models nem kér kulcsot, ezért gyors teszt arra, hogy a proxyd eléri az API-t.
Mi azonos és mi tér el
| Tétel | Azonos? | Részlet |
|---|---|---|
| Útvonalak, kérésmezők, válaszok, hibák | Azonos | Minden címen ugyanazok. Egyetlen útvonal sem viselkedik másként a hosztnév szerint. |
| API-kulcs | Azonos | Egy kulcs működik minden címen, Authorization: Bearer vagy x-api-key fejlécként. A /v1 útvonalon a sütiket soha nem olvassa. |
| Egyenleg és korlátok | Azonos | Ugyanaz az egyenleg és ugyanaz a percenkénti 120 kérés korlát. Mindkettő fiókonként számolódik, nem címenként. |
| A kérés mérete | Azonos | Kéréstörzsenként legfeljebb 32 MiB. |
| Séma | Eltér | A nyílt weben és a tükrön https://. A .onion és .b32.i2p címeken http://, ahol maga a hálózat titkosítja a kapcsolatot végponttól végpontig. |
| Proxy | Eltér | A nyílt weben nincs. Torhoz SOCKS5 proxy, I2P-hez HTTP proxy. A nevet a proxynak kell feloldania, nem a gépednek. |
| Sebesség | Eltér | Mindkét hálózat késleltetést ad minden bájthoz. Az I2P a lassabb a kettő közül. |
Az egyenleget és a korlátokat külön oldal írja le. Korlátok és egyenleg
cURL Toron keresztül
Futtass Tor klienst a gépeden. Ez SOCKS5 proxyt kínál a 127.0.0.1:9050 címen. A --socks5-hostname a .onion nevet ennek a proxynak adja át.
# 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 I2P-n keresztül
Futtass I2P routert a gépeden. Ez HTTP proxyt kínál a 127.0.0.1:4444 címen, amely a .b32.i2p nevet úgy veszi, ahogy van.
# 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 alap URL
Az SDK-hoz két változtatás kell: a hálózat alap URL-je, és egy HTTP-kliens, amely a proxyn megy át. Pythonban mindkét hivatalos SDK fogad httpx klienst. SOCKS proxyhoz telepítsd az httpx[socks] csomagot.
# 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 és keep-alive lassú kapcsolaton
A streaming mindkét hálózaton működik. Amíg a stream nyitva van, és a modellnek még nincs mit küldenie, az API keep-alive jelet küld, így a kapcsolat nem tűnik halottnak a proxynak vagy a kliensednek.
| Végpont | Keep-alive nyitott streamen | Ezeknek küldi |
|---|---|---|
/v1/chat/completions | Megjegyzéssor (: jellel kezdődik) 15 másodpercenként. | Minden modell |
/v1/messages | event: ping, vagy megjegyzéssor, 15 másodpercenként. | Minden modell |
/v1/responses | Megjegyzéssor 15 másodpercenként. | Hosztolt nyílt súlyú modellek |
- Küldj
"stream": trueértéket. A streamelt válasz azonnal érkezni kezd, amint a modell ír, a keep-alive pedig mutatja, hogy a kérésen még dolgoznak. A nem streamelt válasz semmit nem küld, amíg a teljes válasz el nem készül. - Adj a kliensnek hosszú olvasási timeoutot. A minták 600 másodpercet használnak. A 15 másodpercnél rövidebb timeout két keep-alive között megszakíthat egy streamet.
- Az SSE-olvasód ugorja át a megjegyzéssorokat és a
pingeseményeket. Az SDK-k ezt már megteszik. - Ne küldd újra a kérést abban a pillanatban, amikor megszakad a kapcsolat. Az API-hoz eljutott kérés a végéig lefut és számlázódik, akkor is, ha a kapcsolat megszűnt.
- Az utat először a
GET /v1/modelshívással próbáld ki. Nem kér kulcsot, és rövid JSON-listát ad.
Kapcsolati problémák
| Tünet | Ok és javítás |
|---|---|
A 127.0.0.1:9050 vagy 127.0.0.1:4444 felé a kapcsolatot elutasítják | A gépeden nem fut Tor kliens vagy I2P router, vagy más porton figyel. A Tor Browser a SOCKS proxyját a 9150-es porton kínálja. |
Could not resolve host a .onion névre | A kliens maga próbálta feloldani a nevet. Használd a cURL-ben a --socks5-hostname kapcsolót, a proxy URL-ben pedig a socks5h:// előtagot, hogy a Tor kliens oldja fel. |
| Az I2P proxy a saját hibaoldalával válaszol | A router még nem találta meg a címet. A routernek indulás után néhány perc kell. Próbáld újra. |
401 a Missing authentication üzenettel | A kérés kulcs nélkül érkezett. Ugyanazt a fejlécet küldd, mint a nyílt weben. |
Minden más hiba ugyanaz, mint a nyílt weben. Hibakezelés
A kulcsod JavaScript nélkül
A Shannonnak van JavaScript nélküli weboldala is, amely elérhető a nyílt weben, onion szolgáltatásként és eepsite-ként. A /keys oldala megmutatja az API-kulcsodat, és lehetővé teszi a cseréjét, így Tor vagy I2P elhagyása nélkül kaphatsz kulcsot. encrypted.shannon-ai.com/keys
Ennek a weboldalnak a címei mind a három hálózaton itt vannak felsorolva: Titkosított hozzáférés