Zum Inhalt springen
Verschlüsselte, Tor- und I2P-Endpunkte

Verschlüsselte, Tor- und I2P-Endpunkte

Die API ist außerdem als Tor-Onion-Dienst und als I2P-Eepsite veröffentlicht. Dieselben Routen, derselbe Key; nur die Base-URL und der Proxy ändern sich.

Base-URLs

Vier Adressen führen zur selben API. Verwenden Sie die, die zu Ihrem Netzwerk passt, mit demselben API-Key und denselben Anfragen.

Netzwerk Base-URL Wie Sie sie erreichen
Clear Web https://api.shannon-ai.com/v1 Direkt, über HTTPS.
Verschlüsselter Mirror https://api-encrypted.shannon-ai.com/v1 Direkt, über HTTPS. Ein zweiter Hostname für dieselbe API.
Tor (Onion-Dienst) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Über einen Tor-Client: einen SOCKS5-Proxy, standardmäßig unter 127.0.0.1:9050.
I2P (Eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Über einen I2P-Router: einen HTTP-Proxy, standardmäßig unter 127.0.0.1:4444.
  • Ein OpenAI-SDK nimmt die Base-URL wie gezeigt, mit /v1. Ein Anthropic-SDK nimmt sie ohne /v1.
  • Um eine Adresse zu prüfen, lesen Sie die Antwort-Header von https://api.shannon-ai.com: Onion-Location enthält die Onion-Adresse und X-I2P-Location die I2P-Adresse. Die Onion-Adresse beginnt mit shannon.

Welche Routen funktionieren

Jede /v1-Route antwortet an allen vier Adressen:

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

GET /v1/models braucht keinen Key und eignet sich daher als schneller Test, ob Ihr Proxy die API erreicht.

Was gleich ist und was abweicht

Punkt Gleich? Detail
Routen, Anfragefelder, Antworten, Fehler Gleich Bei jeder Adresse gleich. Keine Route verhält sich je nach Hostname anders.
API-Key Gleich Ein Key funktioniert bei jeder Adresse, als Authorization: Bearer oder x-api-key. Cookies werden bei /v1 nie gelesen.
Guthaben und Limits Gleich Dasselbe Guthaben und dasselbe Limit von 120 Anfragen pro Minute. Beides wird pro Konto gezählt, nicht pro Adresse.
Anfragegröße Gleich Bis zu 32 MiB pro Request-Body.
Schema Abweichend https:// im Clear Web und beim Mirror. http:// bei den Adressen .onion und .b32.i2p, wo das Netzwerk selbst die Verbindung Ende zu Ende verschlüsselt.
Proxy Abweichend Keiner im Clear Web. Ein SOCKS5-Proxy für Tor, ein HTTP-Proxy für I2P. Der Name muss vom Proxy aufgelöst werden, nicht von Ihrem Rechner.
Geschwindigkeit Abweichend Beide Netzwerke fügen jedem Byte Verzögerung hinzu. I2P ist das langsamere der beiden.

Guthaben und Limits sind auf einer eigenen Seite beschrieben. Limits und Guthaben

cURL über Tor

Betreiben Sie einen Tor-Client auf Ihrem Rechner. Er bietet einen SOCKS5-Proxy unter 127.0.0.1:9050 an. --socks5-hostname übergibt den Namen .onion an diesen 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 über I2P

Betreiben Sie einen I2P-Router auf Ihrem Rechner. Er bietet einen HTTP-Proxy unter 127.0.0.1:4444 an, der den Namen .b32.i2p unverändert annimmt.

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

Ein SDK braucht zwei Änderungen: die Base-URL des Netzwerks und einen HTTP-Client, der über den Proxy geht. In Python nehmen beide offiziellen SDKs einen httpx-Client an. Für einen SOCKS-Proxy installieren Sie 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 funktioniert über beide Netzwerke. Solange ein Stream offen ist und das Modell noch nichts zu senden hat, sendet die API ein Keep-alive, damit die Verbindung für einen Proxy oder Ihren Client nicht tot aussieht.

Endpunkt Keep-alive bei einem offenen Stream Gesendet für
/v1/chat/completions Eine Kommentarzeile (sie beginnt mit :) alle 15 Sekunden. Alle Modelle
/v1/messages Ein event: ping oder eine Kommentarzeile alle 15 Sekunden. Alle Modelle
/v1/responses Eine Kommentarzeile alle 15 Sekunden. Gehostete Open-Weight-Modelle
  • Senden Sie "stream": true. Eine gestreamte Antwort beginnt einzutreffen, sobald das Modell schreibt, und das Keep-alive zeigt, dass die Anfrage noch bearbeitet wird. Eine nicht gestreamte Antwort sendet nichts, bis die gesamte Antwort fertig ist.
  • Geben Sie dem Client ein langes Lese-Timeout. Die Beispiele verwenden 600 Sekunden. Ein Timeout von weniger als 15 Sekunden kann einen Stream zwischen zwei Keep-alives beenden.
  • Lassen Sie Ihren SSE-Reader Kommentarzeilen und ping-Events überspringen. Die SDKs tun das bereits.
  • Senden Sie eine Anfrage nicht in dem Moment erneut, in dem eine Verbindung abbricht. Eine Anfrage, die die API erreicht hat, läuft bis zum Ende und wird gezählt, auch wenn die Verbindung weg ist.
  • Testen Sie den Weg zuerst mit GET /v1/models. Es braucht keinen Key und gibt eine kurze JSON-Liste zurück.

Verbindungsprobleme

Symptom Ursache und Lösung
Die Verbindung zu 127.0.0.1:9050 oder 127.0.0.1:4444 wird abgelehnt Auf Ihrem Rechner läuft kein Tor-Client oder I2P-Router, oder er lauscht an einem anderen Port. Der Tor Browser bietet seinen SOCKS-Proxy an Port 9150 an.
Could not resolve host für den Namen .onion Der Client hat versucht, den Namen selbst aufzulösen. Verwenden Sie --socks5-hostname in cURL und socks5h:// in einer Proxy-URL, damit der Tor-Client ihn auflöst.
Der I2P-Proxy antwortet mit einer eigenen Fehlerseite Der Router hat die Adresse noch nicht gefunden. Ein Router braucht nach dem Start einige Minuten. Versuchen Sie es erneut.
401 mit Missing authentication Die Anfrage kam ohne Key an. Senden Sie denselben Header wie im Clear Web.

Jeder andere Fehler ist derselbe wie im Clear Web. Fehlerbehandlung

Ihr Key ohne JavaScript

Shannon hat außerdem eine Website ohne JavaScript, erreichbar im Clear Web, als Onion-Dienst und als Eepsite. Ihre Seite /keys zeigt Ihren API-Key und lässt Sie ihn rotieren, sodass Sie einen Key erhalten können, ohne Tor oder I2P zu verlassen. encrypted.shannon-ai.com/keys

Die Adressen dieser Website in allen drei Netzwerken sind hier aufgeführt: Verschlüsselter Zugang