Kalo te përmbajtja
Endpoint-e të enkriptuara, Tor dhe I2P

Endpoint-e të enkriptuara, Tor dhe I2P

API-ja publikohet edhe si shërbim Tor onion dhe si eepsite I2P. Të njëjtat rrugë, i njëjti çelës; ndryshojnë vetëm URL-ja bazë dhe proxy.

URL-të bazë

Katër adresa çojnë te i njëjti API. Përdorni atë që i përshtatet rrjetit tuaj, me të njëjtin çelës API dhe të njëjtat kërkesa.

Rrjeti URL bazë Si e arrini
Uebi i hapur https://api.shannon-ai.com/v1 Drejtpërdrejt, përmes HTTPS.
Pasqyrë e enkriptuar https://api-encrypted.shannon-ai.com/v1 Drejtpërdrejt, përmes HTTPS. Një emër host i dytë për të njëjtin API.
Tor (shërbim onion) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Përmes një klienti Tor: një proxy SOCKS5, si parazgjedhje te 127.0.0.1:9050.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Përmes një routeri I2P: një proxy HTTP, si parazgjedhje te 127.0.0.1:4444.
  • Një SDK OpenAI e merr URL-në bazë siç tregohet, me /v1. Një SDK Anthropic e merr pa /v1.
  • Për të kontrolluar një adresë, lexoni header-at e përgjigjes së https://api.shannon-ai.com: Onion-Location mban adresën onion dhe X-I2P-Location adresën I2P. Adresa onion fillon me shannon.

Cilat rrugë funksionojnë

Çdo rrugë /v1 përgjigjet në të katër adresat:

  • POST /v1/chat/completions
  • POST /v1/responses
  • POST /v1/messages
  • POST /v1/messages/count_tokens
  • POST /v1/tokenize
  • GET /v1/models

GET /v1/models nuk kërkon çelës, gjë që e bën një test të shpejtë që proxy juaj arrin te API-ja.

Çfarë është njësoj dhe çfarë ndryshon

Elementi Njësoj? Detaji
Rrugët, fushat e kërkesës, përgjigjet, gabimet Njësoj Të njëjta në çdo adresë. Asnjë rrugë nuk sillet ndryshe sipas emrit të host-it.
Çelësi API Njësoj Një çelës funksionon në çdo adresë, si Authorization: Bearer ose x-api-key. Cookies nuk lexohen kurrë në /v1.
Bilanci dhe kufijtë Njësoj I njëjti bilanc dhe i njëjti kufi prej 120 kërkesash në minutë. Të dyja numërohen për llogari, jo për adresë.
Madhësia e kërkesës Njësoj Deri në 32 MiB për trup kërkese.
Skema Ndryshon https:// në uebin e hapur dhe në pasqyrë. http:// në adresat .onion dhe .b32.i2p, ku vetë rrjeti e enkripton lidhjen nga skaji në skaj.
Proxy Ndryshon Asnjë në uebin e hapur. Një proxy SOCKS5 për Tor, një proxy HTTP për I2P. Emri duhet të zgjidhet nga proxy, jo nga kompjuteri juaj.
Shpejtësia Ndryshon Të dy rrjetet shtojnë vonesë në çdo bajt. I2P është më i ngadalshmi nga të dy.

Bilanci dhe kufijtë përshkruhen në faqen e tyre. Kufijtë dhe bilanci

cURL përmes Tor

Ekzekutoni një klient Tor në kompjuterin tuaj. Ofron një proxy SOCKS5 te 127.0.0.1:9050. --socks5-hostname ia jep emrin .onion atij proxy.

cURL · Tor
# 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 përmes I2P

Ekzekutoni një router I2P në kompjuterin tuaj. Ofron një proxy HTTP te 127.0.0.1:4444, që e merr emrin .b32.i2p siç është.

cURL · 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"}]
  }'

URL bazë e SDK-së

Një SDK ka nevojë për dy ndryshime: URL-në bazë të rrjetit, dhe një klient HTTP që kalon përmes proxy. Në Python të dyja SDK-të zyrtare pranojnë një klient httpx. Për një proxy SOCKS instaloni 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)

Streaming funksionon në të dy rrjetet. Ndërsa një stream është i hapur dhe modeli ende nuk ka çfarë të dërgojë, API-ja dërgon një keep-alive, kështu që lidhja nuk duket e vdekur për një proxy ose për klientin tuaj.

Endpoint Keep-alive në një stream të hapur Dërguar për
/v1/chat/completions Një rresht komenti (fillon me :) çdo 15 sekonda. Të gjitha modelet
/v1/messages Një event: ping, ose një rresht komenti, çdo 15 sekonda. Të gjitha modelet
/v1/responses Një rresht komenti çdo 15 sekonda. Modele open-weight të hostuara
  • Dërgoni "stream": true. Një përgjigje me stream fillon të arrijë sapo modeli shkruan, dhe keep-alive tregon se kërkesa ende po përpunohet. Një përgjigje pa stream nuk dërgon asgjë derisa gjithë përgjigjja të jetë gati.
  • Jepini klientit një read timeout të gjatë. Shembujt përdorin 600 sekonda. Një timeout më i shkurtër se 15 sekonda mund ta mbarojë një stream mes dy keep-alive-ve.
  • Lëreni lexuesin tuaj SSE të kapërcejë rreshtat e komenteve dhe ngjarjet ping. SDK-të e bëjnë këtë tashmë.
  • Mos ridërgoni një kërkesë në çastin që një lidhje bie. Një kërkesë që arriti te API-ja ekzekutohet deri në fund dhe numërohet, edhe kur lidhja nuk është më.
  • Testojeni rrugën fillimisht me GET /v1/models. Nuk kërkon çelës dhe kthen një listë të shkurtër JSON.

Probleme lidhjeje

Simptoma Shkaku dhe zgjidhja
Lidhja me 127.0.0.1:9050 ose 127.0.0.1:4444 refuzohet Asnjë klient Tor ose router I2P nuk po ekzekutohet në kompjuterin tuaj, ose dëgjon në një port tjetër. Tor Browser ofron proxy-n e vet SOCKS në portin 9150.
Could not resolve host për emrin .onion Klienti u përpoq ta zgjidhte vetë emrin. Përdorni --socks5-hostname në cURL dhe socks5h:// në një URL proxy, që ta zgjidhë klienti Tor.
Proxy I2P përgjigjet me faqen e vet të gabimit Routeri ende nuk e ka gjetur adresën. Një routeri i duhen disa minuta pasi niset. Provoni përsëri.
401 me Missing authentication Kërkesa arriti pa çelës. Dërgoni të njëjtin header si në uebin e hapur.

Çdo gabim tjetër është i njëjtë si në uebin e hapur. Trajtimi i gabimeve

Çelësi juaj pa JavaScript

Shannon ka edhe një faqe uebi pa JavaScript, të arritshme në uebin e hapur, si shërbim onion dhe si eepsite. Faqja e saj /keys tregon çelësin tuaj API dhe ju lejon ta rrotulloni, kështu që mund ta merrni një çelës pa dalë nga Tor ose I2P. encrypted.shannon-ai.com/keys

Adresat e asaj faqeje uebi në të tri rrjetet listohen këtu: Qasje e enkriptuar