ข้ามไปยังเนื้อหา
Endpoint แบบเข้ารหัส, Tor และ I2P

Endpoint แบบเข้ารหัส, Tor และ I2P

API ยังเผยแพร่เป็น Tor onion service และ I2P eepsite ด้วย เส้นทางเดียวกัน คีย์เดียวกัน เปลี่ยนเพียง base URL และ proxy

Base URL

มีสี่ที่อยู่ที่นำไปสู่ API เดียวกัน ใช้อันที่เหมาะกับเครือข่ายของคุณ ด้วย API key เดียวกันและคำขอเดียวกัน

เครือข่าย Base URL วิธีเข้าถึง
Clear web https://api.shannon-ai.com/v1 เข้าโดยตรงผ่าน HTTPS
Mirror แบบเข้ารหัส https://api-encrypted.shannon-ai.com/v1 เข้าโดยตรงผ่าน HTTPS ชื่อโฮสต์ที่สองของ API เดียวกัน
Tor (onion service) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 ผ่านไคลเอนต์ Tor: SOCKS5 proxy ที่ค่าเริ่มต้นคือ 127.0.0.1:9050
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 ผ่าน I2P router: HTTP proxy ที่ค่าเริ่มต้นคือ 127.0.0.1:4444
  • OpenAI SDK ใช้ base URL ตามที่แสดง พร้อม /v1 ส่วน Anthropic SDK ใช้โดยไม่มี /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 ไม่ต้องใช้คีย์ จึงเป็นการทดสอบอย่างรวดเร็วว่า proxy ของคุณเข้าถึง API ได้

อะไรเหมือนและอะไรต่าง

รายการ เหมือนกันหรือไม่ รายละเอียด
เส้นทาง ฟิลด์คำขอ คำตอบ ข้อผิดพลาด เหมือนกัน เหมือนกันทุกที่อยู่ ไม่มีเส้นทางใดทำงานต่างกันตามชื่อโฮสต์
API key เหมือนกัน คีย์เดียวใช้ได้กับทุกที่อยู่ ในรูป Authorization: Bearer หรือ x-api-key ระบบไม่อ่านคุกกี้บน /v1 เลย
ยอดคงเหลือและขีดจำกัด เหมือนกัน ยอดคงเหลือเดียวกันและขีดจำกัด 120 คำขอต่อนาทีเดียวกัน ทั้งสองนับตามบัญชี ไม่ใช่ตามที่อยู่
ขนาดคำขอ เหมือนกัน ไม่เกิน 32 MiB ต่อ request body
Scheme ต่างกัน https:// บน clear web และบน mirror ส่วน http:// บนที่อยู่ .onion และ .b32.i2p ซึ่งตัวเครือข่ายเข้ารหัสการเชื่อมต่อแบบ end-to-end เอง
Proxy ต่างกัน ไม่มีบน clear web SOCKS5 proxy สำหรับ Tor, HTTP proxy สำหรับ I2P ชื่อต้องถูก resolve โดย proxy ไม่ใช่โดยเครื่องของคุณ
ความเร็ว ต่างกัน ทั้งสองเครือข่ายเพิ่มความหน่วงให้ทุกไบต์ I2P ช้ากว่า

ยอดคงเหลือและขีดจำกัดอธิบายไว้ในหน้าของตัวเอง ขีดจำกัดและยอดคงเหลือ

cURL ผ่าน Tor

รันไคลเอนต์ Tor บนเครื่องของคุณ ซึ่งให้ SOCKS5 proxy ที่ 127.0.0.1:9050 --socks5-hostname ส่งชื่อ .onion ให้ 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 ผ่าน I2P

รัน I2P router บนเครื่องของคุณ ซึ่งให้ HTTP proxy ที่ 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"}]
  }'

SDK base URL

