အကြောင်းအရာသို့ ကျော်သွားရန်
Encrypted, Tor နှင့် I2P endpoints

Encrypted, Tor နှင့် I2P endpoints

API ကို Tor onion service နှင့် I2P eepsite အဖြစ်လည်း ထုတ်ပြန်ထားသည်။ route တူ၊ key တူ၊ base URL နှင့် proxy သာ ပြောင်းလဲသည်။

Base URLs

လိပ်စာလေးခုသည် တူညီသော API သို့ ဦးတည်သည်။ သင့်ကွန်ရက်နှင့် ကိုက်ညီသည့်တစ်ခုကို တူညီသော API key နှင့် တူညီသော request များဖြင့် သုံးပါ။

ကွန်ရက် Base URL ရောက်ရှိပုံ
Clear web https://api.shannon-ai.com/v1 တိုက်ရိုက်၊ HTTPS ဖြင့်။
Encrypted mirror https://api-encrypted.shannon-ai.com/v1 တိုက်ရိုက်၊ HTTPS ဖြင့်။ တူညီသော API အတွက် host အမည် ဒုတိယတစ်ခု။
Tor (onion service) http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 Tor client မှတစ်ဆင့် ချိတ်ဆက်ပါ- SOCKS5 proxy ဖြစ်ပြီး ပုံသေအားဖြင့် 127.0.0.1:9050 တွင် ရှိသည်။
I2P (eepsite) http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 I2P router မှတစ်ဆင့်- HTTP proxy၊ default အားဖြင့် 127.0.0.1:4444 တွင်။
  • OpenAI SDK သည် base URL ကို /v1 ပါသည့်အတိုင်း လက်ခံသည်။ Anthropic SDK သည် /v1 မပါဘဲ လက်ခံသည်။
  • လိပ်စာကို စစ်ဆေးရန် https://api.shannon-ai.com ၏ ပြန်ကြားချက် header များကို ဖတ်ပါ- Onion-Location တွင် onion လိပ်စာ ပါပြီး X-I2P-Location တွင် I2P လိပ်စာ ပါသည်။ onion လိပ်စာသည် shannon ဖြင့် စသည်။

အလုပ်လုပ်သော routes များ

/v1 route တိုင်းသည် လိပ်စာလေးခုလုံးတွင် ဖြေကြားသည်-

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

GET /v1/models သည် key မလိုအပ်သဖြင့် သင့် proxy က API သို့ ရောက်ကြောင်း အမြန်စမ်းသပ်ရန် သင့်တော်သည်။

တူညီသည့်အရာနှင့် ကွဲပြားသည့်အရာ

အကြောင်းအရာ တူသလား? အသေးစိတ်
Routes၊ request fields၊ ပြန်ကြားချက်များ၊ အမှားများ တူညီသည် လိပ်စာတိုင်းတွင် တူညီသည်။ မည်သည့် route မျှ host အမည်အလိုက် ကွဲပြားစွာ မပြုမူပါ။
API key တူညီသည် key တစ်ခုသည် Authorization: Bearer သို့မဟုတ် x-api-key အဖြစ် လိပ်စာတိုင်းတွင် အလုပ်လုပ်သည်။ /v1 တွင် cookie များကို မည်သည့်အခါမျှ မဖတ်ပါ။
လက်ကျန်ငွေနှင့် ကန့်သတ်ချက်များ တူညီသည် တူညီသော လက်ကျန်ငွေနှင့် တစ်မိနစ်လျှင် request 120 ကန့်သတ်ချက်။ နှစ်ခုလုံးကို လိပ်စာအလိုက် မဟုတ်ဘဲ account အလိုက် ရေတွက်သည်။
Request အရွယ်အစား တူညီသည် request body တစ်ခုလျှင် 32 MiB အထိ။
Scheme ကွဲပြားသည် clear web နှင့် mirror တွင် https://။ ကွန်ရက်ကိုယ်တိုင်က ချိတ်ဆက်မှုကို အစမှအဆုံး encrypt လုပ်ပေးသော .onion နှင့် .b32.i2p လိပ်စာများတွင် http://။
Proxy ကွဲပြားသည် clear web တွင် မရှိပါ။ Tor အတွက် SOCKS5 proxy၊ I2P အတွက် HTTP proxy။ အမည်ကို သင့်စက်မဟုတ်ဘဲ proxy က ဖြေရှင်းရမည်။
မြန်နှုန်း ကွဲပြားသည် ကွန်ရက်နှစ်ခုစလုံးသည် byte တိုင်းတွင် နှောင့်နှေးမှု ထပ်ထည့်သည်။ I2P က နှစ်ခုအနက် ပိုနှေးသည်။

လက်ကျန်ငွေနှင့် ကန့်သတ်ချက်များကို ၎င်းတို့၏ ကိုယ်ပိုင်စာမျက်နှာတွင် ဖော်ပြထားသည်။ ကန့်သတ်ချက်များနှင့် လက်ကျန်ငွေ

Tor မှတစ်ဆင့် cURL

သင့်စက်တွင် Tor client တစ်ခုကို run ပါ။ ၎င်းသည် 127.0.0.1:9050 တွင် SOCKS5 proxy ကို ပေးသည်။ --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"}]
  }'

I2P မှတစ်ဆင့် cURL

