Hopp til innholdet
Krypterte endepunkter, Tor og I2P

Krypterte endepunkter, Tor og I2P

API-et er også publisert som en Tor onion-tjeneste og et I2P eepsite. Samme ruter, samme nøkkel; bare base-URL-en og proxyen endres.

Base-URL-er

Fire adresser fører til det samme API-et. Bruk den som passer nettverket ditt, med samme API-nøkkel og samme forespørsler.

Nettverk Base-URL Hvordan du når den
Åpent nett https://api.shannon-ai.com/v1 Direkte, over HTTPS.
Kryptert speil https://api-encrypted.shannon-ai.com/v1 Direkte, over HTTPS. Et annet vertsnavn for det samme API-et.
Tor (onion-tjeneste) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Gjennom en Tor-klient: en SOCKS5-proxy, som standard på 127.0.0.1:9050.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Gjennom en I2P-ruter: en HTTP-proxy, som standard på 127.0.0.1:4444.
  • En OpenAI-SDK tar base-URL-en som vist, med /v1. En Anthropic-SDK tar den uten /v1.
  • For å sjekke en adresse leser du 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 som fungerer

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

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

GET /v1/models trenger ingen nøkkel, noe som gjør den til en rask test av at proxyen din når API-et.

Hva som er likt og hva som er forskjellig

Punkt Samme? Detalj
Ruter, forespørselsfelt, svar, feil Samme Det samme på alle adresser. Ingen rute oppfører seg annerledes etter vertsnavn.
API-nøkkel Samme Én nøkkel fungerer på alle adresser, som Authorization: Bearer eller x-api-key. Informasjonskapsler leses aldri på /v1.
Saldo og grenser Samme Samme saldo og samme grense på 120 forespørsler per minutt. Begge telles per konto, ikke per adresse.
Forespørselsstørrelse Samme Opptil 32 MiB per forespørselskropp.
Skjema Forskjellig https:// på det åpne nettet og på speilet. http:// på adressene .onion og .b32.i2p, der nettverket selv krypterer forbindelsen ende til ende.
Proxy Forskjellig Ingen på det åpne nettet. En SOCKS5-proxy for Tor, en HTTP-proxy for I2P. Navnet må løses av proxyen, ikke av maskinen din.
Hastighet Forskjellig Begge nettverkene legger til forsinkelse for hver byte. I2P er det tregeste av de to.

Saldo og grenser er beskrevet på sin egen side. Grenser og saldo

cURL gjennom Tor

Kjør en Tor-klient på maskinen din. Den tilbyr en SOCKS5-proxy på 127.0.0.1:9050. --socks5-hostname gir .onion-navnet til den 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 gjennom I2P

Kjør en I2P-ruter på maskinen din. Den tilbyr en HTTP-proxy på 127.0.0.1:4444, som tar .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

En SDK trenger to endringer: base-URL-en for nettverket, og en HTTP-klient som går gjennom proxyen. I Python tar begge de offisielle SDK-ene en httpx-klient. For en SOCKS-proxy installerer du 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 fungerer over begge nettverkene. Mens en strøm er åpen og modellen ennå ikke har noe å sende, sender API-et en keep-alive, slik at forbindelsen ikke ser død ut for en proxy eller for klienten din.

Endepunkt Keep-alive på en åpen strøm 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 åpne vektmodeller
  • Send "stream": true. Et svar med streaming begynner å komme så snart modellen skriver, og keep-alive viser at forespørselen fortsatt behandles. Et svar uten streaming sender ingenting før hele svaret er klart.
  • Gi klienten en lang lesetidsgrense. Eksemplene bruker 600 sekunder. En tidsgrense under 15 sekunder kan avslutte en strøm mellom to keep-alives.
  • La SSE-leseren din hoppe over kommentarlinjer og ping-hendelser. SDK-ene gjør dette allerede.
  • Ikke send en forespørsel på nytt i det øyeblikket en forbindelse brytes. En forespørsel som har nådd API-et, kjører til slutten og telles, også når forbindelsen er borte.
  • Test veien med GET /v1/models først. Det trenger ingen nøkkel og returnerer en kort JSON-liste.

Tilkoblingsproblemer

Symptom Årsak og løsning
Tilkoblingen til 127.0.0.1:9050 eller 127.0.0.1:4444 avvises Ingen Tor-klient eller I2P-ruter kjører på maskinen din, eller den lytter på en annen port. Tor Browser tilbyr SOCKS-proxyen sin på port 9150.
Could not resolve host for .onion-navnet Klienten prøvde å løse navnet selv. Bruk --socks5-hostname i cURL og socks5h:// i en proxy-URL, slik at Tor-klienten løser det.
I2P-proxyen svarer med sin egen feilside Ruteren har ikke funnet adressen ennå. En ruter trenger noen minutter etter oppstart. Prøv igjen.
401 med Missing authentication Forespørselen kom uten nøkkel. Send den samme headeren som på det åpne nettet.

Alle andre feil er de samme som på det åpne nettet. Feilhåndtering

Nøkkelen din uten JavaScript

Shannon har også et nettsted uten JavaScript, tilgjengelig på det åpne nettet, som en onion-tjeneste og som et eepsite. Siden /keys viser API-nøkkelen din og lar deg bytte den, så du kan få en nøkkel uten å forlate Tor eller I2P. encrypted.shannon-ai.com/keys

Adressene til det nettstedet på alle tre nettverkene er listet her: Kryptert tilgang