Chuyển đến nội dung
Các endpoint được mã hóa, Tor và I2P

Các endpoint được mã hóa, Tor và I2P

API cũng được công bố dưới dạng onion service của Tor và eepsite của I2P. Cùng route, cùng key; chỉ base URL và proxy thay đổi.

Các base URL

Bốn địa chỉ dẫn đến cùng một API. Hãy dùng địa chỉ phù hợp với mạng của bạn, với cùng API key và cùng các yêu cầu.

Mạng Base URL Cách bạn truy cập
Web thông thường https://api.shannon-ai.com/v1 Trực tiếp, qua HTTPS.
Bản mirror được mã hóa https://api-encrypted.shannon-ai.com/v1 Trực tiếp, qua HTTPS. Một tên máy chủ thứ hai cho cùng API.
Tor (onion service) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Qua một client Tor: một SOCKS5 proxy, mặc định tại 127.0.0.1:9050.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 Qua một router I2P: một HTTP proxy, mặc định tại 127.0.0.1:4444.
  • SDK của OpenAI nhận base URL như được hiển thị, có /v1. SDK của Anthropic nhận nó không có /v1.
  • Để kiểm tra một địa chỉ, hãy đọc các header phản hồi của https://api.shannon-ai.com: Onion-Location mang địa chỉ onion và X-I2P-Location mang địa chỉ I2P. Địa chỉ onion bắt đầu bằng shannon.

Những route nào hoạt động

Mọi route /v1 đều trả lời trên cả bốn địa chỉ:

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

GET /v1/models không cần key, nên là cách thử nhanh xem proxy của bạn có truy cập được API hay không.

Điều gì giống nhau và điều gì khác nhau

Mục Giống nhau? Chi tiết
Các route, trường yêu cầu, phản hồi, lỗi Giống Giống nhau trên mọi địa chỉ. Không route nào hoạt động khác đi theo tên máy chủ.
API key Giống Một key dùng được trên mọi địa chỉ, dưới dạng Authorization: Bearer hoặc x-api-key. Cookie không bao giờ được đọc trên /v1.
Số dư và giới hạn Giống Cùng số dư và cùng giới hạn 120 yêu cầu mỗi phút. Cả hai đều được tính theo tài khoản, không theo địa chỉ.
Kích thước yêu cầu Giống Tối đa 32 MiB cho mỗi nội dung yêu cầu.
Scheme Khác https:// trên web thông thường và trên bản mirror. http:// trên các địa chỉ .onion và .b32.i2p, nơi chính mạng mã hóa kết nối từ đầu đến cuối.
Proxy Khác Không có trên web thông thường. SOCKS5 proxy cho Tor, HTTP proxy cho I2P. Tên phải được proxy phân giải, không phải máy của bạn.
Tốc độ Khác Cả hai mạng đều thêm độ trễ cho từng byte. I2P chậm hơn trong hai mạng.

Số dư và giới hạn được mô tả ở trang riêng. Giới hạn và số dư

cURL qua Tor

Hãy chạy một client Tor trên máy của bạn. Nó cung cấp một SOCKS5 proxy tại 127.0.0.1:9050. --socks5-hostname chuyển tên .onion cho proxy đó.

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

Hãy chạy một router I2P trên máy của bạn. Nó cung cấp một HTTP proxy tại 127.0.0.1:4444, nhận tên .b32.i2p nguyên trạng.

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 của SDK

SDK cần hai thay đổi: base URL của mạng, và một HTTP client đi qua proxy. Trong Python, cả hai SDK chính thức đều nhận một client httpx. Với SOCKS proxy, hãy cài 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 hoạt động trên cả hai mạng. Trong khi một stream đang mở và model chưa có gì để gửi, API gửi một keep-alive, để kết nối không trông như đã chết đối với proxy hay client của bạn.

Endpoint Keep-alive trên stream đang mở Được gửi cho
/v1/chat/completions Một dòng chú thích (bắt đầu bằng :) mỗi 15 giây. Mọi model
/v1/messages Một event: ping, hoặc một dòng chú thích, mỗi 15 giây. Mọi model
/v1/responses Một dòng chú thích mỗi 15 giây. Các model open-weight hosted
  • Hãy gửi "stream": true. Phản hồi streaming bắt đầu đến ngay khi model viết, và keep-alive cho thấy yêu cầu vẫn đang được xử lý. Phản hồi không streaming không gửi gì cho đến khi toàn bộ câu trả lời sẵn sàng.
  • Hãy đặt cho client một read timeout dài. Các ví dụ dùng 600 giây. Timeout ngắn hơn 15 giây có thể làm stream kết thúc giữa hai keep-alive.
  • Hãy để trình đọc SSE của bạn bỏ qua các dòng chú thích và sự kiện ping. Các SDK đã làm điều này.
  • Đừng gửi lại yêu cầu ngay khi kết nối bị ngắt. Yêu cầu đã đến API sẽ chạy đến hết và được tính phí, kể cả khi kết nối đã mất.
  • Hãy thử đường truyền bằng GET /v1/models trước. Nó không cần key và trả về một danh sách JSON ngắn.

Sự cố kết nối

Triệu chứng Nguyên nhân và cách sửa
Kết nối tới 127.0.0.1:9050 hoặc 127.0.0.1:4444 bị từ chối Không có client Tor hay router I2P nào đang chạy trên máy của bạn, hoặc nó lắng nghe trên cổng khác. Tor Browser cung cấp SOCKS proxy trên cổng 9150.
Could not resolve host cho tên .onion Client đã tự phân giải tên. Hãy dùng --socks5-hostname trong cURL và socks5h:// trong URL proxy, để client Tor phân giải nó.
I2P proxy trả lời bằng trang lỗi của chính nó Router chưa tìm thấy địa chỉ. Router cần vài phút sau khi khởi động. Hãy thử lại.
401 với Missing authentication Yêu cầu đến mà không có key. Hãy gửi cùng header như trên web thông thường.

Mọi lỗi khác giống như trên web thông thường. Xử lý lỗi

Key của bạn không cần JavaScript

Shannon cũng có một website không cần JavaScript, truy cập được trên web thông thường, dưới dạng onion service và dưới dạng eepsite. Trang /keys của nó hiển thị API key của bạn và cho phép bạn xoay vòng nó, nên bạn có thể lấy key mà không phải rời Tor hay I2P. encrypted.shannon-ai.com/keys

Địa chỉ của website đó trên cả ba mạng được liệt kê ở đây: Truy cập được mã hóa