သင့်စက်တွင် I2P router တစ်ခုကို run ပါ။ ၎င်းသည် .b32.i2p အမည်ကို ရှိသည့်အတိုင်း လက်ခံသော 127.0.0.1:4444 ရှိ HTTP proxy ကို ပေးသည်။

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 နှင့် proxy ကို ဖြတ်သွားသော HTTP client တစ်ခု။ Python တွင် ရုံးသုံး SDK နှစ်ခုလုံးသည် httpx client ကို လက်ခံသည်။ SOCKS proxy အတွက် httpx[socks] ကို install လုပ်ပါ။

# 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 သည် ကွန်ရက်နှစ်ခုလုံးတွင် အလုပ်လုပ်သည်။ stream ပွင့်နေပြီး model က ပို့စရာ မရှိသေးစဉ် API က keep-alive ပို့သဖြင့် proxy သို့မဟုတ် သင့် client အတွက် ချိတ်ဆက်မှု သေနေသကဲ့သို့ မထင်ရပါ။

Endpoint ဖွင့်ထားသော stream ကို မပိတ်စေရန် ပို့သော Keep-alive ပို့သည့်အခါ
/v1/chat/completions comment စာကြောင်း (: ဖြင့်စသည်) ကို 15 စက္ကန့်တိုင်း။ Model အားလုံး
/v1/messages event: ping သို့မဟုတ် comment စာကြောင်းကို 15 စက္ကန့်တိုင်း။ Model အားလုံး
/v1/responses comment စာကြောင်းကို 15 စက္ကန့်တိုင်း။ Host လုပ်ထားသော open-weight မော်ဒယ်များ
  • "stream": true ကို ပို့ပါ။ stream လုပ်သော ပြန်ကြားချက်သည် model ရေးသည်နှင့် ရောက်လာစပြုပြီး keep-alive က request ကို ဆက်လုပ်ဆောင်နေဆဲဖြစ်ကြောင်း ပြသသည်။ stream မလုပ်သော ပြန်ကြားချက်သည် အဖြေတစ်ခုလုံး အဆင်သင့်မဖြစ်မချင်း ဘာမျှ မပို့ပါ။
  • client အတွက် read timeout ကို ရှည်ရှည် ပေးပါ။ နမူနာများတွင် 600 စက္ကန့် သုံးထားသည်။ 15 စက္ကန့်ထက် တိုသော timeout သည် keep-alive နှစ်ခုကြားတွင် stream ကို အဆုံးသတ်စေနိုင်သည်။
  • သင့် SSE reader က comment စာကြောင်းများနှင့် ping events များကို ကျော်စေပါ။ SDK များက ၎င်းကို လုပ်ပြီးသားဖြစ်သည်။
  • ချိတ်ဆက်မှု ပြတ်သွားသည်နှင့် request ကို ချက်ချင်း ပြန်မပို့ပါနှင့်။ API သို့ ရောက်သွားသော request သည် အဆုံးထိ run ပြီး ချိတ်ဆက်မှု ပျောက်သွားသည့်အခါတွင်ပင် ရေတွက်သည်။
  • လမ်းကြောင်းကို GET /v1/models ဖြင့် အရင်စမ်းပါ။ key မလိုအပ်ဘဲ တိုတောင်းသော JSON စာရင်းကို ပြန်ပေးသည်။

ချိတ်ဆက်မှု ပြဿနာများ

လက္ခဏာ အကြောင်းရင်းနှင့် ဖြေရှင်းနည်း
127.0.0.1:9050 သို့မဟုတ် 127.0.0.1:4444 သို့ ချိတ်ဆက်မှုကို ငြင်းပယ်သည် သင့်စက်တွင် Tor client သို့မဟုတ် I2P router မ run နေပါ၊ သို့မဟုတ် အခြား port တွင် နားထောင်နေသည်။ Tor Browser သည် SOCKS proxy ကို port 9150 တွင် ပေးသည်။
.onion အမည်အတွက် Could not resolve host client သည် အမည်ကို ကိုယ်တိုင် ဖြေရှင်းရန် ကြိုးစားခဲ့သည်။ Tor client က ဖြေရှင်းစေရန် cURL တွင် --socks5-hostname နှင့် proxy URL တွင် socks5h:// ကို သုံးပါ။
I2P proxy သည် ၎င်း၏ ကိုယ်ပိုင် error စာမျက်နှာဖြင့် ဖြေသည် router သည် လိပ်စာကို မတွေ့သေးပါ။ router စတင်ပြီးနောက် မိနစ်အနည်းငယ် လိုအပ်သည်။ ထပ်ကြိုးစားပါ။
Missing authentication ပါသော 401 request သည် key မပါဘဲ ရောက်လာသည်။ clear web တွင်နှင့် တူညီသော header ကို ပို့ပါ။

အခြားအမှားတိုင်းသည် clear web တွင်နှင့် တူညီသည်။ အမှားကိုင်တွယ်မှု

JavaScript မသုံးဘဲ သင့်၏ key ကို ရယူခြင်း

Shannon တွင် JavaScript မပါသော ဝဘ်ဆိုက်လည်း ရှိပြီး clear web၊ onion service နှင့် eepsite အဖြစ် ရောက်ရှိနိုင်သည်။ ၎င်း၏ /keys စာမျက်နှာသည် သင့် API key ကို ပြသပြီး လဲလှယ်ခွင့်ပေးသဖြင့် Tor သို့မဟုတ် I2P မှ မထွက်ဘဲ key တစ်ခု ရနိုင်သည်။ encrypted.shannon-ai.com/keys

ထိုဝဘ်ဆိုက်၏ ကွန်ရက်သုံးခုလုံးရှိ လိပ်စာများကို ဤနေရာတွင် စာရင်းပြထားသည်- Encrypted access