Langsung ke konten
Endpoint terenkripsi, Tor & I2P

Endpoint terenkripsi, Tor & I2P

API ini juga dipublikasikan sebagai layanan onion Tor dan eepsite I2P. Route sama, kunci sama; hanya base URL dan proxy yang berubah.

Base URL

Empat alamat mengarah ke API yang sama. Gunakan yang cocok dengan jaringan Anda, dengan kunci API yang sama dan permintaan yang sama.

Jaringan Base URL Cara menjangkaunya
Web biasa https://api.shannon-ai.com/v1 Langsung, melalui HTTPS.
Mirror terenkripsi https://api-encrypted.shannon-ai.com/v1 Langsung, melalui HTTPS. Nama host kedua untuk API yang sama.
Tor (layanan onion) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Melalui klien Tor: proxy SOCKS5, secara bawaan di 127.0.0.1:9050.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Melalui router I2P: proxy HTTP, secara bawaan di 127.0.0.1:4444.
  • SDK OpenAI memakai base URL seperti yang ditampilkan, dengan /v1. SDK Anthropic memakainya tanpa /v1.
  • Untuk memeriksa sebuah alamat, baca header balasan https://api.shannon-ai.com: Onion-Location membawa alamat onion dan X-I2P-Location alamat I2P. Alamat onion diawali shannon.

Route mana yang berfungsi

Setiap route /v1 menjawab di keempat alamat:

  • POST /v1/chat/completions
  • POST /v1/responses
  • POST /v1/messages
  • POST /v1/messages/count_tokens
  • POST /v1/tokenize
  • GET /v1/models

GET /v1/models tidak memerlukan kunci, sehingga menjadi uji cepat bahwa proxy Anda menjangkau API.

Apa yang sama dan apa yang berbeda

Item Sama? Detail
Route, field permintaan, balasan, error Sama Sama di setiap alamat. Tidak ada route yang berperilaku berbeda menurut nama host.
Kunci API Sama Satu kunci berfungsi di setiap alamat, sebagai Authorization: Bearer atau x-api-key. Cookie tidak pernah dibaca pada /v1.
Saldo dan batas Sama Saldo yang sama dan batas 120 permintaan per menit yang sama. Keduanya dihitung per akun, bukan per alamat.
Ukuran permintaan Sama Hingga 32 MiB per body permintaan.
Skema Berbeda https:// pada web biasa dan pada mirror. http:// pada alamat .onion dan .b32.i2p, tempat jaringan itu sendiri mengenkripsi koneksi dari ujung ke ujung.
Proxy Berbeda Tidak ada pada web biasa. Proxy SOCKS5 untuk Tor, proxy HTTP untuk I2P. Nama harus di-resolve oleh proxy, bukan oleh mesin Anda.
Kecepatan Berbeda Kedua jaringan menambah penundaan pada setiap byte. I2P lebih lambat dari keduanya.

Saldo dan batas dijelaskan di halamannya sendiri. Batas dan saldo

cURL melalui Tor

Jalankan klien Tor di mesin Anda. Klien menyediakan proxy SOCKS5 di 127.0.0.1:9050. --socks5-hostname menyerahkan nama .onion ke proxy itu.

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

Jalankan router I2P di mesin Anda. Router menyediakan proxy HTTP di 127.0.0.1:4444, yang menerima nama .b32.i2p apa adanya.

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

Base URL SDK

SDK memerlukan dua perubahan: base URL jaringan tersebut, dan klien HTTP yang melewati proxy. Di Python, kedua SDK resmi menerima klien httpx. Untuk proxy SOCKS, instal 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 berfungsi di kedua jaringan. Selama stream terbuka dan model belum punya apa pun untuk dikirim, API mengirim keep-alive, agar koneksi tidak tampak mati bagi proxy atau klien Anda.

Endpoint Keep-alive pada stream yang terbuka Dikirim untuk
/v1/chat/completions Baris komentar (diawali :) setiap 15 detik. Semua model
/v1/messages Sebuah event: ping, atau baris komentar, setiap 15 detik. Semua model
/v1/responses Baris komentar setiap 15 detik. Model open-weight hosted
  • Kirim "stream": true. Balasan stream mulai datang begitu model menulis, dan keep-alive menunjukkan bahwa permintaan masih dikerjakan. Balasan tanpa stream tidak mengirim apa pun sampai seluruh jawaban siap.
  • Beri klien read timeout yang panjang. Contoh memakai 600 detik. Timeout yang lebih pendek dari 15 detik dapat memutus stream di antara dua keep-alive.
  • Biarkan pembaca SSE Anda melewati baris komentar dan event ping. SDK sudah melakukannya.
  • Jangan kirim ulang permintaan begitu koneksi terputus. Permintaan yang sudah sampai ke API berjalan sampai selesai dan dihitung, juga ketika koneksinya sudah hilang.
  • Uji jalurnya lebih dulu dengan GET /v1/models. Tidak memerlukan kunci dan mengembalikan daftar JSON yang pendek.

Masalah koneksi

Gejala Penyebab dan solusi
Koneksi ke 127.0.0.1:9050 atau 127.0.0.1:4444 ditolak Tidak ada klien Tor atau router I2P yang berjalan di mesin Anda, atau ia mendengarkan di port lain. Tor Browser menyediakan proxy SOCKS-nya di port 9150.
Could not resolve host untuk nama .onion Klien mencoba me-resolve nama itu sendiri. Gunakan --socks5-hostname di cURL dan socks5h:// di URL proxy, agar klien Tor yang me-resolve-nya.
Proxy I2P menjawab dengan halaman error miliknya sendiri Router belum menemukan alamatnya. Router membutuhkan beberapa menit setelah dinyalakan. Coba lagi.
401 dengan Missing authentication Permintaan tiba tanpa kunci. Kirim header yang sama seperti di web biasa.

Setiap error lainnya sama seperti di web biasa. Penanganan kesalahan

Kunci Anda tanpa JavaScript

Shannon juga memiliki situs web tanpa JavaScript, dapat dijangkau di web biasa, sebagai layanan onion, dan sebagai eepsite. Halaman /keys-nya menampilkan kunci API Anda dan memungkinkan Anda merotasinya, sehingga Anda bisa mendapatkan kunci tanpa meninggalkan Tor atau I2P. encrypted.shannon-ai.com/keys

Alamat situs web itu di ketiga jaringan tercantum di sini: Akses terenkripsi