কনটেন্টে যান
এনক্রিপ্টেড, Tor ও I2P এন্ডপয়েন্ট

এনক্রিপ্টেড, Tor ও I2P এন্ডপয়েন্ট

API একটি Tor onion সার্ভিস ও একটি I2P eepsite হিসেবেও প্রকাশিত। একই রুট, একই key; শুধু base URL ও প্রক্সি বদলায়।

Base URL-সমূহ

চারটি ঠিকানা একই API-তে নিয়ে যায়। একই API key ও একই রিকোয়েস্টসহ আপনার নেটওয়ার্কের উপযোগী ঠিকানাটি ব্যবহার করুন।

নেটওয়ার্ক Base 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-এ।
  • 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-এ key লাগে না, তাই আপনার প্রক্সি API-তে পৌঁছাচ্ছে কি না তা পরীক্ষার দ্রুত উপায় এটি।

কী একই এবং কী আলাদা

বিষয় একই কি? বিবরণ
রুট, রিকোয়েস্ট ফিল্ড, উত্তর, এরর একই প্রতিটি ঠিকানায় একই। কোনো রুট হোস্ট নাম অনুযায়ী আলাদা আচরণ করে না।
API key একই একটি key প্রতিটি ঠিকানায় কাজ করে, Authorization: Bearer বা x-api-key হিসেবে। /v1-এ কুকি কখনো পড়া হয় না।
ব্যালেন্স ও সীমা একই একই ব্যালেন্স এবং প্রতি মিনিটে 120টি রিকোয়েস্টের একই সীমা। দুটিই অ্যাকাউন্ট ধরে গোনা হয়, ঠিকানা ধরে নয়।
রিকোয়েস্টের আকার একই প্রতি রিকোয়েস্ট বডি 32 MiB পর্যন্ত।
স্কিম আলাদা ক্লিয়ার ওয়েবে ও মিররে https://। .onion ও .b32.i2p ঠিকানায় http://, যেখানে নেটওয়ার্ক নিজেই সংযোগ প্রান্ত থেকে প্রান্ত পর্যন্ত এনক্রিপ্ট করে।
প্রক্সি আলাদা ক্লিয়ার ওয়েবে নেই। Tor-এর জন্য SOCKS5 প্রক্সি, I2P-র জন্য HTTP প্রক্সি। নামটি প্রক্সিকে রিজলভ করতে হবে, আপনার মেশিনকে নয়।
গতি আলাদা দুটি নেটওয়ার্কই প্রতিটি বাইটে বিলম্ব যোগ করে। I2P দুটির মধ্যে ধীরতর।

ব্যালেন্স ও সীমা নিজস্ব পেজে বর্ণিত। সীমা ও ব্যালেন্স

Tor-এর মাধ্যমে cURL

আপনার মেশিনে একটি Tor ক্লায়েন্ট চালান। এটি 127.0.0.1:9050-এ একটি SOCKS5 প্রক্সি দেয়। --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"}]
  }'

I2P-র মাধ্যমে cURL

আপনার মেশিনে একটি I2P রাউটার চালান। এটি 127.0.0.1:4444-এ একটি HTTP প্রক্সি দেয়, যা .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 ক্লায়েন্ট। 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 একটি কিপ-অ্যালাইভ পাঠায়, যাতে প্রক্সি বা আপনার ক্লায়েন্টের কাছে সংযোগ মৃত মনে না হয়।

এন্ডপয়েন্ট খোলা স্ট্রিমে কিপ-অ্যালাইভ যাদের জন্য পাঠানো হয়
/v1/chat/completions প্রতি 15 সেকেন্ডে একটি মন্তব্য লাইন (এটি : দিয়ে শুরু হয়)। সব মডেল
/v1/messages প্রতি 15 সেকেন্ডে একটি event: ping, অথবা একটি মন্তব্য লাইন। সব মডেল
/v1/responses প্রতি 15 সেকেন্ডে একটি মন্তব্য লাইন। হোস্টেড ওপেন-ওয়েট মডেল
  • "stream": true পাঠান। মডেল লেখা শুরু করলেই স্ট্রিম করা উত্তর আসতে শুরু করে, এবং কিপ-অ্যালাইভ দেখায় যে রিকোয়েস্টে কাজ চলছে। স্ট্রিম না করা উত্তর পুরো উত্তর তৈরি না হওয়া পর্যন্ত কিছু পাঠায় না।
  • ক্লায়েন্টকে দীর্ঘ রিড টাইমআউট দিন। নমুনাগুলো 600 সেকেন্ড ব্যবহার করে। 15 সেকেন্ডের কম টাইমআউট দুটি কিপ-অ্যালাইভের মাঝে স্ট্রিম শেষ করে দিতে পারে।
  • আপনার SSE রিডারকে মন্তব্য লাইন ও ping ইভেন্ট বাদ দিতে দিন। SDK এটি আগে থেকেই করে।
  • সংযোগ ছিঁড়ে গেলেই রিকোয়েস্ট আবার পাঠাবেন না। যে রিকোয়েস্ট API-তে পৌঁছেছে তা শেষ পর্যন্ত চলে এবং গোনা হয়, সংযোগ চলে গেলেও।
  • আগে GET /v1/models দিয়ে পথটি পরীক্ষা করুন। এতে key লাগে না এবং এটি একটি ছোট JSON তালিকা ফেরত দেয়।

সংযোগের সমস্যা

লক্ষণ কারণ ও সমাধান
127.0.0.1:9050 বা 127.0.0.1:4444-এ সংযোগ প্রত্যাখ্যাত হয় আপনার মেশিনে কোনো Tor ক্লায়েন্ট বা I2P রাউটার চলছে না, অথবা তা অন্য পোর্টে শুনছে। Tor Browser তার SOCKS প্রক্সি 9150 পোর্টে দেয়।
.onion নামের জন্য Could not resolve host ক্লায়েন্ট নামটি নিজে রিজলভ করার চেষ্টা করেছে। cURL-এ --socks5-hostname এবং প্রক্সি URL-এ socks5h:// ব্যবহার করুন, যাতে Tor ক্লায়েন্ট তা রিজলভ করে।
I2P প্রক্সি নিজস্ব এরর পেজ দিয়ে উত্তর দেয় রাউটার এখনও ঠিকানাটি খুঁজে পায়নি। চালু হওয়ার পর রাউটারের কয়েক মিনিট লাগে। আবার চেষ্টা করুন।
Missing authentication সহ 401 রিকোয়েস্ট key ছাড়া এসেছে। ক্লিয়ার ওয়েবের মতো একই হেডার পাঠান।

অন্য প্রতিটি এরর ক্লিয়ার ওয়েবের মতোই। এরর হ্যান্ডলিং

JavaScript ছাড়া আপনার key

Shannon-এর JavaScript ছাড়া একটি ওয়েবসাইটও আছে, যা ক্লিয়ার ওয়েবে, onion সার্ভিস হিসেবে এবং eepsite হিসেবে পাওয়া যায়। এর /keys পেজ আপনার API key দেখায় ও বদলাতে দেয়, তাই Tor বা I2P ছেড়ে না গিয়েই key পাওয়া যায়। encrypted.shannon-ai.com/keys

ওই ওয়েবসাইটের তিনটি নেটওয়ার্কের ঠিকানা এখানে তালিকাভুক্ত: এনক্রিপ্টেড অ্যাক্সেস