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-Locationenthält die Onion-Adresse undX-I2P-Locationdie I2P-Adresse. Die Onion-Adresse beginnt mitshannon.
Welche Routen funktionieren
Jede /v1-Route antwortet an allen vier Adressen:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /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.
# 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.
# 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) # pip install openai
import httpx
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1",
http_client=httpx.Client(proxy="http://127.0.0.1:4444", timeout=600),
)
stream = client.chat.completions.create(
model="shannon-3",
messages=[{"role": "user", "content": "Hello over I2P"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True) # pip install anthropic "httpx[socks]"
import anthropic
import httpx
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion",
http_client=httpx.Client(proxy="socks5h://127.0.0.1:9050", timeout=600),
)
with client.messages.stream(
model="shannon-1.6-lite",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello over Tor"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True) Streaming und Keep-alive bei langsamen Verbindungen
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