Şifreli, Tor & I2P uç noktaları
API ayrıca bir Tor onion hizmeti ve bir I2P eepsite olarak da yayımlanır. Aynı yollar, aynı anahtar; yalnızca temel URL ve proxy değişir.
Temel URL'ler
Dört adres aynı API'ye çıkar. Ağınıza uyanı, aynı API anahtarı ve aynı isteklerle kullanın.
| Ağ | Temel URL | Nasıl ulaşılır |
|---|---|---|
| Açık web | https://api.shannon-ai.com/v1 | Doğrudan, HTTPS üzerinden. |
| Şifreli mirror | https://api-encrypted.shannon-ai.com/v1 | Doğrudan, HTTPS üzerinden. Aynı API için ikinci bir ana bilgisayar adı. |
| Tor (onion hizmeti) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Bir Tor istemcisi üzerinden: varsayılan olarak 127.0.0.1:9050 adresinde bir SOCKS5 proxy. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | Bir I2P router üzerinden: varsayılan olarak 127.0.0.1:4444 adresinde bir HTTP proxy. |
- Bir OpenAI SDK'sı temel URL'yi gösterildiği gibi,
/v1ile alır. Bir Anthropic SDK'sı/v1olmadan alır. - Bir adresi doğrulamak için
https://api.shannon-ai.comyanıt başlıklarını okuyun:Onion-Locationonion adresini,X-I2P-LocationI2P adresini taşır. Onion adresishannonile başlar.
Hangi yollar çalışır
Her /v1 yolu dört adresin hepsinde yanıt verir:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models anahtar gerektirmez; bu da proxy'nizin API'ye ulaştığını görmek için hızlı bir testtir.
Neyin aynı, neyin farklı olduğu
| Öğe | Aynı mı? | Ayrıntı |
|---|---|---|
| Yollar, istek alanları, yanıtlar, hatalar | Aynı | Her adreste aynı. Hiçbir yol ana bilgisayar adına göre farklı davranmaz. |
| API anahtarı | Aynı | Tek bir anahtar Authorization: Bearer ya da x-api-key olarak her adreste çalışır. /v1 üzerinde çerezler asla okunmaz. |
| Bakiye ve limitler | Aynı | Aynı bakiye ve dakikada 120 istek sınırı. İkisi de adres başına değil, hesap başına sayılır. |
| İstek boyutu | Aynı | İstek gövdesi başına en fazla 32 MiB. |
| Şema | Farklı | Açık webde ve mirror'da https://. Ağın bağlantıyı uçtan uca kendisinin şifrelediği .onion ve .b32.i2p adreslerinde http://. |
| Proxy | Farklı | Açık webde yok. Tor için SOCKS5 proxy, I2P için HTTP proxy. Adı makineniz değil, proxy çözmelidir. |
| Hız | Farklı | İki ağ da her bayta gecikme ekler. İkisinden yavaş olan I2P'dir. |
Bakiye ve limitler kendi sayfasında anlatılır. Limitler ve bakiye
Tor üzerinden cURL
Makinenizde bir Tor istemcisi çalıştırın. 127.0.0.1:9050 adresinde bir SOCKS5 proxy sunar. --socks5-hostname, .onion adını o proxy'ye devreder.
# 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"}]
}' I2P üzerinden cURL
Makinenizde bir I2P router çalıştırın. 127.0.0.1:4444 adresinde, .b32.i2p adını olduğu gibi kabul eden bir HTTP proxy sunar.
# 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 temel URL'si
Bir SDK için iki değişiklik gerekir: ağın temel URL'si ve proxy üzerinden giden bir HTTP istemcisi. Python'da resmi SDK'ların ikisi de bir httpx istemcisi alır. SOCKS proxy için httpx[socks] kurun.
# 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) Yavaş bağlantılarda streaming ve keep-alive
Streaming her iki ağda da çalışır. Bir stream açıkken ve modelin henüz gönderecek bir şeyi yokken API bir keep-alive gönderir; böylece bağlantı bir proxy'ye ya da istemcinize ölü görünmez.
| Uç nokta | Açık bir stream'de keep-alive | Gönderildiği |
|---|---|---|
/v1/chat/completions | Her 15 saniyede bir yorum satırı (: ile başlar). | Tüm modeller |
/v1/messages | Her 15 saniyede bir event: ping ya da bir yorum satırı. | Tüm modeller |
/v1/responses | Her 15 saniyede bir yorum satırı. | Host edilen açık ağırlıklı modeller |
"stream": truegönderin. Stream edilen bir yanıt, model yazar yazmaz gelmeye başlar ve keep-alive, isteğin hâlâ işlendiğini gösterir. Stream edilmeyen bir yanıt, yanıtın tamamı hazır olana kadar hiçbir şey göndermez.- İstemciye uzun bir okuma zaman aşımı verin. Örnekler 600 saniye kullanır. 15 saniyeden kısa bir zaman aşımı, bir stream'i iki keep-alive arasında bitirebilir.
- SSE okuyucunuzun yorum satırlarını ve
pingolaylarını atlamasına izin verin. SDK'lar bunu zaten yapar. - Bir bağlantı koptuğu anda isteği yeniden göndermeyin. API'ye ulaşan bir istek sonuna kadar çalışır ve bağlantı gitmiş olsa da sayılır.
- Yolu önce
GET /v1/modelsile deneyin. Anahtar gerektirmez ve kısa bir JSON listesi döndürür.
Bağlantı sorunları
| Belirti | Neden ve çözüm |
|---|---|
127.0.0.1:9050 veya 127.0.0.1:4444 bağlantısı reddedildi | Makinenizde Tor istemcisi ya da I2P router çalışmıyor veya başka bir portu dinliyor. Tor Browser SOCKS proxy'sini 9150 portunda sunar. |
.onion adı için Could not resolve host | İstemci adı kendisi çözmeye çalıştı. cURL'de --socks5-hostname, proxy URL'sinde socks5h:// kullanın; böylece adı Tor istemcisi çözer. |
| I2P proxy kendi hata sayfasıyla yanıt veriyor | Router adresi henüz bulamadı. Bir router'ın başladıktan sonra birkaç dakikaya ihtiyacı vardır. Yeniden deneyin. |
Missing authentication ile 401 | İstek anahtarsız geldi. Açık webdekiyle aynı başlığı gönderin. |
Diğer her hata açık webdekiyle aynıdır. Hata yönetimi
JavaScript olmadan anahtarınız
Shannon'ın ayrıca JavaScript olmadan çalışan, açık webde, onion hizmeti olarak ve eepsite olarak erişilebilen bir web sitesi vardır. /keys sayfası API anahtarınızı gösterir ve yenilemenizi sağlar; böylece Tor veya I2P'den ayrılmadan bir anahtar alabilirsiniz. encrypted.shannon-ai.com/keys
O web sitesinin üç ağdaki adresleri burada listelenir: Şifreli erişim