SDK ต้องเปลี่ยนสองอย่าง: base URL ของเครือข่าย และ HTTP ไคลเอนต์ที่ส่งผ่าน proxy ใน Python SDK อย่างเป็นทางการทั้งสองรับไคลเอนต์ httpx สำหรับ SOCKS proxy ให้ติดตั้ง 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 เพื่อให้การเชื่อมต่อไม่ดูเหมือนตายสำหรับ proxy หรือไคลเอนต์ของคุณ

เอนด์พอยต์ Keep-alive บนสตรีมที่เปิดอยู่ ส่งให้
/v1/chat/completions บรรทัดคอมเมนต์ (ขึ้นต้นด้วย :) ทุก 15 วินาที ทุกโมเดล
/v1/messages event: ping หรือบรรทัดคอมเมนต์ ทุก 15 วินาที ทุกโมเดล
/v1/responses บรรทัดคอมเมนต์ทุก 15 วินาที โมเดล open-weight ที่โฮสต์
  • ส่ง "stream": true คำตอบแบบสตรีมเริ่มมาถึงทันทีที่โมเดลเขียน และ keep-alive แสดงว่าคำขอยังคงถูกประมวลผลอยู่ คำตอบที่ไม่สตรีมจะไม่ส่งอะไรจนกว่าคำตอบทั้งหมดจะพร้อม
  • ตั้ง read timeout ของไคลเอนต์ให้นาน ตัวอย่างใช้ 600 วินาที timeout ที่สั้นกว่า 15 วินาทีอาจทำให้สตรีมจบระหว่างสอง keep-alive
  • ให้ตัวอ่าน SSE ของคุณข้ามบรรทัดคอมเมนต์และ event ping SDK ทำเช่นนี้อยู่แล้ว
  • อย่าส่งคำขอซ้ำทันทีที่การเชื่อมต่อหลุด คำขอที่ไปถึง API แล้วจะทำงานจนจบและถูกนับ แม้การเชื่อมต่อจะหายไป
  • ทดสอบเส้นทางด้วย GET /v1/models ก่อน ไม่ต้องใช้คีย์และส่งคืนรายการ JSON สั้นๆ

ปัญหาการเชื่อมต่อ

อาการ สาเหตุและวิธีแก้
การเชื่อมต่อไปยัง 127.0.0.1:9050 หรือ 127.0.0.1:4444 ถูกปฏิเสธ ไม่มีไคลเอนต์ Tor หรือ I2P router ทำงานบนเครื่องของคุณ หรือฟังอยู่ที่พอร์ตอื่น Tor Browser ให้ SOCKS proxy ที่พอร์ต 9150
Could not resolve host สำหรับชื่อ .onion ไคลเอนต์พยายาม resolve ชื่อเอง ให้ใช้ --socks5-hostname ใน cURL และ socks5h:// ใน URL ของ proxy เพื่อให้ไคลเอนต์ Tor เป็นผู้ resolve
I2P proxy ตอบด้วยหน้าข้อผิดพลาดของตัวเอง router ยังไม่พบที่อยู่ router ต้องใช้เวลาไม่กี่นาทีหลังเริ่มทำงาน ให้ลองอีกครั้ง
401 พร้อม Missing authentication คำขอมาถึงโดยไม่มีคีย์ ให้ส่งเฮดเดอร์เดียวกับบน clear web

ข้อผิดพลาดอื่นทุกอย่างเหมือนกับบน clear web การจัดการข้อผิดพลาด

คีย์ของคุณโดยไม่ใช้ JavaScript

Shannon ยังมีเว็บไซต์ที่ไม่ใช้ JavaScript เข้าถึงได้บน clear web เป็น onion service และเป็น eepsite หน้า /keys ของเว็บไซต์นั้นแสดง API key ของคุณและให้หมุนเวียนคีย์ (rotate) ได้ คุณจึงรับคีย์ได้โดยไม่ต้องออกจาก Tor หรือ I2P encrypted.shannon-ai.com/keys

ที่อยู่ของเว็บไซต์นั้นบนทั้งสามเครือข่ายแสดงไว้ที่นี่: การเข้าถึงแบบเข้ารหัส