Към съдържанието
Криптирани ендпоинти, Tor и I2P

Криптирани ендпоинти, Tor и I2P

API се публикува и като onion услуга на Tor и като eepsite на I2P. Същите маршрути, същият ключ; променят се само базовият URL и проксито.

Базови URL

Четири адреса водят до едно и също API. Използвайте този, който подхожда на мрежата Ви, със същия API ключ и същите заявки.

Мрежа Базов URL Как стигате до него
Обикновен интернет https://api.shannon-ai.com/v1 Директно, през HTTPS.
Криптирано огледало https://api-encrypted.shannon-ai.com/v1 Директно, през HTTPS. Второ име на хост за същото API.
Tor (onion услуга) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 През Tor клиент: SOCKS5 прокси, по подразбиране на 127.0.0.1:9050.
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 През I2P рутер: HTTP прокси, по подразбиране на 127.0.0.1:4444.
  • SDK на OpenAI приема базовия URL както е показан, с /v1. SDK на Anthropic го приема без /v1.
  • За да проверите адрес, прочетете хедърите на отговора на https://api.shannon-ai.com: Onion-Location носи onion адреса, а X-I2P-Location носи I2P адреса. Onion адресът започва с shannon.

Кои маршрути работят

Всеки маршрут /v1 отговаря на всичките четири адреса:

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

GET /v1/models не изисква ключ, което го прави бърз тест дали проксито Ви стига до API.

Какво е еднакво и какво се различава

Елемент Същото? Подробности
Маршрути, полета на заявките, отговори, грешки Същото Еднакви на всеки адрес. Никой маршрут не се държи различно според името на хоста.
API ключ Същото Един ключ работи на всеки адрес, като Authorization: Bearer или x-api-key. Бисквитките никога не се четат на /v1.
Баланс и ограничения Същото Същият баланс и същото ограничение от 120 заявки в минута. И двете се броят на акаунт, а не на адрес.
Размер на заявката Същото До 32 MiB на тяло на заявка.
Схема Различно https:// в обикновения интернет и на огледалото. http:// на адресите .onion и .b32.i2p, където самата мрежа криптира връзката от край до край.
Прокси Различно Няма в обикновения интернет. SOCKS5 прокси за Tor, HTTP прокси за I2P. Името трябва да се разрешава от проксито, а не от Вашата машина.
Скорост Различно И двете мрежи добавят забавяне към всеки байт. I2P е по-бавната от двете.

Балансът и ограниченията са описани на собствена страница. Ограничения и баланс

cURL през Tor

Пуснете Tor клиент на машината си. Той предлага SOCKS5 прокси на 127.0.0.1:9050. --socks5-hostname предава името .onion на това прокси.

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 през I2P

Пуснете I2P рутер на машината си. Той предлага HTTP прокси на 127.0.0.1:4444, което приема името .b32.i2p такова, каквото е.

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

Базов URL за SDK

SDK се нуждае от две промени: базовия URL на мрежата и HTTP клиент, който минава през проксито. В Python и двата официални SDK приемат клиент httpx. За SOCKS прокси инсталирайте 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)

Стрийминг работи и през двете мрежи. Докато стриймът е отворен и моделът още няма какво да изпрати, API изпраща keep-alive, така че връзката да не изглежда мъртва за прокси или за Вашия клиент.

Ендпоинт Keep-alive на отворен стрийм Изпраща се за
/v1/chat/completions Коментарен ред (започва с :) на всеки 15 секунди. Всички модели
/v1/messages event: ping или коментарен ред на всеки 15 секунди. Всички модели
/v1/responses Коментарен ред на всеки 15 секунди. Хоствани open-weight модели
  • Изпратете "stream": true. Отговор със стрийминг започва да пристига веднага щом моделът пише, а keep-alive показва, че заявката още се обработва. Отговор без стрийминг не изпраща нищо, докато целият отговор не е готов.
  • Задайте на клиента дълъг timeout за четене. Примерите използват 600 секунди. Timeout, по-кратък от 15 секунди, може да прекрати стрийм между два keep-alive.
  • Накарайте SSE четеца си да пропуска коментарните редове и събитията ping. SDK вече го правят.
  • Не изпращайте отново заявка в момента, в който връзката падне. Заявка, която е стигнала до API, се изпълнява до края и се брои, дори когато връзката е изчезнала.
  • Първо тествайте пътя с GET /v1/models. Не изисква ключ и връща кратък JSON списък.

Проблеми с връзката

Симптом Причина и решение
Връзката към 127.0.0.1:9050 или 127.0.0.1:4444 е отказана На машината Ви не работи Tor клиент или I2P рутер или той слуша на друг порт. Tor Browser предлага своето SOCKS прокси на порт 9150.
Could not resolve host за името .onion Клиентът е опитал сам да разреши името. Използвайте --socks5-hostname в cURL и socks5h:// в URL на прокси, за да го разреши Tor клиентът.
I2P проксито отговаря със собствена страница за грешка Рутерът още не е намерил адреса. На рутера са нужни няколко минути след стартиране. Опитайте отново.
401 с Missing authentication Заявката е пристигнала без ключ. Изпратете същия хедър както в обикновения интернет.

Всяка друга грешка е същата като в обикновения интернет. Обработка на грешки

Вашият ключ без JavaScript

Shannon има и уебсайт без JavaScript, достъпен в обикновения интернет, като onion услуга и като eepsite. Неговата страница /keys показва Вашия API ключ и Ви позволява да го смените, така че можете да вземете ключ, без да напускате Tor или I2P. encrypted.shannon-ai.com/keys

Адресите на този уебсайт във всичките три мрежи са изброени тук: Криптиран достъп