એન્ક્રિપ્ટેડ, Tor અને I2P એન્ડપોઇન્ટ્સ
API Tor onion સર્વિસ અને I2P eepsite તરીકે પણ પ્રકાશિત છે. એ જ રૂટ્સ, એ જ કી; ફક્ત base URL અને પ્રોક્સી બદલાય છે.
Base URLs
ચાર સરનામાં એ જ API સુધી લઈ જાય છે. તમારા નેટવર્કને અનુકૂળ સરનામું વાપરો, એ જ API કી અને એ જ રિક્વેસ્ટ્સ સાથે.
| નેટવર્ક | 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/completionsPOST /v1/responsesPOST /v1/messagesPOST /v1/messages/count_tokensPOST /v1/tokenizeGET /v1/models
GET /v1/models ને કી જોઈતી નથી, તેથી તમારી પ્રોક્સી API સુધી પહોંચે છે કે નહીં તેની તે ઝડપી કસોટી છે.
શું એકસરખું છે અને શું અલગ
| બાબત | એકસરખું? | વિગત |
|---|---|---|
| રૂટ્સ, રિક્વેસ્ટ ફીલ્ડ્સ, જવાબો, એરર્સ | એકસરખું | દરેક સરનામા પર એકસરખા. કોઈ રૂટ હોસ્ટ નામ પ્રમાણે અલગ રીતે વર્તતો નથી. |
| API કી | એકસરખું | એક કી દરેક સરનામા પર ચાલે છે, 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 નામ તે પ્રોક્સીને સોંપે છે.
# 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 નામ જેમ છે તેમ લે છે.
# 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 માં બંને સત્તાવાર SDKs 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) # 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 બંને નેટવર્ક્સ પર ચાલે છે. સ્ટ્રીમ ખુલ્લો હોય અને મોડેલ પાસે હજી મોકલવા જેવું કંઈ ન હોય ત્યારે API keep-alive મોકલે છે, જેથી કનેક્શન પ્રોક્સીને કે તમારા ક્લાયન્ટને મૃત ન લાગે.
| એન્ડપોઇન્ટ | ખુલ્લા સ્ટ્રીમ પર Keep-alive | કોના માટે મોકલાય છે |
|---|---|---|
/v1/chat/completions | દર 15 સેકન્ડે કોમેન્ટ લાઇન (તે : થી શરૂ થાય છે). | બધા મોડેલ્સ |
/v1/messages | દર 15 સેકન્ડે event: ping, અથવા કોમેન્ટ લાઇન. | બધા મોડેલ્સ |
/v1/responses | દર 15 સેકન્ડે કોમેન્ટ લાઇન. | હોસ્ટેડ open-weight મોડેલ્સ |
"stream": trueમોકલો. સ્ટ્રીમ થતો જવાબ મોડેલ લખે કે તરત આવવા લાગે છે, અને keep-alive બતાવે છે કે રિક્વેસ્ટ પર હજી કામ ચાલે છે. સ્ટ્રીમ ન થતો જવાબ આખો જવાબ તૈયાર થાય ત્યાં સુધી કંઈ મોકલતો નથી.- ક્લાયન્ટને લાંબો read timeout આપો. ઉદાહરણોમાં 600 સેકન્ડ વપરાયા છે. 15 સેકન્ડથી ટૂંકો timeout બે keep-alive વચ્ચે સ્ટ્રીમને પૂરો કરી શકે છે.
- તમારા SSE રીડરને કોમેન્ટ લાઇન્સ અને
pingઇવેન્ટ્સ છોડવા દો. SDKs આ પહેલેથી કરે છે. - કનેક્શન તૂટે કે તરત રિક્વેસ્ટ ફરીથી ન મોકલો. API સુધી પહોંચેલી રિક્વેસ્ટ છેક સુધી ચાલે છે અને ગણાય છે, કનેક્શન જતું રહે તો પણ.
- પહેલાં
GET /v1/modelsથી રસ્તો ચકાસો. તેને કી જોઈતી નથી અને તે ટૂંકી 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 | રિક્વેસ્ટ કી વિના પહોંચી. ક્લિયર વેબ પર મોકલો છો એ જ હેડર મોકલો. |
બાકીની દરેક એરર ક્લિયર વેબ જેવી જ છે. ભૂલ સંભાળ
JavaScript વિના તમારી કી
Shannon પાસે JavaScript વિનાની વેબસાઇટ પણ છે, જે ક્લિયર વેબ પર, onion સર્વિસ તરીકે અને eepsite તરીકે મળે છે. તેનું /keys પેજ તમારી API કી બતાવે છે અને તેને રોટેટ કરવા દે છે, જેથી Tor કે I2P છોડ્યા વિના તમે કી મેળવી શકો. encrypted.shannon-ai.com/keys
એ વેબસાઇટના ત્રણેય નેટવર્ક્સ પરનાં સરનામાં અહીં યાદીમાં છે: એન્ક્રિપ્ટેડ એક્સેસ