Գաղտնագրված, Tor և I2P endpoint-ներ
API-ն հրապարակված է նաև որպես Tor onion ծառայություն և I2P eepsite։ Նույն ուղիները, նույն բանալին. փոխվում են միայն base URL-ը և proxy-ն։
Base URL-ներ
Չորս հասցե տանում են նույն API-ին։ Օգտագործեք այն, որը համապատասխանում է ձեր ցանցին՝ նույն API բանալիով և նույն հարցումներով։
| Ցանց | Base URL | Ինչպես հասնել |
|---|---|---|
| Բաց վեբ | https://api.shannon-ai.com/v1 | Ուղղակիորեն՝ HTTPS-ով։ |
| Գաղտնագրված mirror | https://api-encrypted.shannon-ai.com/v1 | Ուղղակիորեն՝ HTTPS-ով։ Նույն API-ի երկրորդ հոսթի անունը։ |
| Tor (onion ծառայություն) | 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-ն base 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։ Cookie-ները /v1-ում երբեք չեն կարդացվում։ |
| Մնացորդ և սահմաններ | Նույնը | Նույն մնացորդը և րոպեում 120 հարցման նույն սահմանը։ Երկուսն էլ հաշվվում են ըստ հաշվի, ոչ թե ըստ հասցեի։ |
| Հարցման չափ | Նույնը | Մինչև 32 MiB հարցման մարմնի համար։ |
| Սխեմա | Տարբերվում է | https:// բաց վեբում և mirror-ում։ http:// .onion և .b32.i2p հասցեների վրա, որտեղ ցանցն ինքը կողից կողք գաղտնագրում է կապը։ |
| Proxy | Տարբերվում է | Բաց վեբում՝ ոչ մի։ Tor-ի համար՝ SOCKS5 proxy, I2P-ի համար՝ HTTP proxy։ Անունը պետք է լուծի proxy-ն, ոչ թե ձեր մեքենան։ |
| Արագություն | Տարբերվում է | Երկու ցանցերն էլ ավելացնում են ուշացում յուրաքանչյուր բայթի համար։ I2P-ն երկուսից ավելի դանդաղն է։ |
Մնացորդը և սահմանները նկարագրված են իրենց էջում։ Սահմանաչափեր և մնացորդ
cURL՝ Tor-ի միջոցով
Գործարկեք Tor կլիենտ ձեր մեքենայի վրա։ Այն առաջարկում է SOCKS5 proxy 127.0.0.1:9050-ում։ --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"}]
}' cURL՝ I2P-ի միջոցով
Գործարկեք I2P router ձեր մեքենայի վրա։ Այն առաջարկում է HTTP proxy 127.0.0.1:4444-ում, որը ընդունում է .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 կլիենտ, որն անցնում է proxy-ի միջով։ 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-ն աշխատում է երկու ցանցերով էլ։ Մինչ հոսքը բաց է և մոդելը դեռ ուղարկելու բան չունի, API-ն ուղարկում է keep-alive, որպեսզի կապը proxy-ին կամ ձեր կլիենտին մեռած չթվա։
| Endpoint | Keep-alive բաց հոսքում | Ուղարկվում է |
|---|---|---|
/v1/chat/completions | Մեկնաբանության տող (սկսվում է :-ով) ամեն 15 վայրկյանը մեկ։ | Բոլոր մոդելները |
/v1/messages | event: ping կամ մեկնաբանության տող՝ ամեն 15 վայրկյանը մեկ։ | Բոլոր մոդելները |
/v1/responses | Մեկնաբանության տող ամեն 15 վայրկյանը մեկ։ | Hosted open-weight մոդելներ |
- Ուղարկեք
"stream": true։ Streaming պատասխանը սկսում է գալ հենց որ մոդելը գրում է, և keep-alive-ը ցույց է տալիս, որ հարցումը դեռ մշակվում է։ Streaming չունեցող պատասխանը ոչինչ չի ուղարկում, մինչև ամբողջ պատասխանը պատրաստ լինի։ - Կլիենտին տվեք երկար read timeout։ Օրինակներն օգտագործում են 600 վայրկյան։ 15 վայրկյանից կարճ timeout-ը կարող է ավարտել հոսքը երկու keep-alive-ի միջև։
- Թող ձեր SSE ընթերցողը բաց թողնի մեկնաբանության տողերը և
pingիրադարձությունները։ SDK-ներն արդեն անում են դա։ - Կապի խզվելու պահին հարցումը կրկին մի ուղարկեք։ API-ին հասած հարցումը աշխատում է մինչև վերջ և հաշվվում է, նույնիսկ երբ կապն արդեն չկա։
- Ճանապարհը նախ ստուգեք
GET /v1/models-ով։ Այն բանալի չի պահանջում և վերադարձնում է կարճ JSON ցանկ։
Կապի խնդիրներ
| Ախտանիշ | Պատճառը և լուծումը |
|---|---|
Կապը 127.0.0.1:9050-ին կամ 127.0.0.1:4444-ին մերժվում է | Ձեր մեքենայի վրա Tor կլիենտ կամ I2P router չի աշխատում, կամ այն լսում է այլ պորտ։ Tor Browser-ն իր SOCKS proxy-ն առաջարկում է 9150 պորտում։ |
Could not resolve host .onion անվան համար | Կլիենտը փորձել է անունը լուծել ինքը։ cURL-ում օգտագործեք --socks5-hostname, իսկ proxy URL-ում՝ socks5h://, որպեսզի Tor կլիենտը լուծի այն։ |
| I2P proxy-ն պատասխանում է իր սեփական սխալի էջով | Router-ը դեռ չի գտել հասցեն։ Router-ին մեկնարկից հետո մի քանի րոպե է պետք։ Փորձեք կրկին։ |
401 Missing authentication-ով | Հարցումը հասել է առանց բանալու։ Ուղարկեք նույն header-ը, ինչ բաց վեբում։ |
Մնացած յուրաքանչյուր սխալ նույնն է, ինչ բաց վեբում։ Սխալների մշակում
Ձեր բանալին առանց JavaScript-ի
Shannon-ն ունի նաև առանց JavaScript-ի կայք, որը հասանելի է բաց վեբում, որպես onion ծառայություն և որպես eepsite։ Դրա /keys էջը ցույց է տալիս ձեր API բանալին և թույլ է տալիս փոխել այն, ուստի բանալի կարող եք ստանալ առանց Tor-ից կամ I2P-ից դուրս գալու։ encrypted.shannon-ai.com/keys
Այդ կայքի հասցեները բոլոր երեք ցանցերում թվարկված են այստեղ. Գաղտնագրված հասանելիություն