සංකේතනය කළ, Tor සහ I2P endpoints
API එක Tor onion service එකක් සහ I2P eepsite එකක් ලෙස ද ප්රකාශයට පත් කර ඇත. එම routes, එම key; වෙනස් වන්නේ base URL එක සහ proxy එක පමණි.
Base URLs
ලිපින හතරක් එම API එකටම යොමු කරයි. ඔබේ network එකට ගැළපෙන එක, එම API key එකම සහ එම ඉල්ලීම්ම සමඟ භාවිතා කරන්න.
| Network | Base URL | ඔබ එයට ළඟා වන ආකාරය |
|---|---|---|
| Clear web | https://api.shannon-ai.com/v1 | කෙළින්ම, HTTPS හරහා. |
| සංකේතනය කළ mirror | https://api-encrypted.shannon-ai.com/v1 | කෙළින්ම, HTTPS හරහා. එම API එකටම දෙවන host නමක්. |
| Tor (onion service) | http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1 | Tor client එකක් හරහා: පෙරනිමියෙන් 127.0.0.1:9050 හි SOCKS5 proxy එකක්. |
| I2P (eepsite) | http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1 | I2P router එකක් හරහා: පෙරනිමියෙන් 127.0.0.1:4444 හි HTTP proxy එකක්. |
- OpenAI SDK එකක් base URL එක
/v1සමඟ පෙන්වා ඇති ආකාරයටම ගනී. Anthropic SDK එකක් එය/v1නොමැතිව ගනී. - ලිපිනයක් පරීක්ෂා කිරීමට,
https://api.shannon-ai.comහි පිළිතුරු headers කියවන්න:Onion-Locationonion ලිපිනය රැගෙන යන අතරX-I2P-LocationI2P ලිපිනය රැගෙන යයි. Onion ලිපිනයshannonවලින් ආරම්භ වේ.
ක්රියා කරන routes මොනවාද
සෑම /v1 route එකක්ම ලිපින හතරේම පිළිතුරු දෙයි:
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models ට key එකක් අවශ්ය නැත, එබැවින් ඔබේ proxy එක API එකට ළඟා වන්නේදැයි බැලීමට එය ඉක්මන් පරීක්ෂණයකි.
එකම දේ සහ වෙනස් වන දේ
| කරුණ | එකමද? | විස්තරය |
|---|---|---|
| Routes, ඉල්ලීම් fields, පිළිතුරු, දෝෂ | එකමයි | සෑම ලිපිනයකම එකමය. කිසිදු route එකක් host නම අනුව වෙනස් ලෙස හැසිරෙන්නේ නැත. |
| API key | එකමයි | එක key එකක් සෑම ලිපිනයකම, Authorization: Bearer හෝ x-api-key ලෙස ක්රියා කරයි. /v1 හි Cookies කිසි විටෙකත් කියවන්නේ නැත. |
| ශේෂය සහ සීමා | එකමයි | එම ශේෂයම සහ විනාඩියකට ඉල්ලීම් 120ක එම සීමාවම. දෙකම ගණන් ගන්නේ ගිණුමක් අනුවය, ලිපිනයක් අනුව නොවේ. |
| ඉල්ලීමේ ප්රමාණය | එකමයි | ඉල්ලීමේ body එකකට 32 MiB දක්වා. |
| Scheme | වෙනස් | Clear web සහ mirror මත https://. network එකම සම්බන්ධතාව කෙළවරේ සිට කෙළවර දක්වා සංකේතනය කරන .onion සහ .b32.i2p ලිපින මත http://. |
| Proxy | වෙනස් | Clear web හි නැත. Tor සඳහා SOCKS5 proxy එකක්, I2P සඳහා HTTP proxy එකක්. නම විසඳිය යුත්තේ ඔබේ යන්ත්රයෙන් නොව proxy එකෙනි. |
| වේගය | වෙනස් | Networks දෙකම සෑම byte එකකටම ප්රමාදයක් එකතු කරයි. දෙකෙන් I2P වඩා මන්දගාමීය. |
ශේෂය සහ සීමා ඒවායේම පිටුවේ විස්තර කර ඇත. සීමා සහ ශේෂය
Tor හරහා cURL
ඔබේ යන්ත්රයේ Tor client එකක් ධාවනය කරන්න. එය 127.0.0.1:9050 හි SOCKS5 proxy එකක් ලබා දෙයි. --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"}]
}' I2P හරහා cURL
ඔබේ යන්ත්රයේ I2P router එකක් ධාවනය කරන්න. එය 127.0.0.1:4444 හි HTTP proxy එකක් ලබා දෙන අතර, එය .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"}]
}' SDK base URL
SDK එකකට වෙනස්කම් දෙකක් අවශ්ය වේ: network එකේ base URL එක, සහ proxy එක හරහා යන HTTP client එකක්. Python හි නිල SDKs දෙකම httpx client එකක් ගනී. 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 networks දෙකෙහිම ක්රියා කරයි. Stream එකක් විවෘතව ඇති අතර model එකට තවමත් යැවීමට කිසිවක් නැති විට, API එක keep-alive එකක් යවයි, එබැවින් සම්බන්ධතාව proxy එකකට හෝ ඔබේ client එකට මියගිය එකක් ලෙස නොපෙනේ.
| Endpoint | විවෘත stream එකක සම්බන්ධතාව පවත්වා ගැනීමේ (Keep-alive) පණිවිඩය | යවන්නේ |
|---|---|---|
/v1/chat/completions | තත්පර 15කට වරක් comment පේළියක් (එය : වලින් ආරම්භ වේ). | සියලු models |
/v1/messages | තත්පර 15කට වරක් event: ping එකක්, නැතහොත් comment පේළියක්. | සියලු models |
/v1/responses | තත්පර 15කට වරක් comment පේළියක්. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
"stream": trueයවන්න. Stream කළ පිළිතුරක් model එක ලියන විටම පැමිණීමට පටන් ගන්නා අතර, keep-alive මගින් ඉල්ලීම තවමත් සකසමින් පවතින බව පෙන්වයි. Stream නොකළ පිළිතුරක් සම්පූර්ණ පිළිතුර සූදානම් වන තෙක් කිසිවක් නොයවයි.- Client එකට දිගු read timeout එකක් දෙන්න. නියැදි තත්පර 600ක් භාවිතා කරයි. තත්පර 15ට වඩා කෙටි timeout එකකට keep-alives දෙකක් අතර stream එකක් අවසන් කළ හැක.
- ඔබේ SSE reader එක comment පේළි සහ
pingevents මඟ හරින්න ඉඩ දෙන්න. SDKs දැනටමත් මෙය කරයි. - සම්බන්ධතාවක් බිඳුණු මොහොතේම ඉල්ලීමක් නැවත නොයවන්න. API එකට ළඟා වූ ඉල්ලීමක් අවසානය දක්වා ධාවනය වී ගණන් ගැනේ, සම්බන්ධතාව නැති වූ විටත්.
- මුලින්
GET /v1/modelsසමඟ මාර්ගය පරීක්ෂා කරන්න. එයට key එකක් අවශ්ය නැති අතර කෙටි JSON ලැයිස්තුවක් ආපසු දෙයි.
සම්බන්ධතා ගැටලු
| රෝග ලක්ෂණය | හේතුව සහ විසඳුම |
|---|---|
127.0.0.1:9050 හෝ 127.0.0.1:4444 වෙත සම්බන්ධතාව ප්රතික්ෂේප වේ | ඔබේ යන්ත්රයේ Tor client එකක් හෝ I2P router එකක් ධාවනය නොවේ, නැතහොත් එය වෙනත් port එකක සවන් දෙයි. Tor Browser එක එහි SOCKS proxy එක port 9150 හි ලබා දෙයි. |
.onion නමට Could not resolve host | Client එක නම තනිවම විසඳීමට උත්සාහ කළේය. cURL හි --socks5-hostname සහ proxy URL එකක socks5h:// භාවිතා කරන්න, එවිට Tor client එක එය විසඳයි. |
| I2P proxy එක තමන්ගේම දෝෂ පිටුවෙන් පිළිතුරු දෙයි | Router එක තවමත් ලිපිනය සොයාගෙන නැත. Router එකකට ආරම්භ වී මිනිත්තු කිහිපයක් අවශ්ය වේ. නැවත උත්සාහ කරන්න. |
Missing authentication සමඟ 401 | ඉල්ලීම 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
networks තුනේම එම වෙබ් අඩවියේ ලිපින මෙහි ලැයිස්තුගත කර ඇත: සංකේතනය කළ ප්රවේශය