Langkau ke kandungan
Endpoint disulitkan, Tor & I2P

Endpoint disulitkan, Tor & I2P

API ini juga diterbitkan sebagai perkhidmatan onion Tor dan eepsite I2P. Laluan yang sama, kunci yang sama; hanya base URL dan proksi yang berubah.

Base URL

Empat alamat menuju ke API yang sama. Gunakan yang sesuai dengan rangkaian anda, dengan kunci API dan permintaan yang sama.

Rangkaian Base URL Cara anda mencapainya
Web biasa https://api.shannon-ai.com/v1 Terus, melalui HTTPS.
Cermin disulitkan https://api-encrypted.shannon-ai.com/v1 Terus, melalui HTTPS. Nama hos kedua untuk API yang sama.
Tor (perkhidmatan onion) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Melalui klien Tor: proksi SOCKS5, secara lalai di 127.0.0.1:9050.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Melalui penghala I2P: proksi HTTP, secara lalai di 127.0.0.1:4444.
  • SDK OpenAI menerima base URL seperti yang ditunjukkan, dengan /v1. SDK Anthropic menerimanya tanpa /v1.
  • Untuk menyemak alamat, baca header balasan https://api.shannon-ai.com: Onion-Location membawa alamat onion dan X-I2P-Location alamat I2P. Alamat onion bermula dengan shannon.

Laluan mana yang berfungsi

Setiap laluan /v1 menjawab pada keempat-empat 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, menjadikannya ujian pantas bahawa proksi anda sampai ke API.

Apa yang sama dan apa yang berbeza

Perkara Sama? Butiran
Laluan, medan permintaan, balasan, ralat Sama Sama pada setiap alamat. Tiada laluan yang berkelakuan berbeza mengikut nama hos.
Kunci API Sama Satu kunci berfungsi pada setiap alamat, sebagai Authorization: Bearer atau x-api-key. Kuki tidak pernah dibaca pada /v1.
Baki dan had Sama Baki yang sama dan had 120 permintaan seminit yang sama. Kedua-duanya dikira bagi setiap akaun, bukan bagi setiap alamat.
Saiz permintaan Sama Sehingga 32 MiB bagi setiap badan permintaan.
Skema Berbeza https:// pada web biasa dan pada cermin. http:// pada alamat .onion dan .b32.i2p, tempat rangkaian itu sendiri menyulitkan sambungan hujung ke hujung.
Proksi Berbeza Tiada pada web biasa. Proksi SOCKS5 untuk Tor, proksi HTTP untuk I2P. Nama mesti diselesaikan oleh proksi, bukan oleh mesin anda.
Kelajuan Berbeza Kedua-dua rangkaian menambah kelewatan pada setiap bait. I2P lebih perlahan daripada keduanya.

Baki dan had diterangkan pada halamannya sendiri. Had dan baki

cURL melalui Tor

Jalankan klien Tor pada mesin anda. Ia menawarkan proksi SOCKS5 di 127.0.0.1:9050. --socks5-hostname menyerahkan nama .onion kepada proksi 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 penghala I2P pada mesin anda. Ia menawarkan proksi HTTP di 127.0.0.1:4444, yang menerima nama .b32.i2p seadanya.

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 rangkaian itu, dan klien HTTP yang melalui proksi. Dalam Python, kedua-dua SDK rasmi menerima klien httpx. Untuk proksi SOCKS, pasang 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 pada kedua-dua rangkaian. Semasa stream terbuka dan model belum ada apa-apa untuk dihantar, API menghantar keep-alive, supaya sambungan tidak kelihatan mati kepada proksi atau klien anda.

Endpoint Keep-alive pada stream yang terbuka Dihantar untuk
/v1/chat/completions Baris komen (bermula dengan :) setiap 15 saat. Semua model
/v1/messages event: ping, atau baris komen, setiap 15 saat. Semua model
/v1/responses Baris komen setiap 15 saat. Model open-weight yang dihoskan
  • Hantar "stream": true. Balasan yang di-stream mula tiba sebaik sahaja model menulis, dan keep-alive menunjukkan bahawa permintaan masih diproses. Balasan yang tidak di-stream tidak menghantar apa-apa sehingga seluruh jawapan siap.
  • Berikan klien tamat masa baca yang panjang. Sampel menggunakan 600 saat. Tamat masa yang lebih pendek daripada 15 saat boleh menamatkan stream di antara dua keep-alive.
  • Biarkan pembaca SSE anda melangkau baris komen dan peristiwa ping. SDK sudah berbuat demikian.
  • Jangan hantar semula permintaan sebaik sahaja sambungan terputus. Permintaan yang telah sampai kepada API berjalan sehingga selesai dan dikira, juga apabila sambungan sudah tiada.
  • Uji laluan dengan GET /v1/models dahulu. Ia tidak memerlukan kunci dan memulangkan senarai JSON yang pendek.

Masalah sambungan

Gejala Punca dan pembetulan
Sambungan ke 127.0.0.1:9050 atau 127.0.0.1:4444 ditolak Tiada klien Tor atau penghala I2P berjalan pada mesin anda, atau ia mendengar pada port lain. Tor Browser menawarkan proksi SOCKS-nya pada port 9150.
Could not resolve host untuk nama .onion Klien cuba menyelesaikan nama itu sendiri. Gunakan --socks5-hostname dalam cURL dan socks5h:// dalam URL proksi, supaya klien Tor menyelesaikannya.
Proksi I2P menjawab dengan halaman ralatnya sendiri Penghala belum menemui alamat itu. Penghala memerlukan beberapa minit selepas bermula. Cuba lagi.
401 dengan Missing authentication Permintaan tiba tanpa kunci. Hantar header yang sama seperti pada web biasa.

Setiap ralat lain adalah sama seperti pada web biasa. Pengendalian Ralat

Kunci anda tanpa JavaScript

Shannon juga mempunyai laman web tanpa JavaScript, yang boleh dicapai pada web biasa, sebagai perkhidmatan onion dan sebagai eepsite. Halaman /keysnya menunjukkan kunci API anda dan membolehkan anda memutarnya, jadi anda boleh mendapatkan kunci tanpa meninggalkan Tor atau I2P. encrypted.shannon-ai.com/keys

Alamat laman web itu pada ketiga-tiga rangkaian disenaraikan di sini: Akses disulitkan