Zum Inhalt sprangen
Verschlësselt, Tor- an I2P-Endpoints

Verschlësselt, Tor- an I2P-Endpoints

D'API ass och als Tor-Onion-Service an als I2P-Eepsite publizéiert. Déiselwecht Routen, deeselwechte Schlëssel; nëmmen d'Basis-URL a de Proxy änneren sech.

Basis-URLen

Véier Adressen féieren zu där selwechter API. Benotzt déi, déi zu Ärem Netzwierk passt, mat deem selwechten API-Schlëssel an deene selwechten Ufroen.

Netzwierk Basis-URL Wéi Dir se erreecht
Clearnet https://api.shannon-ai.com/v1 Direkt, iwwer HTTPS.
Verschlësselte Mirror https://api-encrypted.shannon-ai.com/v1 Direkt, iwwer HTTPS. E zweeten Hostnumm fir déiselwecht API.
Tor (Onion-Service) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Duerch e Tor-Client: e SOCKS5-Proxy, standardméisseg op 127.0.0.1:9050.
I2P (Eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Duerch e I2P-Router: en HTTP-Proxy, standardméisseg op 127.0.0.1:4444.
  • En OpenAI-SDK hëlt d'Basis-URL esou, wéi se steet, mat /v1. En Anthropic-SDK hëlt se ouni /v1.
  • Fir eng Adress ze kontrolléieren, liest d'Äntwert-Header vun https://api.shannon-ai.com: Onion-Location enthält d'Onion-Adress an X-I2P-Location d'I2P-Adress. D'Onion-Adress fänkt mat shannon un.

Wéi eng Routen funktionéieren

All /v1-Route äntwert op allen dräi 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 brauch kee Schlëssel, dofir ass et e séieren Test, ob Äre Proxy d'API erreecht.

Wat d'selwecht ass a wat anescht ass

Punkt Datselwecht? Detail
Routen, Ufro-Felder, Äntwerten, Feeler D'selwecht Op all Adress d'selwecht. Keng Route verhält sech no dem Hostnumm anescht.
API-Schlëssel D'selwecht Ee Schlëssel funktionéiert op all Adress, als Authorization: Bearer oder x-api-key. Cookien ginn op /v1 ni gelies.
Solde a Limiten D'selwecht Deeselwechte Solde an déiselwecht Limit vun 120 Ufroen pro Minutt. Béid ginn pro Kont gezielt, net pro Adress.
Gréisst vun der Ufro D'selwecht Bis zu 32 MiB pro Body vun der Ufro.
Schema Anescht https:// am Clearnet a um Mirror. http:// op den .onion- an .b32.i2p-Adressen, wou d'Netzwierk selwer d'Verbindung vun Enn zu Enn verschlësselt.
Proxy Anescht Keen am Clearnet. E SOCKS5-Proxy fir Tor, en HTTP-Proxy fir I2P. Den Numm muss vum Proxy opgeléist ginn, net vun Ärer Maschinn.
Geschwindegkeet Anescht Béid Netzwierker addéieren Verspéidung bei all Byte. I2P ass dat méi lues vun den zwee.

Solde a Limiten si op hirer eegener Säit beschriwwen. Limiten a Solde

cURL duerch Tor

Lasst e Tor-Client op Ärer Maschinn lafen. Hie bitt e SOCKS5-Proxy op 127.0.0.1:9050 un. --socks5-hostname gëtt dem Proxy den .onion-Numm weider.

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

Lasst e I2P-Router op Ärer Maschinn lafen. Hie bitt en HTTP-Proxy op 127.0.0.1:4444 un, dee mam .b32.i2p-Numm esou, wéi e ass, ëmgeet.

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

Basis-URL vun der SDK

Eng SDK brauch zwou Ännerungen: d'Basis-URL vum Netzwierk, an en HTTP-Client, dee duerch de Proxy geet. A Python huelen déi zwou offiziell SDKs en httpx-Client. Fir e SOCKS-Proxy installéiert 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 funktionéiert iwwer béid Netzwierker. Wärend e Stream op ass an de Modell nach näischt ze schécken huet, schéckt d'API e Keep-alive, sou datt d'Verbindung fir e Proxy oder Äre Client net tot ausgesäit.

Endpoint Keep-alive op engem oppene Stream Geschéckt fir
/v1/chat/completions All 15 Sekonne eng Kommentar-Zeil (si fänkt mat : un). All Modeller
/v1/messages All 15 Sekonne en event: ping, oder eng Kommentar-Zeil. All Modeller
/v1/responses All 15 Sekonne eng Kommentar-Zeil. Hosted Open-Weight-Modeller
  • Schéckt "stream": true. Eng gestreamt Äntwert fänkt un ukommen, soubal de Modell schreift, an d'Keep-alive weist, datt un der Ufro nach geschafft gëtt. Eng Äntwert ouni Streaming schéckt näischt, bis déi ganz Äntwert prett ass.
  • Gitt dem Client en laangen Read-Timeout. D'Beispiller benotzen 600 Sekonnen. En Timeout ënner 15 Sekonne ka e Stream tëscht zwee Keep-alives ofbriechen.
  • Looss Äre SSE-Reader Kommentar-Zeilen a ping-Events iwwerspréngen. D'SDKs maachen dat schonn.
  • Schéckt eng Ufro net nach eng Kéier, soubal eng Verbindung ofbrécht. Eng Ufro, déi d'API erreecht huet, leeft bis zum Enn a gëtt gezielt, och wann d'Verbindung fort ass.
  • Test de Wee fir d'éischt mat GET /v1/models. Et brauch kee Schlëssel a gëtt eng kuerz JSON-Lëscht zréck.

Verbindungsproblemer

Symptom Ursaach a Léisung
D'Verbindung zu 127.0.0.1:9050 oder 127.0.0.1:4444 gëtt refuséiert Et leeft kee Tor-Client oder I2P-Router op Ärer Maschinn, oder en lauschtert op engem anere Port. Tor Browser bitt säi SOCKS-Proxy op Port 9150 un.
Could not resolve host fir den .onion-Numm De Client huet probéiert, den Numm selwer opzeléisen. Benotzt --socks5-hostname a cURL an socks5h:// an enger Proxy-URL, sou datt de Tor-Client en opléist.
De I2P-Proxy äntwert mat senger eegener Feeler-Säit De Router huet d'Adress nach net fonnt. E Router brauch e puer Minutten, nodeems en ugefaang huet. Probéiert et nach eng Kéier.
401 mat Missing authentication D'Ufro ass ouni Schlëssel ukomm. Schéckt deeselwechten Header wéi am Clearnet.

All anere Feeler ass d'selwecht wéi am Clearnet. Feelerbehandlung

Äre Schlëssel ouni JavaScript

Shannon huet och eng Websäit ouni JavaScript, erreechbar am Clearnet, als Onion-Service an als Eepsite. Hir /keys-Säit weist Äre API-Schlëssel an léisst Iech en erneieren, sou datt Dir e Schlëssel kritt, ouni Tor oder I2P ze verloossen. encrypted.shannon-ai.com/keys

D'Adresse vun där Websäit op allen dräi Netzwierker stinn hei: Verschlësselten Zougang