Salti al la enhavo
Ĉifritaj endpoints, Tor & I2P

Ĉifritaj endpoints, Tor & I2P

La API estas publikigita ankaŭ kiel servo onion de Tor kaj kiel eepsite de I2P. Samaj vojoj, sama ŝlosilo; ŝanĝiĝas nur la baza URL kaj la prokurilo.

Bazaj URL

Kvar adresoj kondukas al la sama API. Uzu tiun, kiu taŭgas por via reto, kun la sama API-ŝlosilo kaj la samaj petoj.

Reto Baza URL Kiel vi atingas ĝin
Klara reto https://api.shannon-ai.com/v1 Rekte, per HTTPS.
Ĉifrita spegulo https://api-encrypted.shannon-ai.com/v1 Rekte, per HTTPS. Dua gastiganta nomo por la sama API.
Tor (servo onion) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Tra kliento de Tor: prokurilo SOCKS5, defaŭlte ĉe 127.0.0.1:9050.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Tra I2P-enkursigilo: HTTP-prokurilo, defaŭlte ĉe 127.0.0.1:4444.
  • SDK de OpenAI prenas la bazan URL kiel montrite, kun /v1. SDK de Anthropic prenas ĝin sen /v1.
  • Por kontroli adreson, legu la kapojn de respondo de https://api.shannon-ai.com: Onion-Location portas la adreson onion kaj X-I2P-Location la adreson I2P. La adreso onion komenciĝas per shannon.

Kiuj vojoj funkcias

Ĉiu vojo /v1 respondas ĉe ĉiuj kvar adresoj:

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

GET /v1/models ne bezonas ŝlosilon, kio faras ĝin rapida testo, ke via prokurilo atingas la API.

Kio estas sama kaj kio malsamas

Ero Sama? Detalo
Vojoj, kampoj de peto, respondoj, eraroj Sama Samaj ĉe ĉiu adreso. Neniu vojo kondutas alie laŭ la gastiganta nomo.
API-ŝlosilo Sama Unu ŝlosilo funkcias ĉe ĉiu adreso, kiel Authorization: Bearer aŭ x-api-key. Kuketoj neniam estas legataj ĉe /v1.
Saldo kaj limoj Sama La sama saldo kaj la sama limo de 120 petoj por minuto. Ambaŭ estas kalkulataj por konto, ne por adreso.
Grando de peto Sama Ĝis 32 MiB por korpo de peto.
Skemo Malsamas https:// ĉe la klara reto kaj ĉe la spegulo. http:// ĉe la adresoj .onion kaj .b32.i2p, kie la reto mem ĉifras la konekton de fino al fino.
Prokurilo Malsamas Neniu ĉe la klara reto. Prokurilo SOCKS5 por Tor, HTTP-prokurilo por I2P. La nomo devas esti solvata de la prokurilo, ne de via maŝino.
Rapideco Malsamas Ambaŭ retoj aldonas prokraston al ĉiu bajto. I2P estas la pli malrapida el la du.

Saldo kaj limoj estas priskribitaj en sia propra paĝo. Limoj kaj saldo

cURL tra Tor

Funkciigu klienton de Tor sur via maŝino. Ĝi proponas prokurilon SOCKS5 ĉe 127.0.0.1:9050. --socks5-hostname transdonas la nomon .onion al tiu prokurilo.

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 tra I2P

Funkciigu I2P-enkursigilon sur via maŝino. Ĝi proponas HTTP-prokurilon ĉe 127.0.0.1:4444, kiu prenas la nomon .b32.i2p kiel ĝi estas.

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

Baza URL de SDK

SDK bezonas du ŝanĝojn: la bazan URL de la reto, kaj HTTP-klienton, kiu pasas tra la prokurilo. En Python ambaŭ oficialaj SDK akceptas klienton httpx. Por prokurilo SOCKS instalu 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 funkcias tra ambaŭ retoj. Dum fluo estas malfermita kaj la modelo ankoraŭ havas nenion por sendi, la API sendas keep-alive, por ke la konekto ne aspektu morta al prokurilo aŭ al via kliento.

Endpoint Keep-alive en malfermita fluo Sendita por
/v1/chat/completions Komentlinio (ĝi komenciĝas per :) ĉiujn 15 sekundojn. Ĉiuj modeloj
/v1/messages event: ping, aŭ komentlinio, ĉiujn 15 sekundojn. Ĉiuj modeloj
/v1/responses Komentlinio ĉiujn 15 sekundojn. Gastigitaj malfermpezaj modeloj
  • Sendu "stream": true. Fluata respondo komencas alvenadi tuj kiam la modelo skribas, kaj la keep-alive montras, ke la peto ankoraŭ estas prilaborata. Ne fluata respondo sendas nenion ĝis la tuta respondo estas preta.
  • Donu al la kliento longan tempolimon de legado. La ekzemploj uzas 600 sekundojn. Tempolimo pli mallonga ol 15 sekundoj povas fini fluon inter du keep-alive.
  • Lasu vian legilon de SSE preterpasi komentliniojn kaj eventojn ping. La SDK jam faras tion.
  • Ne resendu peton en la momento, kiam konekto falas. Peto, kiu atingis la API, funkcias ĝis sia fino kaj estas kalkulata, ankaŭ kiam la konekto malaperis.
  • Provu la vojon unue per GET /v1/models. Ĝi ne bezonas ŝlosilon kaj redonas mallongan JSON-liston.

Problemoj de konekto

Simptomo Kaŭzo kaj riparo
La konekto al 127.0.0.1:9050 aŭ 127.0.0.1:4444 estas rifuzita Neniu kliento de Tor aŭ I2P-enkursigilo funkcias sur via maŝino, aŭ ĝi aŭskultas ĉe alia pordo. Tor Browser proponas sian prokurilon SOCKS ĉe pordo 9150.
Could not resolve host por la nomo .onion La kliento provis mem solvi la nomon. Uzu --socks5-hostname en cURL kaj socks5h:// en URL de prokurilo, por ke la kliento de Tor solvu ĝin.
La I2P-prokurilo respondas per sia propra erarpaĝo La enkursigilo ankoraŭ ne trovis la adreson. Enkursigilo bezonas kelkajn minutojn post sia starto. Reprovu.
401 kun Missing authentication La peto alvenis sen ŝlosilo. Sendu la saman kapon kiel ĉe la klara reto.

Ĉiu alia eraro estas sama kiel ĉe la klara reto. Erarotraktado

Via ŝlosilo sen JavaScript

Shannon havas ankaŭ retejon sen JavaScript, atingeblan ĉe la klara reto, kiel servo onion kaj kiel eepsite. Ĝia paĝo /keys montras vian API-ŝlosilon kaj lasas vin rotacii ĝin, do vi povas akiri ŝlosilon sen forlasi Tor aŭ I2P. encrypted.shannon-ai.com/keys

La adresoj de tiu retejo ĉe ĉiuj tri retoj estas listigitaj ĉi tie: Ĉifrita aliro