Шифрланған, Tor және I2P endpoint-тері
API сондай-ақ Tor onion қызметі және I2P eepsite ретінде жарияланған. Жолдар бірдей, кілт бірдей; тек base URL және прокси өзгереді.
Base URL-дер
Төрт мекенжай бір API-ге апарады. Желіңізге сай келетінін қолданыңыз, API кілті және сұраулар бірдей.
| Желі | Base URL | Оған қалай жетесіз |
|---|---|---|
| Ашық желі | https://api.shannon-ai.com/v1 | Тікелей, HTTPS арқылы. |
| Шифрланған айна | https://api-encrypted.shannon-ai.com/v1 | Тікелей, HTTPS арқылы. Сол API-дің екінші хост атауы. |
| Tor (onion қызметі) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Tor клиенті арқылы: SOCKS5 прокси, әдепкі бойынша 127.0.0.1:9050 мекенжайында. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | I2P роутері арқылы: HTTP прокси, әдепкі бойынша 127.0.0.1:4444 мекенжайында. |
- OpenAI SDK base URL-ді көрсетілгендей,
/v1қосып алады. Anthropic SDK оны/v1жоқ алады. - Мекенжайды тексеру үшін
https://api.shannon-ai.comжауап тақырыптарын оқыңыз:Onion-Locationonion мекенжайын,X-I2P-LocationI2P мекенжайын алып жүреді. Onion мекенжайыshannonдеп басталады.
Қай жолдар жұмыс істейді
Әр /v1 жолы барлық төрт мекенжайда жауап береді:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models кілтті қажет етпейді, сондықтан прокси API-ге жететінін жылдам тексеру болады.
Не бірдей, не өзгеше
| Элемент | Бірдей ме? | Мәлімет |
|---|---|---|
| Жолдар, сұрау өрістері, жауаптар, қателер | Бірдей | Әр мекенжайда бірдей. Ешбір жол хост атауына қарай басқаша жұмыс істемейді. |
| API кілті | Бірдей | Бір кілт әр мекенжайда жұмыс істейді, Authorization: Bearer немесе x-api-key ретінде. Cookie-лер /v1 бойынша ешқашан оқылмайды. |
| Баланс және лимиттер | Бірдей | Баланс та, минутына 120 сұрау лимиті де бірдей. Екеуі де мекенжай бойынша емес, аккаунт бойынша саналады. |
| Сұрау көлемі | Бірдей | Сұрау денесі 32 MiB-қа дейін. |
| Схема | Айырмашылығы бар | Ашық желіде және айнада https://. .onion және .b32.i2p мекенжайларында http://, мұнда желінің өзі қосылымды басынан аяғына дейін шифрлайды. |
| Прокси | Айырмашылығы бар | Ашық желіде жоқ. Tor үшін SOCKS5 прокси, I2P үшін HTTP прокси. Атауды компьютеріңіз емес, прокси шешуі керек. |
| Жылдамдық | Айырмашылығы бар | Екі желі де әр байтқа кідіріс қосады. I2P екеуінің ішінде баяуы. |
Баланс және лимиттер өз бетінде сипатталған. Шектеулер және баланс
Tor арқылы cURL
Компьютеріңізде Tor клиентін іске қосыңыз. Ол 127.0.0.1:9050 мекенжайында SOCKS5 прокси ұсынады. --socks5-hostname .onion атауын сол проксиге береді.
# 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 роутерін іске қосыңыз. Ол 127.0.0.1:4444 мекенжайында HTTP прокси ұсынады, ол .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 клиенті. Python-да екі ресми SDK де httpx клиентін қабылдайды. SOCKS прокси үшін 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 екі желіде де жұмыс істейді. Стрим ашық тұрғанда және модельдің жіберетін ештеңесі жоқ кезде, API keep-alive жібереді, сондықтан қосылым проксиге немесе клиентіңізге өлі болып көрінбейді.
| Endpoint | Ашық стримдегі keep-alive | Қайсысына жіберіледі |
|---|---|---|
/v1/chat/completions | Әр 15 секунд сайын түсініктеме жолы (: деп басталады). | Барлық модельдер |
/v1/messages | Әр 15 секунд сайын event: ping немесе түсініктеме жолы. | Барлық модельдер |
/v1/responses | Әр 15 секунд сайын түсініктеме жолы. | Hosted open-weight модельдер |
"stream": trueжіберіңіз. Стримделген жауап модель жазған бойда келе бастайды, ал keep-alive сұраудың әлі өңделіп жатқанын көрсетеді. Стримделмеген жауап бүкіл жауап дайын болғанша ештеңе жібермейді.- Клиентке ұзақ оқу таймаутын беріңіз. Мысалдарда 600 секунд қолданылған. 15 секундтан қысқа таймаут стримді екі keep-alive арасында үзуі мүмкін.
- SSE оқушыңыз түсініктеме жолдары мен
pingоқиғаларын өткізіп жіберсін. SDK-лар мұны өзі жасайды. - Қосылым үзілген бойда сұрауды қайта жібермеңіз. API-ге жеткен сұрау соңына дейін орындалады және есептеледі, қосылым жоғалса да.
- Жолды алдымен
GET /v1/modelsарқылы тексеріңіз. Ол кілтті қажет етпейді және қысқа JSON тізімін қайтарады.
Қосылым мәселелері
| Белгісі | Себебі және түзету |
|---|---|
127.0.0.1:9050 немесе 127.0.0.1:4444 қосылымы қабылданбады | Компьютеріңізде Tor клиенті немесе I2P роутері жұмыс істемейді, немесе ол басқа портты тыңдайды. Tor Browser өз SOCKS проксиін 9150 портында ұсынады. |
.onion атауы үшін Could not resolve host | Клиент атауды өзі шешуге тырысты. cURL-де --socks5-hostname, прокси URL-інде socks5h:// қолданыңыз, сонда атауды Tor клиенті шешеді. |
| I2P проксиі өз қате бетімен жауап береді | Роутер мекенжайды әлі таппады. Роутерге іске қосылғаннан кейін бірнеше минут қажет. Қайталап көріңіз. |
Missing authentication бар 401 | Сұрау кілтсіз келді. Ашық желідегідей тақырыпты жіберіңіз. |
Барлық басқа қателер ашық желідегідей. Қателерді өңдеу
JavaScript-сіз кілтіңіз
Shannon-да JavaScript-сіз веб-сайт та бар, ол ашық желіде, onion қызметі ретінде және eepsite ретінде қолжетімді. Оның /keys беті API кілтіңізді көрсетеді және оны ауыстыруға мүмкіндік береді, сондықтан Tor немесе I2P желісінен шықпай кілт ала аласыз. encrypted.shannon-ai.com/keys
Сол веб-сайттың үш желідегі мекенжайлары мұнда тізілген: Шифрланған қолжетімділік