Gå til indhold
Krypterede endpoints, Tor og I2P

Krypterede endpoints, Tor og I2P

API'et er også offentliggjort som en Tor onion-tjeneste og en I2P-eepsite. Samme ruter, samme nøgle; kun base-URL'en og proxyen ændres.

Base-URL'er

Fire adresser fører til det samme API. Brug den, der passer til dit netværk, med den samme API-nøgle og de samme anmodninger.

Netværk Base-URL Sådan når du den
Åbent web https://api.shannon-ai.com/v1 Direkte, over HTTPS.
Krypteret spejl https://api-encrypted.shannon-ai.com/v1 Direkte, over HTTPS. Et andet værtsnavn til det samme API.
Tor (onion-tjeneste) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Gennem en Tor-klient: en SOCKS5-proxy, som standard på 127.0.0.1:9050.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Gennem en I2P-router: en HTTP-proxy, som standard på 127.0.0.1:4444.
  • Et OpenAI-SDK tager base-URL'en som vist, med /v1. Et Anthropic-SDK tager den uden /v1.
  • For at kontrollere en adresse skal du læse svarheaderne fra https://api.shannon-ai.com: Onion-Location har onion-adressen og X-I2P-Location I2P-adressen. Onion-adressen starter med shannon.

Hvilke ruter der virker

Hver /v1-rute svarer på alle fire adresser:

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

GET /v1/models kræver ingen nøgle, hvilket gør det til en hurtig test af, at din proxy når API'et.

Hvad der er det samme, og hvad der afviger

Emne Det samme? Detalje
Ruter, anmodningsfelter, svar, fejl Det samme De samme på alle adresser. Ingen rute opfører sig anderledes efter værtsnavn.
API-nøgle Det samme Én nøgle virker på alle adresser, som Authorization: Bearer eller x-api-key. Cookies læses aldrig på /v1.
Saldo og grænser Det samme Den samme saldo og den samme grænse på 120 anmodninger per minut. Begge tælles per konto, ikke per adresse.
Anmodningens størrelse Det samme Op til 32 MiB per anmodnings body.
Skema Afviger https:// på det åbne web og på spejlet. http:// på adresserne .onion og .b32.i2p, hvor netværket selv krypterer forbindelsen fra ende til anden.
Proxy Afviger Ingen på det åbne web. En SOCKS5-proxy til Tor, en HTTP-proxy til I2P. Navnet skal opløses af proxyen, ikke af din maskine.
Hastighed Afviger Begge netværk tilføjer forsinkelse til hver byte. I2P er det langsomste af de to.

Saldo og grænser er beskrevet på deres egen side. Grænser og saldo

cURL gennem Tor

Kør en Tor-klient på din maskine. Den tilbyder en SOCKS5-proxy på 127.0.0.1:9050. --socks5-hostname giver .onion-navnet videre til proxyen.

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

Kør en I2P-router på din maskine. Den tilbyder en HTTP-proxy på 127.0.0.1:4444, som tager .b32.i2p-navnet, som det er.

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

SDK-base-URL

Et SDK kræver to ændringer: netværkets base-URL og en HTTP-klient, der går gennem proxyen. I Python tager begge officielle SDK'er en httpx-klient. Til en SOCKS-proxy skal du installere 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 virker over begge netværk. Mens en stream er åben, og modellen endnu intet har at sende, sender API'et en keep-alive, så forbindelsen ikke ser død ud for en proxy eller for din klient.

Endpoint Keep-alive på en åben stream Sendes for
/v1/chat/completions En kommentarlinje (den starter med :) hvert 15. sekund. Alle modeller
/v1/messages En event: ping eller en kommentarlinje hvert 15. sekund. Alle modeller
/v1/responses En kommentarlinje hvert 15. sekund. Hostede open-weight-modeller
  • Send "stream": true. Et streamet svar begynder at ankomme, så snart modellen skriver, og keep-alive viser, at anmodningen stadig behandles. Et svar uden streaming sender intet, før hele svaret er klart.
  • Giv klienten en lang læse-timeout. Eksemplerne bruger 600 sekunder. En timeout på under 15 sekunder kan afbryde en stream mellem to keep-alives.
  • Lad din SSE-læser springe kommentarlinjer og ping-hændelser over. SDK'erne gør det allerede.
  • Send ikke en anmodning igen i samme øjeblik, en forbindelse falder. En anmodning, der nåede API'et, kører til ende og tælles, også når forbindelsen er væk.
  • Test stien med GET /v1/models først. Det kræver ingen nøgle og returnerer en kort JSON-liste.

Forbindelsesproblemer

Symptom Årsag og løsning
Forbindelsen til 127.0.0.1:9050 eller 127.0.0.1:4444 afvises Der kører ingen Tor-klient eller I2P-router på din maskine, eller den lytter på en anden port. Tor Browser tilbyder sin SOCKS-proxy på port 9150.
Could not resolve host for .onion-navnet Klienten forsøgte selv at opløse navnet. Brug --socks5-hostname i cURL og socks5h:// i en proxy-URL, så Tor-klienten opløser det.
I2P-proxyen svarer med sin egen fejlside Routeren har endnu ikke fundet adressen. En router skal bruge nogle minutter efter start. Prøv igen.
401 med Missing authentication Anmodningen ankom uden en nøgle. Send den samme header som på det åbne web.

Alle andre fejl er de samme som på det åbne web. Fejlhåndtering

Din nøgle uden JavaScript

Shannon har også et website uden JavaScript, som kan nås på det åbne web, som en onion-tjeneste og som en eepsite. Dets side /keys viser din API-nøgle og lader dig rotere den, så du kan få en nøgle uden at forlade Tor eller I2P. encrypted.shannon-ai.com/keys

Adresserne på det website på alle tre netværk står her: Krypteret adgang