Salatut, Tor- ja I2P-päätepisteet
API on julkaistu myös Tor-onion-palveluna ja I2P-eepsitenä. Samat reitit, sama avain; vain perus-URL ja välityspalvelin vaihtuvat.
Perus-URL:t
Neljä osoitetta johtaa samaan API:in. Käytä sitä, joka sopii verkkoosi, samalla API-avaimella ja samoilla pyynnöillä.
| Verkko | Perus-URL | Miten sen tavoittaa |
|---|---|---|
| Avoin verkko | https://api.shannon-ai.com/v1 | Suoraan, HTTPS:n yli. |
| Salattu peili | https://api-encrypted.shannon-ai.com/v1 | Suoraan, HTTPS:n yli. Toinen isäntänimi samalle API:lle. |
| Tor (onion-palvelu) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Tor-asiakkaan kautta: SOCKS5-välityspalvelin, oletuksena osoitteessa 127.0.0.1:9050. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | I2P-reitittimen kautta: HTTP-välityspalvelin, oletuksena osoitteessa 127.0.0.1:4444. |
- OpenAI-SDK ottaa perus-URL:n kuten näytetty,
/v1-päätteellä. Anthropic-SDK ottaa sen ilman/v1. - Tarkistaaksesi osoitteen lue osoitteen
https://api.shannon-ai.comvastausotsakkeet:Onion-Locationsisältää onion-osoitteen jaX-I2P-LocationI2P-osoitteen. Onion-osoite alkaa merkinnälläshannon.
Mitkä reitit toimivat
Jokainen /v1-reitti vastaa kaikissa neljässä osoitteessa:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models ei tarvitse avainta, joten se on nopea testi sille, että välityspalvelimesi tavoittaa API:n.
Mikä on samaa ja mikä eroaa
| Kohde | Sama? | Tieto |
|---|---|---|
| Reitit, pyyntökentät, vastaukset, virheet | Sama | Samat jokaisessa osoitteessa. Mikään reitti ei toimi eri tavalla isäntänimen mukaan. |
| API-avain | Sama | Yksi avain toimii jokaisessa osoitteessa, otsakkeena Authorization: Bearer tai x-api-key. Evästeitä ei lueta koskaan polussa /v1. |
| Saldo ja rajat | Sama | Sama saldo ja sama 120 pyynnön minuuttiraja. Molemmat lasketaan tiliä kohti, ei osoitetta kohti. |
| Pyynnön koko | Sama | Enintään 32 MiB pyynnön runkoa kohti. |
| Skeema | Eroaa | https:// avoimella verkolla ja peilissä. http:// osoitteissa .onion ja .b32.i2p, joissa verkko itse salaa yhteyden päästä päähän. |
| Välityspalvelin | Eroaa | Ei mitään avoimella verkolla. SOCKS5-välityspalvelin Torille, HTTP-välityspalvelin I2P:lle. Nimen on ratkaistava välityspalvelimen, ei koneesi. |
| Nopeus | Eroaa | Molemmat verkot lisäävät viivettä jokaiseen tavuun. I2P on kahdesta hitaampi. |
Saldo ja rajat on kuvattu omalla sivullaan. Rajat ja saldo
cURL Torin kautta
Käynnistä Tor-asiakas koneellasi. Se tarjoaa SOCKS5-välityspalvelimen osoitteessa 127.0.0.1:9050. --socks5-hostname antaa .onion-nimen tälle välityspalvelimelle.
# 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 I2P:n kautta
Käynnistä I2P-reititin koneellasi. Se tarjoaa HTTP-välityspalvelimen osoitteessa 127.0.0.1:4444, joka ottaa .b32.i2p-nimen sellaisenaan.
# 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:n perus-URL
SDK tarvitsee kaksi muutosta: verkon perus-URL:n ja HTTP-asiakkaan, joka kulkee välityspalvelimen kautta. Pythonissa molemmat viralliset SDK:t ottavat httpx-asiakkaan. SOCKS-välityspalvelinta varten asenna 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) Striimaus ja keep-alive hitailla yhteyksillä
Striimaus toimii molemmissa verkoissa. Kun striimi on auki eikä mallilla ole vielä mitään lähetettävää, API lähettää keep-alive-viestin, jotta yhteys ei näytä kuolleelta välityspalvelimelle tai asiakkaallesi.
| Päätepiste | Keep-alive avoimessa striimissä | Lähetetään malleille |
|---|---|---|
/v1/chat/completions | Kommenttirivi (alkaa merkillä :) 15 sekunnin välein. | Kaikki mallit |
/v1/messages | event: ping tai kommenttirivi 15 sekunnin välein. | Kaikki mallit |
/v1/responses | Kommenttirivi 15 sekunnin välein. | Hostatut avoimen painon mallit |
- Lähetä
"stream": true. Striimattu vastaus alkaa saapua heti, kun malli kirjoittaa, ja keep-alive osoittaa, että pyyntöä käsitellään yhä. Ei-striimattu vastaus ei lähetä mitään ennen kuin koko vastaus on valmis. - Anna asiakkaalle pitkä lukuaikakatkaisu. Esimerkit käyttävät 600 sekuntia. Alle 15 sekunnin aikakatkaisu voi katkaista striimin kahden keep-alive-viestin välillä.
- Anna SSE-lukijasi ohittaa kommenttirivit ja
ping-tapahtumat. SDK:t tekevät tämän jo. - Älä lähetä pyyntöä uudelleen heti, kun yhteys katkeaa. Pyyntö, joka ehti API:lle, suoritetaan loppuun ja lasketaan, myös silloin kun yhteys on poissa.
- Testaa reitti ensin komennolla
GET /v1/models. Se ei tarvitse avainta ja palauttaa lyhyen JSON-listan.
Yhteysongelmat
| Oire | Syy ja korjaus |
|---|---|
Yhteys osoitteeseen 127.0.0.1:9050 tai 127.0.0.1:4444 evätään | Koneellasi ei ole käynnissä Tor-asiakasta tai I2P-reititintä, tai se kuuntelee toista porttia. Tor Browser tarjoaa SOCKS-välityspalvelimensa portissa 9150. |
Could not resolve host .onion-nimelle | Asiakas yritti ratkaista nimen itse. Käytä cURLissa --socks5-hostname ja välityspalvelimen URL:ssa socks5h://, jotta Tor-asiakas ratkaisee sen. |
| I2P-välityspalvelin vastaa omalla virhesivullaan | Reititin ei ole vielä löytänyt osoitetta. Reititin tarvitsee muutaman minuutin käynnistyksen jälkeen. Yritä uudelleen. |
401 ja Missing authentication | Pyyntö saapui ilman avainta. Lähetä sama otsake kuin avoimella verkolla. |
Jokainen muu virhe on sama kuin avoimella verkolla. Virheiden käsittely
Avaimesi ilman JavaScriptiä
Shannonilla on myös verkkosivusto ilman JavaScriptiä, joka on tavoitettavissa avoimella verkolla, onion-palveluna ja eepsitenä. Sen /keys-sivu näyttää API-avaimesi ja antaa vaihtaa sen, joten voit hankkia avaimen poistumatta Torista tai I2P:stä. encrypted.shannon-ai.com/keys
Tuon verkkosivuston osoitteet kaikissa kolmessa verkossa on listattu täällä: Salattu pääsy