Krüpteeritud, Tor ja I2P lõpp-punktid
API on avaldatud ka Tor onion-teenuse ja I2P eepsite'ina. Samad marsruudid, sama võti; muutuvad ainult base URL ja proksi.
Base URL-id
Neli aadressi viivad sama API juurde. Kasuta seda, mis sinu võrku sobib, sama API võtme ja samade päringutega.
| Võrk | Base URL | Kuidas sinna jõuad |
|---|---|---|
| Avalik veeb | https://api.shannon-ai.com/v1 | Otse, HTTPS-i kaudu. |
| Krüpteeritud peegel | https://api-encrypted.shannon-ai.com/v1 | Otse, HTTPS-i kaudu. Sama API teine hostinimi. |
| Tor (onion-teenus) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Tor-kliendi kaudu: SOCKS5-proksi, vaikimisi aadressil 127.0.0.1:9050. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | I2P ruuteri kaudu: HTTP-proksi, vaikimisi aadressil 127.0.0.1:4444. |
- OpenAI SDK võtab base URL-i nii, nagu näidatud, koos
/v1. Anthropic SDK võtab selle ilma/v1. - Aadressi kontrollimiseks loe aadressi
https://api.shannon-ai.comvastuse päiseid:Onion-Locationkannab onion-aadressi jaX-I2P-LocationI2P aadressi. Onion-aadress algab sõnagashannon.
Millised marsruudid töötavad
Iga /v1 marsruut vastab kõigil neljal aadressil:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models ei vaja võtit, mistõttu on see kiire test, kas sinu proksi jõuab API-ni.
Mis on sama ja mis erineb
| Punkt | Sama? | Üksikasjad |
|---|---|---|
| Marsruudid, päringuväljad, vastused, vead | Sama | Igal aadressil samad. Ükski marsruut ei käitu hostinime järgi erinevalt. |
| API võti | Sama | Üks võti töötab igal aadressil, kujul Authorization: Bearer või x-api-key. Küpsiseid ei loeta /v1 all kunagi. |
| Saldo ja piirangud | Sama | Sama saldo ja sama piirang 120 päringut minutis. Mõlemat loetakse konto, mitte aadressi kohta. |
| Päringu suurus | Sama | Kuni 32 MiB päringu keha kohta. |
| Skeem | Erineb | https:// avalikus veebis ja peegli puhul. http:// aadressidel .onion ja .b32.i2p, kus võrk ise krüpteerib ühenduse otsast otsani. |
| Proksi | Erineb | Avalikus veebis puudub. Tori jaoks SOCKS5-proksi, I2P jaoks HTTP-proksi. Nime peab lahendama proksi, mitte sinu masin. |
| Kiirus | Erineb | Mõlemad võrgud lisavad igale baidile viivituse. I2P on neist aeglasem. |
Saldot ja piiranguid kirjeldab eraldi leht. Piirangud ja saldo
cURL Tori kaudu
Käivita oma masinas Tor-klient. See pakub SOCKS5-proksit aadressil 127.0.0.1:9050. --socks5-hostname annab .onion nime sellele proksile.
# 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 kaudu
Käivita oma masinas I2P ruuter. See pakub HTTP-proksit aadressil 127.0.0.1:4444, mis võtab .b32.i2p nime sellisena, nagu ta on.
# 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
SDK vajab kahte muudatust: võrgu base URL-i ja HTTP-klienti, mis läheb läbi proksi. Pythonis võtavad mõlemad ametlikud SDK-d httpx kliendi. SOCKS-proksi jaoks paigalda 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) Voogedastus ja keep-alive aeglastel ühendustel
Voogedastus töötab mõlemas võrgus. Kui voog on avatud ja mudelil pole veel midagi saata, saadab API keep-alive'i, et ühendus ei paistaks proksile ega sinu kliendile surnud.
| Lõpp-punkt | Keep-alive avatud voos | Saadetakse mudelitele |
|---|---|---|
/v1/chat/completions | Kommentaarirea (algab :) iga 15 sekundi järel. | Kõik mudelid |
/v1/messages | event: ping või kommentaarirea iga 15 sekundi järel. | Kõik mudelid |
/v1/responses | Kommentaarirea iga 15 sekundi järel. | Hostitud avatud kaaludega mudelid |
- Saada
"stream": true. Voogedastatud vastus hakkab saabuma niipea, kui mudel kirjutab, ja keep-alive näitab, et päringut töödeldakse. Mitte-voogedastatud vastus ei saada midagi enne, kui kogu vastus on valmis. - Anna kliendile pikk lugemise timeout. Näited kasutavad 600 sekundit. Alla 15 sekundi timeout võib voo kahe keep-alive'i vahel katkestada.
- Lase oma SSE-lugejal kommentaarread ja
pingsündmused vahele jätta. SDK-d teevad seda juba. - Ära saada päringut uuesti kohe, kui ühendus katkeb. API-ni jõudnud päring käib lõpuni ja arvestatakse, ka siis, kui ühendus on kadunud.
- Proovi teed kõigepealt käsuga
GET /v1/models. See ei vaja võtit ja tagastab lühikese JSON-loendi.
Ühenduse probleemid
| Sümptom | Põhjus ja lahendus |
|---|---|
Ühendus aadressiga 127.0.0.1:9050 või 127.0.0.1:4444 lükatakse tagasi | Sinu masinas ei tööta Tor-klienti ega I2P ruuterit või see kuulab teist porti. Tor Browser pakub oma SOCKS-proksit pordil 9150. |
Could not resolve host .onion nime puhul | Klient proovis nime ise lahendada. Kasuta cURL-is --socks5-hostname ja proksi URL-is socks5h://, et Tor-klient selle lahendaks. |
| I2P proksi vastab oma vealehega | Ruuter pole aadressi veel leidnud. Ruuter vajab pärast käivitamist mõned minutid. Proovi uuesti. |
401 teatega Missing authentication | Päring saabus ilma võtmeta. Saada sama päis, mis avalikus veebis. |
Kõik muud vead on samad mis avalikus veebis. Vigade käsitlus
Sinu võti ilma JavaScriptita
Shannonil on ka veebisait ilma JavaScriptita, mis on kättesaadav avalikus veebis, onion-teenusena ja eepsite'ina. Selle leht /keys näitab sinu API võtit ja laseb seda vahetada, nii et võtme saad kätte ka Torist või I2P-st lahkumata. encrypted.shannon-ai.com/keys
Selle veebisaidi aadressid kõigis kolmes võrgus on loetletud siin: Krüpteeritud ligipääs