Шифрлэгдсэн, Tor ба I2P endpoint-ууд
API нь Tor onion service ба I2P eepsite хэлбэрээр бас нийтлэгдсэн. Ижил замууд, ижил түлхүүр; зөвхөн үндсэн URL ба proxy солигдоно.
Үндсэн URL-ууд
Дөрвөн хаяг нэг API руу хөтөлнө. Сүлжээндээ тохирохыг нь, ижил API түлхүүр ба ижил хүсэлттэй ашиглана уу.
| Сүлжээ | Үндсэн URL | Хэрхэн хүрэх |
|---|---|---|
| Нээлттэй вэб | https://api.shannon-ai.com/v1 | Шууд, HTTPS-ээр. |
| Шифрлэгдсэн mirror | https://api-encrypted.shannon-ai.com/v1 | Шууд, HTTPS-ээр. Ижил API-ийн хоёр дахь хостын нэр. |
| Tor (onion service) | 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 үндсэн URL-ийг үзүүлснээр нь,
/v1-тэй авна. Anthropic SDK/v1-гүй авна. - Хаягийг шалгахын тулд
https://api.shannon-ai.com-ийн хариуны header-ийг уншина уу: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 түлхүүр шаардахгүй тул таны proxy API-д хүрч байгааг шалгах түргэн туршилт болно.
Юу адил, юу ялгаатай
| Зүйл | Адил уу? | Дэлгэрэнгүй |
|---|---|---|
| Замууд, хүсэлтийн талбар, хариу, алдаа | Адил | Хаяг бүр дээр адилхан. Ямар ч зам хостын нэрээр өөрөөр ажиллахгүй. |
| API түлхүүр | Адил | Нэг түлхүүр хаяг бүр дээр ажиллана, Authorization: Bearer эсвэл x-api-key хэлбэрээр. /v1 дээр cookie-г хэзээ ч уншдаггүй. |
| Үлдэгдэл ба хязгаар | Адил | Ижил үлдэгдэл, минутад 120 хүсэлтийн ижил хязгаар. Хоёулаа хаягаар бус бүртгэлээр тоологдоно. |
| Хүсэлтийн хэмжээ | Адил | Хүсэлтийн body 32 MiB хүртэл. |
| Протокол | Ялгаатай | Нээлттэй вэб ба 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-ийн үндсэн URL
SDK-д хоёр өөрчлөлт хэрэгтэй: сүлжээний үндсэн URL, мөн proxy-гоор дамждаг HTTP клиент. 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) Удаан холболт дээрх streaming ба keep-alive
Streaming хоёр сүлжээгээр ажиллана. Stream нээлттэй, загвар илгээх зүйлгүй байхад API keep-alive илгээдэг тул холболт proxy эсвэл таны клиентэд үхсэн мэт харагдахгүй.
| Endpoint | Нээлттэй stream дэх keep-alive | Илгээх хэнд |
|---|---|---|
/v1/chat/completions | 15 секунд тутам тайлбар мөр (:-оор эхэлнэ). | Бүх загвар |
/v1/messages | 15 секунд тутам event: ping эсвэл тайлбар мөр. | Бүх загвар |
/v1/responses | 15 секунд тутам тайлбар мөр. | Hosted open-weight загварууд |
"stream": trueилгээнэ үү. Stream хариу загвар бичих даруйд ирж эхэлдэг бөгөөд keep-alive нь хүсэлт ажиллагаатай хэвээр байгааг харуулна. Stream хийгээгүй хариу бүх хариулт бэлэн болтол юу ч илгээхгүй.- Клиентэд урт read timeout өгнө үү. Жишээнүүд 600 секунд ашигладаг. 15 секундээс богино timeout нь хоёр keep-alive-ийн хооронд stream-ийг таслаж болно.
- SSE уншигчаараа тайлбар мөр ба
pingevent-үүдийг алгасуулна уу. SDK-ууд үүнийг аль хэдийн хийдэг. - Холболт тасрах даруйд хүсэлтийг дахин бүү илгээнэ үү. API-д хүрсэн хүсэлт төгсгөл хүртэл ажиллаж тоологдох бөгөөд холболт тасарсан ч мөн ингэнэ.
- Замаа эхлээд
GET /v1/models-ээр турших. Түлхүүр шаардахгүй бөгөөд богино JSON жагсаалт буцаана.
Холболтын асуудал
| Шинж тэмдэг | Шалтгаан ба засвар |
|---|---|
127.0.0.1:9050 эсвэл 127.0.0.1:4444 руу холболт татгалзагдсан | Таны машин дээр Tor клиент эсвэл I2P router ажиллахгүй байна, эсвэл өөр порт дээр сонсож байна. Tor Browser SOCKS proxy-гоо 9150 порт дээр санал болгодог. |
.onion нэрэнд Could not resolve host | Клиент нэрийг өөрөө тайлахыг оролдсон. Tor клиент тайлахын тулд cURL дээр --socks5-hostname, proxy URL дотор socks5h:// ашиглана уу. |
| I2P proxy өөрийн алдааны хуудсаар хариулна | Router хаягийг хараахан олоогүй. Router эхэлсний дараа хэдэн минут шаардана. Дахин оролдоно уу. |
401 ба Missing authentication | Хүсэлт түлхүүргүй ирсэн. Нээлттэй вэб дээрх header-ийг адилхан илгээнэ үү. |
Бусад бүх алдаа нээлттэй вэб дээрхтэй адил. Алдаа боловсруулах
JavaScript-гүйгээр таны түлхүүр
Shannon-д JavaScript-гүй вэбсайт бас байдаг бөгөөд нээлттэй вэб, onion service, eepsite хэлбэрээр хүрч болно. Түүний /keys хуудас таны API түлхүүрийг харуулж, шинэчлэх боломж олгодог тул Tor эсвэл I2P-ээс гаралгүйгээр түлхүүр авч болно. encrypted.shannon-ai.com/keys
Тэр вэбсайтын гурван сүлжээн дэх хаягийг энд жагсаасан: Шифрлэгдсэн хандалт