Endpoint ແບບເຂົ້າລະຫັດ, Tor ແລະ I2P
API ຍັງຖືກເຜີຍແຜ່ເປັນ Tor onion service ແລະ I2P eepsite. route ດຽວກັນ, key ດຽວກັນ; ມີແຕ່ base URL ແລະ proxy ທີ່ປ່ຽນ.
Base URL
ສີ່ທີ່ຢູ່ນຳໄປສູ່ API ດຽວກັນ. ໃຊ້ອັນທີ່ເໝາະກັບເຄືອຂ່າຍຂອງທ່ານ, ດ້ວຍ API key ດຽວກັນ ແລະ ຄຳຮ້ອງຂໍດຽວກັນ.
| ເຄືອຂ່າຍ | Base URL | ວິທີເຂົ້າເຖິງ |
|---|---|---|
| ເວັບທົ່ວໄປ | https://api.shannon-ai.com/v1 | ໂດຍກົງ, ຜ່ານ HTTPS. |
| Mirror ແບບເຂົ້າລະຫັດ | https://api-encrypted.shannon-ai.com/v1 | ໂດຍກົງ, ຜ່ານ HTTPS. ຊື່ host ທີສອງສຳລັບ API ດຽວກັນ. |
| Tor (onion service) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | ຜ່ານ client ຂອງ Tor: SOCKS5 proxy, ຄ່າເລີ່ມຕົ້ນທີ່ 127.0.0.1:9050. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | ຜ່ານ I2P router: HTTP proxy, ຄ່າເລີ່ມຕົ້ນທີ່ 127.0.0.1:4444. |
- SDK ຂອງ OpenAI ຮັບ base URL ຕາມທີ່ສະແດງ, ພ້ອມ
/v1. SDK ຂອງ Anthropic ຮັບມັນໂດຍບໍ່ມີ/v1. - ເພື່ອກວດທີ່ຢູ່, ໃຫ້ອ່ານ header ຄຳຕອບຂອງ
https://api.shannon-ai.com:Onion-Locationມີທີ່ຢູ່ onion ແລະX-I2P-Locationມີທີ່ຢູ່ I2P. ທີ່ຢູ່ onion ເລີ່ມດ້ວຍshannon.
route ໃດໃຊ້ໄດ້
ທຸກ route /v1 ຕອບໃນທັງສີ່ທີ່ຢູ່:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models ບໍ່ຕ້ອງໃຊ້ key, ເຊິ່ງເຮັດໃຫ້ມັນເປັນການທົດສອບດ່ວນວ່າ proxy ຂອງທ່ານເຂົ້າເຖິງ API.
ສິ່ງທີ່ຄືກັນ ແລະ ສິ່ງທີ່ຕ່າງກັນ
| ລາຍການ | ຄືກັນບໍ? | ລາຍລະອຽດ |
|---|---|---|
| Route, ຟີລດ໌ຄຳຮ້ອງຂໍ, ຄຳຕອບ, ຂໍ້ຜິດພາດ | ຄືກັນ | ຄືກັນໃນທຸກທີ່ຢູ່. ບໍ່ມີ route ທີ່ປະພຶດຕ່າງກັນຕາມຊື່ host. |
| API key | ຄືກັນ | key ໜຶ່ງອັນໃຊ້ໄດ້ໃນທຸກທີ່ຢູ່, ເປັນ Authorization: Bearer ຫຼື x-api-key. Cookie ບໍ່ເຄີຍຖືກອ່ານໃນ /v1. |
| ຍອດເງິນ ແລະ ຂີດຈຳກັດ | ຄືກັນ | ຍອດເງິນດຽວກັນ ແລະ ຂີດຈຳກັດ 120 ຄຳຮ້ອງຂໍຕໍ່ນາທີດຽວກັນ. ທັງສອງນັບຕໍ່ບັນຊີ, ບໍ່ແມ່ນຕໍ່ທີ່ຢູ່. |
| ຂະໜາດຄຳຮ້ອງຂໍ | ຄືກັນ | ສູງສຸດ 32 MiB ຕໍ່ body ຂອງຄຳຮ້ອງຂໍ. |
| Scheme | ແຕກຕ່າງ | https:// ໃນເວັບທົ່ວໄປ ແລະ ໃນ mirror. http:// ໃນທີ່ຢູ່ .onion ແລະ .b32.i2p, ບ່ອນທີ່ເຄືອຂ່າຍເອງເຂົ້າລະຫັດການເຊື່ອມຕໍ່ຈາກຕົ້ນທາງຮອດປາຍທາງ. |
| Proxy | ແຕກຕ່າງ | ບໍ່ມີໃນເວັບທົ່ວໄປ. SOCKS5 proxy ສຳລັບ Tor, HTTP proxy ສຳລັບ I2P. ຊື່ຕ້ອງຖືກແກ້ໂດຍ proxy, ບໍ່ແມ່ນໂດຍເຄື່ອງຂອງທ່ານ. |
| ຄວາມໄວ | ແຕກຕ່າງ | ທັງສອງເຄືອຂ່າຍເພີ່ມຄວາມຫຼ້າຊ້າໃຫ້ທຸກ byte. I2P ຊ້າກວ່າໃນສອງຢ່າງ. |
ຍອດເງິນ ແລະ ຂີດຈຳກັດຖືກອະທິບາຍໃນໜ້າຂອງຕົນເອງ. ຂີດຈຳກັດ ແລະ ຍອດເງິນ
cURL ຜ່ານ Tor
ຮັນ client ຂອງ Tor ໃນເຄື່ອງຂອງທ່ານ. ມັນສະເໜີ SOCKS5 proxy ທີ່ 127.0.0.1:9050. --socks5-hostname ສົ່ງຊື່ .onion ໃຫ້ proxy ນັ້ນ.
# 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 ຕາມທີ່ມັນເປັນ.
# 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 ຕ້ອງການສອງການປ່ຽນແປງ: base URL ຂອງເຄືອຂ່າຍ, ແລະ HTTP client ທີ່ຜ່ານ proxy. ໃນ Python SDK ທາງການທັງສອງຮັບ client 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) # pip install openai
import httpx
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1",
http_client=httpx.Client(proxy="http://127.0.0.1:4444", timeout=600),
)
stream = client.chat.completions.create(
model="shannon-3",
messages=[{"role": "user", "content": "Hello over I2P"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True) # pip install anthropic "httpx[socks]"
import anthropic
import httpx
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion",
http_client=httpx.Client(proxy="socks5h://127.0.0.1:9050", timeout=600),
)
with client.messages.stream(
model="shannon-1.6-lite",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello over Tor"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True) Streaming ແລະ keep-alive ໃນການເຊື່ອມຕໍ່ທີ່ຊ້າ
Streaming ໃຊ້ໄດ້ໃນທັງສອງເຄືອຂ່າຍ. ໃນຂະນະທີ່ stream ເປີດຢູ່ແລະ model ຍັງບໍ່ມີຫຍັງຈະສົ່ງ, API ສົ່ງ keep-alive, ເພື່ອໃຫ້ການເຊື່ອມຕໍ່ບໍ່ເບິ່ງຄືຕາຍສຳລັບ proxy ຫຼື client ຂອງທ່ານ.
| Endpoint | Keep-alive ໃນ stream ທີ່ເປີດຢູ່ | ສົ່ງສຳລັບ |
|---|---|---|
/v1/chat/completions | ແຖວ comment (ເລີ່ມດ້ວຍ :) ທຸກ 15 ວິນາທີ. | ທຸກ model |
/v1/messages | event: ping, ຫຼື ແຖວ comment, ທຸກ 15 ວິນາທີ. | ທຸກ model |
/v1/responses | ແຖວ comment ທຸກ 15 ວິນາທີ. | Hosted open-weight models |
- ສົ່ງ
"stream": true. ຄຳຕອບແບບ stream ເລີ່ມມາທັນທີທີ່ model ຂຽນ, ແລະ keep-alive ສະແດງວ່າຄຳຮ້ອງຂໍຍັງຖືກປະມວນຜົນຢູ່. ຄຳຕອບທີ່ບໍ່ stream ບໍ່ສົ່ງຫຍັງຈົນກວ່າຄຳຕອບທັງໝົດພ້ອມ. - ໃຫ້ client ມີ read timeout ທີ່ຍາວ. ຕົວຢ່າງໃຊ້ 600 ວິນາທີ. timeout ທີ່ສັ້ນກວ່າ 15 ວິນາທີອາດຕັດ stream ລະຫວ່າງສອງ keep-alive.
- ໃຫ້ຕົວອ່ານ SSE ຂອງທ່ານຂ້າມແຖວ comment ແລະ event
ping. SDK ເຮັດສິ່ງນີ້ຢູ່ແລ້ວ. - ຢ່າສົ່ງຄຳຮ້ອງຂໍອີກທັນທີທີ່ການເຊື່ອມຕໍ່ຂາດ. ຄຳຮ້ອງຂໍທີ່ຮອດ API ແລ້ວຈະເຮັດວຽກຈົນຈົບ ແລະ ຖືກນັບ, ເຖິງແມ່ນການເຊື່ອມຕໍ່ຈະຫາຍໄປແລ້ວກໍຕາມ.
- ທົດສອບເສັ້ນທາງດ້ວຍ
GET /v1/modelsກ່ອນ. ມັນບໍ່ຕ້ອງໃຊ້ key ແລະ ສົ່ງລາຍຊື່ JSON ສັ້ນໆກັບຄືນ.
ບັນຫາການເຊື່ອມຕໍ່
| ອາການ | ສາເຫດ ແລະ ວິທີແກ້ |
|---|---|
ການເຊື່ອມຕໍ່ໄປ 127.0.0.1:9050 ຫຼື 127.0.0.1:4444 ຖືກປະຕິເສດ | ບໍ່ມີ client ຂອງ Tor ຫຼື I2P router ຮັນຢູ່ໃນເຄື່ອງຂອງທ່ານ, ຫຼື ມັນຮັບຟັງຢູ່ port ອື່ນ. Tor Browser ສະເໜີ SOCKS proxy ຂອງມັນທີ່ port 9150. |
Could not resolve host ສຳລັບຊື່ .onion | client ພະຍາຍາມແກ້ຊື່ເອງ. ໃຊ້ --socks5-hostname ໃນ cURL ແລະ socks5h:// ໃນ URL ຂອງ proxy, ເພື່ອໃຫ້ client ຂອງ Tor ແກ້ຊື່. |
| I2P proxy ຕອບດ້ວຍໜ້າຂໍ້ຜິດພາດຂອງມັນເອງ | router ຍັງບໍ່ພົບທີ່ຢູ່. router ຕ້ອງການສອງສາມນາທີຫຼັງເລີ່ມ. ລອງໃໝ່. |
401 ພ້ອມ Missing authentication | ຄຳຮ້ອງຂໍມາຮອດໂດຍບໍ່ມີ key. ສົ່ງ header ດຽວກັນກັບໃນເວັບທົ່ວໄປ. |
ຂໍ້ຜິດພາດອື່ນທັງໝົດຄືກັນກັບໃນເວັບທົ່ວໄປ. ການຈັດການຂໍ້ຜິດພາດ
key ຂອງທ່ານໂດຍບໍ່ມີ JavaScript
Shannon ຍັງມີເວັບໄຊທ໌ທີ່ບໍ່ມີ JavaScript, ເຂົ້າເຖິງໄດ້ໃນເວັບທົ່ວໄປ, ເປັນ onion service ແລະ ເປັນ eepsite. ໜ້າ /keys ຂອງມັນສະແດງ API key ຂອງທ່ານ ແລະ ໃຫ້ທ່ານປ່ຽນ key ໄດ້, ດັ່ງນັ້ນທ່ານຈຶ່ງຮັບ key ໄດ້ໂດຍບໍ່ຕ້ອງອອກຈາກ Tor ຫຼື I2P. encrypted.shannon-ai.com/keys
ທີ່ຢູ່ຂອງເວັບໄຊທ໌ນັ້ນໃນທັງສາມເຄືອຂ່າຍຖືກລາຍຊື່ຢູ່ນີ້: ການເຂົ້າເຖິງແບບເຂົ້າລະຫັດ